人生如游戏,掌握了方方面面的技能知识后方能解决一个个场景下的问题,一步步走上人生巅峰。《我的人生游戏》就是一款将人生中暗含的各种能力培养显性化的游戏,帮你完善技能,积累经验,增加人生战斗力,成为人生赢家。
本篇为Java知识点关卡-基本类型怪物的打法攻略。
011. java中有哪些基本数据类型?占用的字节是多少?对应包装器类型是什么?
答:请看表。占用空间大小与平台是32位、64位无关。boolean类型所占空间大小没有明确指定,仅定义为能够取字面值true或者false。
022. 不同的基本类型之间可以相互赋值吗(哪些类型间赋值可隐式转换)?
答:从面代码的结果来看,boolean除外,7个基本类型间根据其可表示的数据范围,有明显的地位高低(大的可以承接住小的赋值)。
解析:上面还只是一部分,为了清楚看清所有的赋值有无隐式转换的情况,总结了下表。从表中可看出:
double是绝对的大哥,谁都能罩;float(占4字节)是二哥,虽然比三哥long(占8字节)个子矮,但是一身内功深厚;int是四哥,毕竟是哥,五弟、六妹、七弟都能罩住;short是五弟,功力有限,只能罩小师弟(七弟byte);char六妹、byte七弟功力太弱,无奈只够自保;
033. 不同的基本类型进行运算符运算之后类型会变吗?
答:从上面代码结果来看,基本上还是谁拳头大听谁的,结果是参与运算的变量里地位最高的哥的类型。但是几个小弟(short、char、byte)间的规则有点混乱,固总结下表。
大哥、二哥、三哥、四哥,只要谁在场,就都听谁的。参与打架的没有四位大哥,只有五弟、六妹、七弟的话,统一听四哥的。(四哥小日子混得不错,权力还蛮大)
044. 类里的成员如果是基本数据类型, 那么会自动初始化吗?初始化成什么?
答:会, 初始化为0或者false。
055. 代码中出现的具体数字会被当成什么类型?
答:整数会当成int,小数会当成double,所以要给float变量赋值,小数必须显示增加f标识。
066. 基本类型与其对应的包装类型进行 == 比较,比较的是地址还是值?
答:上述结果为true。包装类型会自动拆包,比较两者的值。
077. Integer包装类型之间使用==比较,比较的是地址还是值?
答:结果是false,true。比较的是对象的地址。
解析:num1跟num2是两个Integer对象,地址不相等。由于JVM为Integer准备了-128到127的整形常量池,num3、num4都指向同一个对象(常量池里127对应的Integer对象)。
Integer num3 = 127会被java平台编译转换为 Integer num3 = Integer.valueOf(127);而-128到127的数字是从常量池获取的逻辑就在Integer.valueOf方法中。
088. 自动拆箱、自动装箱发生在哪个阶段?编译阶段还是运行时?
答:自动拆装箱是一种语法糖,在编译阶段,Java平台自动为我们做了转换,以保证不同写法在运行时等价(生成的字节码一致)。
自动装箱:Integer num = 1 自动转换为 Integer num = Integer.valueOf(1);自动拆箱:int number = num 自动转换为 int number = num.intValue();