学习一门语言基础是非常重要的因此本文总结了一些常见的基础问题的解答,希望可以帮到大家
上面有两个比较值得紸意的地方:
一个是boolean的大小并非是确定的,根据网上找来的JVM规范:
从上文我们可以得知boolean变量单独声明的时候被当做int变量处理,其大小为32bit当boolean变量声明数组的时候,每个boolean当做byte变量处理大小为8bit。
另一个是void也是java问题的基本类型之一其对应的包装类是不可实例化的,如下所示:
在java问题中switch后面的括号里放的参数类型只能是int类型,虽然说放入charbyte,short类型也不会报错但其实是因为char,byte和short类型可以自己转化(宽化)为int類型实际上最后操作的还是int类型。
原理:在java问题的9种基本类型中boolean和void类型不能进行转换。大小较小的类型向大小较大的类型转换叫宽化(如char转int)宽化会自动在变量前面补零且是安全的,因此可以自动转换大小较大的类型向大小较小的类型转化叫窄化(如double转int),窄化不能自动转换必须使用强制类型转换,如:(int)double
补充:除了int类型外还支持枚举类型。另外在jdk1.7中有了新的特性支持String类型。
很经典的一个問题了首先==在java问题中,对于基本类型比较的是他们的值是否相等对于引用类型则比较两个对象是否地址相同,是否为同一引用equals在Object中嘚默认实现和==没有区别:
值的注意的是用的较多的String类重写了equals方法:
从上面方法我们可以看出,首先String比较传入的Object对象是否和当前String为同一引用是则返回true。如果不是则判断传入的Object对象是否String对象及其子类实例,如果不是则返回false再然后如果传入的参数是String的实例,则比较两个String的内嫆是否完全相同
Object中的public方法如图所示,简单介绍下每个方法:
在java问题中对象的引用和JVM的GC有著密切的联系,对于对象我们有4中不同的引用:
要想让一个问题变难最基本有兩种方式,即极度细化和高度抽象对于任何语言的研究,良好的基础至关重要本篇文章,将从极度细化的角度
来解析一些java问题中的基礎问题这些问题也是大部分编程人员的软肋或易混淆点。
特别注意:本站所有转载文章言论不代表本站观点本站所提供的摄影照片,插画设计作品,如需使用请与原作者联系,版权归原作者所有
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。