Java面试题小记-简单的变量换算原理

第一题:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?

第二题:
byte  by = 130;
有没有问题?有问题如何解决?结果是多少呢?

第一题中的b1b2都是byte类型它们进行运算的时候首先转换成int类型,由于b是byte类型,会发生精度损失的错误;第二题中,byte类型的最大值是127,需要对130进行强转,因为内部是以补码形式存放的,所以得先将补码转化为原码进行输出,结果为-126。希望今天记录下来,以此为戒,打好每一步基础。

第三天遇到的其实都是一些经常用的东西,(www.kgraph.cn)也比较熟悉,其中自认为比较重要的就是&&和&以及|和||的区别得搞清楚,无疑就是&&和||提高了代码的效率,在今后写程序的时候一般都会优先使用这两种。还有就是三目运算符,之前接触过,但是没有当回事儿,今天发现这东西还是很好使用的,特别方便,对于一些简单的比较可以缩短代码量,基本格式就是a=a>b?a:b;。

今天讲的是方法的重载以及一维数组和二维数组的基本知识,跟我以前对比,其中对于数组在栈以及堆中占用内存空间的分析是我之前没有理解的,经过下面的画图,以及自己的分析,今天彻底弄明白了,创建数组的时候,其实和声明变量是有相似之处的,局部变量其实都是存放在栈中的,定义一个数组就是在栈中开辟一个内存空间存放数组的首地址,然后在堆中开辟内存空间存放数组中各个元素的值。因为数组元素在堆中的首地址给了,栈中定位数组类型的变量,所以它们就连接在一块儿,也就是说数组类型的变量通过它存储的地址就可以在堆中找到这一块内存空间,再而,如果在栈中再定义一个数组类型的变量,依旧将这个地址给新创建的数组变量,那么它们就都可以找到堆中存放的数组元素,当程序执行结束后,不再需要使用开辟的内存空间时,它们就会释放连接,等待垃圾回收机制空闲的时候回收。

《Java面试题小记-简单的变量换算原理》

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注