小说网站排名宜兴市网站建设

diannao/2026/1/26 5:39:02/文章来源:
小说网站排名,宜兴市网站建设,法律垂直问答网站怎样做,乐山网站开发公司电话英文原文#xff1a;Why Java Is a Purely Object-Oriented Language Or Why NotJava是否确实是 “纯面向对象”#xff1f;让我们深入到Java的世界#xff0c;试图来证实它。在我刚开始学习Java的前面几年#xff0c;我从书本里知道了Java是遵循“面向对象编程范式(Object…英文原文Why Java Is a Purely Object-Oriented Language Or Why NotJava是否确实是 “纯面向对象”让我们深入到Java的世界试图来证实它。在我刚开始学习Java的前面几年我从书本里知道了Java是遵循“面向对象编程范式(Object Oriented Programming paradigm)”的。在Java世界内一切都是对象甚至包括字符串(String)这些都是对象(在 C 语言中字符串是字符数组)那时候我认为Java是一种面向对象的语言。但是在后来我在网上陆续看到不少开发者说“Java实际上不是纯粹的面向对象因为并不是所有的东西在Java世界都是一个对象”。他们很多的论点都可以概括为以下两点所有的静态内容(static关键字修饰的变量和方法)不属于任何对象这些是非对象的东西。所有基本类型(charbooleanbyteshortintlongfloatdouble)都不是对象因为我们不能做类似对象的所具有的操作(例如使用“.”来访问对象的属性和方法)。在那时由于个人知识经验储备有限我又很容地相信上面的论点并且也开始认为 “Java 不是纯粹的面向对象编程语言”。到了更后来我发现JVM在创建对象的时候实际上会创建两个对象一个是实例对象。另一个是Class对象。该Class对象在JVM内仅仅会装载一次该类的静态方法和静态属性也一同装载JVM使用该Class对象来创建具体的实例对象(如上面的对象)。例如在下面的 Java 语句中将有两个对象被创建Employee emp new Employee ();一个是实例对象 emp 另一个则是Class对象我们可以通过Employee.class引用到它这个Class对象拥有所有的这个类定义的静态变量和静态方法。同时如果我们访问通过emp对象来访问静态内容会发现它其实指向的对象就是Employee.class。这也揭开了另一个迷为什么静态内容在一个对象中(不管是emp还是emp2)改变了在另一个对象中也同时改变因为这两个对象改变的都是在Employee.class同一个对象里面的内容。现在上面说到的第一个论点我们要取消了。因为静态内容确实被证实属于一个对象。但是我们还要确认第二个论点正如早前提到的原始类型在Java中不是对象它们无法做类似对象的操作。为了解决这个问题Java官方为每一个原始类型推出了对应的包装类(比如Integer对应intLong对应 longCharacter对应char)所以其实现在我们可以为原始类型创建一个包装对象同时对它们做对象相关的操作。并且由于自动拆装箱我们可以把一个原始类型值赋值给它对应的包装类的引用。但是我们仍然不能对这些原始类型做对象的操作我们需要创建对应包装类的对象。例如Integer obj new Integer (5); // here we can do i.toString ();int i 5; // but we cant do i.toString () here到目前为止从一个最终用户的角度上来看的我们可以确认 “原始类别不是对象”。(Java 开发人员是 Java的最终用户因为我们正在使用它而不是创造它)。如果站在JVM的视角会有新的发现其实在JVM看来它把所有的“原始类型”都是当作对象处理要证明这一点可以通过Class类的源代码或者Javadoc中Class类的说明。根据 java.lang.Class类的源代码该类的注释是Java 官方描述Instances of the class Class represent classes and interfaces in a running Java application. An enum is a kind of class and an annotation is a kind of interface. Every array also belongs to a class that is reflected as a Class object that is shared by all arrays with the same element type and number of dimensions. The primitive Java types (boolean, byte, char, short, int, long, float, and double) and the keyword void are also represented as Class objects.参考译文Class 类的实例表示正在运行的Java应用程序的类和接口。像枚举是一种类注解则是一种接口。每个数组也属于被反射作为由具有相同的元素类型和尺寸的数目的所有阵列共享一类对象的类。原始的Java 类型(boolean, byte, char, short, int, long, float, and double)和关键字void也表示为Class 对象。同时也根据 Javadoc 中对 Class.isPrimitive ()方法的定义来判断。Java 官方描述public boolean isPrimitive ()Determines if the specified Class object represents a primitive type.There are nine predefined Class objects to represent the eight primitive types and void. These are created by the Java Virtual Machine, and have the same names as t he primitive types that they represent, namely boolean,byte, char, short, int, long, float, and double.These objects may only be accessed via the following public static final variables, and are the only Class objects for which this method returns true.Returns:true if and only if this class represents a primitive typeSince:JDK1.1参考翻译public boolean isPrimitive ()判断指定的 Class 对象是否代表一个基本类型。一共有 9 种设定好的 Class 对象来表示对应的基本类型和 void 关键字。这些对象都是由 JVM 创建的。return当且仅当该类表示一个真正的基本类型以上都说明在 JVM 内部其实原始类型就是对象。当你打开 Javadoc对 Class 类的定义中通过 “CTRLF ” 查找关键字“primitive”将会发现证据在表面 “在JVM里它把基本类型当作对象来处理的”。我们可以再来看一个例子 Integer.TYPE在这部分文档清晰记录着Java 官方描述public static final Class TYPEThe Class instance representing the primitive type int.以上都说明在 JVM 内部其实原始类型就是对象。那么既然说 “JVM”会为所有的基本类型创建一个对象那我们为什么还那么常用 “原始类型” 而不是直接使用对应的包装类对象呢这是因为为“原始类型”创建的对象在JVM内部是很轻量级的相对与我们直接创建的对应包装类对象做了许多优化 也正因为轻量的缘故这些原始类的功能就比较少(例如我们不能调用其内部的方法因为他们内部已经优化成没有方法了)使用实际的例子来说明为什么我们更应该使用 “原始类型”“原始类型”有更快的速度(例如下面的代码执行在我们的机器上需要9秒但当我把Long改成long 之后0 秒内就完成了)public static void main (String[] args) {long millis System.currentTimeMillis ();Long sum 0L; // uses Long, not longfor (long i 0; i Integer.MAX_VALUE; i) {sum i;}System.out.println (sum);System.out.println ((System.currentTimeMillis () - millis) / 1000);}“原始类型”允许我们直接使用 “”来进行比较。new Integer (3) new Integer (3); // falsenew Integer (100) new Integer (100); // falseInteger.valueOf (5) Integer.valueOf (5); //trueInteger.valueOf (200) Integer.valueOf (200); //false我们注意看第四句输出结果确实为 “false” 。这个是因为在 [-128; 127] 这个区间的265个整数会被JVM 缓存存放 所以在这个区间 JVM 返回相同的对象然而超出这个区间 JVM 就不再有缓存了将会创建新的对象所以结果是不等的。所以总结一下是在JVM内部原始类型就是被当作对象来处理的。但是我们开发者直接把“原始类型”当作对象使用开发者应该使用对应的包装来。以上就是为什么我说“Java确实是一个纯粹的面向对象语言”的证实过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设的基础知识与维护app公司开发价格

开发者的日常作为一名996的开发者,我几乎每天只有两件事,制造bug和解决bug,这两件事,既替我解决了温饱问题、也替产品经理、测试工程师等一票人解决了吃穿问题。嗯,有人为我这种程序员评了一个等级,我大概是…

东莞网站建设代理延吉网站建设depawo

http://codeforces.com/contest/876/problem/D 题意&#xff1a;题意真是难懂&#xff0c;就是给一串序列&#xff0c;第i次操作会在p[x]&#xff08;1<x<i&#xff09;这些位置放上硬币&#xff0c;然后从左到右观察&#xff0c;如果第i个位置有硬币但第i1个位置没有硬币…

咸阳网站建设公司电话寻花问柳专注做男人喜爱的网站

下面介绍一下 Playwright 中的基本概念&#xff1a;Headless 浏览器Playwright 需要特定版本的浏览器二进制文件才能运行。这些浏览器都支持 2 种 运行模式&#xff1a;Headless&#xff0c;无浏览器 UI&#xff0c;运行速度较快&#xff0c;常用于自动化运行Headed&#xff0c…

网站建设科dw用表格做网站

问&#xff1a;golang 函数 getIndex(n,addr,Hlen,Tlen) 返回index。参数n为index的上限&#xff0c;addr为包含大小写字母数字的字符串,Hlen为截取addr头部的长度&#xff0c;Tlen为截取addr尾部的长度 gpt: 你可以编写一个函数来计算根据给定的参数 n、addr、Hlen 和 Tlen …

注册域名网站备案网站建设完成确认函

目录 一、Android Studio下载地址二、开发环境JDK三、开始安装Android Studio四、案例展示与搭建五、人工智能算法模型移动端部署案例参考 一、Android Studio下载地址 https://developer.android.google.cn/studio/install.html 电脑配置要求&#xff1a; 下载保存在指定文…

企业营销型网站建设开发找清包工程上什么网

截至2020年&#xff0c;Windows 10的市场份额达到了54.62%&#xff0c;成为了Windows家庭中占比最高的成员。微软也于2020年初对Windows 7做了不再进行技术支持的声明&#xff01;毋庸置疑的是&#xff0c;Windows 10的系统会逐渐占有更多的比例&#xff0c;并且逐步取代现有的…

大会的网站架构长沙制作公园仿竹护栏哪家好

1 使用通配符列出文件夹的内容 ls ~/videos/*.wmv 刚才你已经学会了如何在包含多个文件的目录中查找文件&#xff0c;但是还有一种更快的方法。如果你知道正在找的Tiger Woods的视频文件是Windows Media格式的&#xff0c;那么这个文件名一定是以.wmv为后缀的&#xff0c;这时…

企业做网站需要哪些材料seo实战培训班

前言 机器学习分为&#xff1a;监督学习&#xff0c;无监督学习&#xff0c;半监督学习&#xff08;也可以用hinton所说的强化学习&#xff09;等。 在这里&#xff0c;主要理解一下监督学习和无监督学习。 监督学习&#xff08;supervised learning&#xff09; 从给定的训…

对网站备案的认识免费素材网站下载

最近建了一个技术交流群&#xff0c;欢迎志同道合的同学加入&#xff0c;群里主要讨论&#xff1a;分享业务解决方案、深度分析面试题并解答工作中遇到的问题&#xff0c;同时也能为我提供写作的素材。 欢迎加Q&#xff1a;312519302&#xff0c;进群讨论 前言 在工作中&#…

人力资源网站模板一个虚拟主机多个网站

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例RadiusOutlierRemoval,并解析接口vtkRadiusOutlierRemoval,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的…

如何开发wap网站做企业专业网站一般要多少钱

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

建网站的软件软件公司网站源码

Eclipse控制web项目的访问名称 web项目的访问路径&#xff08;名称&#xff09;修改 1.点击项目右键-》properties找到Context root 修改成我们需要的名字即可转载于:https://www.cnblogs.com/pypua/articles/7379950.html

装修公司做网销的网站建设银行观澜支行网站

gitlab备份文件上传腾讯云COS 脚本说明脚本名称&#xff1a;upload.py 假设gitlab备份文件目录&#xff1a;/opt/gitlab/backups gitlab备份文件格式&#xff1a;1706922037_2024_02_06_14.2.1_gitlab_backup.tar1.脚本需和gitlab备份文件同级目录 2.根据备份文件中的日期判断…

深圳东门希尔顿欢朋酒店外贸网站seo优化方案

免责声明 如果觉得我必须从一个重要的免责声明开始这篇文章&#xff1a; 不要太相信我要说的话。 我之所以这样说&#xff0c;是因为我们正在讨论安全性。 而且&#xff0c; 当您谈论安全性时&#xff0c;除了100&#xff05;正确的陈述外&#xff0c;还有冒任何其他风险的风险…

医院网站建设 不足农业电商网站建设

在混合开发中避免不了通信&#xff0c;简单记录一下&#xff0c;Flutter iOS工程与Flutter 之间相互通信。 Flutter中通过Platform Channel实现Flutter和原生端的数据传递&#xff0c;是怎么进行数据通信&#xff0c;以及怎么配置&#xff0c;下面一一进行详解。 FlutterMetho…

深圳设计网站培训班企业网站建设公司注意哪些问题

所有代码块都是在Jupyter Notebook下进行调试运行&#xff0c;前后之间都相互关联。 文中所有代码块所涉及到的函数里面的详细参数均可通过scikit-learn官网API文档进行查阅&#xff0c;这里我只写下每行代码所实现的功能&#xff0c;参数的调整读者可以多进行试验调试。多动手…

网站群cmswordpress按分类调用文章

环境说明 系统版本&#xff1a;Ubuntu 20.04 VirtualBox版本&#xff1a; 7.0.12 解决过程 扩展下载&#xff0c;进入VirtualBox 官方下载路径。选择本机安装版本&#xff0c;如下图所示&#xff0c;因笔者是7.0.x版本&#xff0c;因此点击第一条链接&#xff1b; 进入版本页…

中国网站排名前100智慧团建官方网站电脑版

Vue中的Render渲染函数 VUE一般使用template来创建HTML&#xff0c;然后在有的时候&#xff0c;我们需要使用javascript来创建html&#xff0c;这时候我们需要使用render函数。比如如下我想要实现如下html&#xff1a; <div id"container"><h1><a hre…

企业网站推广计划网络科技工作室起名

一.项目简介 利用DS18B20实时检测温度并显示在LCD1602显示屏上&#xff0c;同时可以通过K1,K2,K3,K4设置最高温度和最低温度利用AT24C02可以实现掉电不丢失&#xff0c;最后当检测温度大于或小于最高温时&#xff0c;会在LCD1602显示屏上显示OV:H或OV:L。 二.准备材料 AT89C52、…

济宁市中网站建设工程建设信息网站有哪些

一.前期准备 1.1开发环境安装 Oracle从JDK9开始每半年发布⼀个新版本, 新版本发布后, ⽼版本就不再进⾏维护. 但是会有⼏个⻓期维护的版本. ⽬前⻓期维护的版本有: JDK8, JDK11, JDK17, JDK21 在 JDK版本的选择上&#xff0c;尽量选择⻓期维护的版本. 为什么选择JDK17? S…