Java知识体系冷门篇

村口二丫2021-12-15 14:04

  通常在面试中,面试官会提出一些冷的基础知识,比如基础数据类型占用的字节数,或者Unicode和UTF-8的区别,所以很多考生会回答错误。此外,在正常编码过程中,除法经常用于计算。例如,对于一个长度为100万的List中的所有元素进行除16操作,CPU对element的计算将快于element/16操作

Java知识体系冷门篇

  因此,本文总结了一些容易被遗忘的基知识,适合有一定Java基础的技术人员阅读。有些内容可能对初学者来说比较困难,希望能帮助大家轻松应对面试官的基本技术问题,提高编码效率。

  1、Java中的基本数据类型和内存大小。

  (1)整形

  byte1字节。

  short2字节。

  int4字节。

  long8字节。

  (2)浮点型。

  float4字节。

  double8字节。

  (3)字符类型。

  char2字节(Unicode-16)

  (4)布尔类型。

  布尔型boolean很特别。虽然Java虚拟机定义了boolean类型,但虚拟机对boolean类型的支持有限,没有为boolean值单独设计JVM指令。编译后,操作布尔值的表达式使用JVM的int数据类型,即占用4个字节。

  JVM不会直接支持boolean数组。boolean数组编译后,其元素采用byte数据类型,0表示false,1表示true,即boolean数组的元素只占用一个字节。

  2、UTF-8与Unicode的关系。

  Unicode是一个统一的编码标准,对所有现有字符进行唯一的编码。在第一个Unicode版本中,使用两个字节(16位)来表示一个字符。请注意,这里的字节不是指计算机内存中的存储单元,而是数学长度单元。然而,Unicode字符在内存中存储的长度需要一个特定的编码规则,如UTF-8、因此,Unicode只是一个编码标准,UTF-8是该标准的实现。UTF-8规定了Unicode字符在内存中占用的空间(英语和中文占用的空间不同,感兴趣的读者可以查阅相关信息)。

  代码点是指可用于编码字符集的数字。例如,在16位Unicode编码字符集中,字符A编码为U+0041、0041为代码点。

  代码单元是指字符占用空间的单元。例如,在UTF-32中,一个代码单元为32位,一个字符占32位,只是使用一个代码单元,这将消耗大量的内存。在UTF-16中,一个代码单元为16位,值U+0000-U+FFFF代码对应一个字符,每个字符占用一个代码单元。然而,对于超出此范围的增加字符的编码,需要两个这样的单元(即32位)。在UTF-8中,一个代码单元为8位,UTF-8使用一到四个字节序列编码Unicode代码点,原则与UTF-32和UTF-16相同。

  3、String字符串常量。

  在Java语言中,一个String字符串的常量对应于一个String对象,是不可改变和继承的(因为String类被final关键字修改)。Java语言的设计主要是为了分享字符串的常量(注意字符串的常量,字符串的变量不符合这里提到的规则),因为JVM将字符串的常量放入公共存储池中,不同的变量可以引用相同的字符串常量。

Java知识体系冷门篇

  上述代码的运行结果是:true。这表明a和b引用相同的String对象。

  4、基本数据类型转换规则。

  在双操作数操作中,低级型将根据操作数类型转换为高级型。

  1)只要两个操作数中有一个是double类型,另一个将转换为double类型,结果也是double类型;

  2)只要两个操作数中有一个是float类型,另一个将转换为float类型,结果也是float类型;

  3)只要两个操作数中有一个是long类型,另一个将转换为long类型,结果也是long类型;

  4)两个操作数(包括byte、short、int、char)都会转换成int类型,结果也是int类型。

  5、按值调用和引用调用。

  按值调用表示方法接收调用人提供的参数值。根据引用调用表示方法,调用人提供调用人提供的参数地址。Java程序设计语言总是按值调用。以下是反例代码:

Java知识体系冷门篇

  上述代码启动交换a和b引用的对象,但实际编译执行会发现交换不成功。这证明Java不是按引用调用的,a和b只代表两个Person对象的值,而不是两个对象的引用,在参数传输上与int等基本类型的值没有区别。

  以上就是小编为大家整理发布的“Java知识体系冷门篇”一文,更多相关内容尽在开课吧广场Java教程频道。

Java知识体系冷门篇

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享
全部评论快来秀出你的观点
登录 后可发表观点…
发表
暂无评论,快来抢沙发!
高并发编程训练营