1、(1)short s1 = 1; s1 = s1 + 1;有什么错? (2)short s1 = 1; s1 += 1;有什么错?
答:(1)当进行s1=s1+1的操作时,s1会被自动升格成为int类型,而根据转换规则,int类型无法隐式的转化成为short类型,因此会报错。
(2)+=符号是java语言规定的运算符,编译器会对他进行特殊的处理,因此不会报错。
2、char型变量中能不能存贮一个中文汉字?为什么?
答:char型变量存储的是Unicode字符集,而汉字也包含其中,因此可以存储,但若是某些生僻的汉字不在这个字符集中,自然就不能存储了。
答:char型变量存储的是Unicode字符集,而汉字也包含其中,因此可以存储,但若是某些生僻的汉字不在这个字符集中,自然就不能存储了。
3、用最有效率的方法算出2乘以8等於几?
答:2<<3
将一个数左移几位,就相当于将它乘以2的几次方,因此只需将2向左移动3位即可。而位运算是cpu支持的,效率最高。
4、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
答:是指引用变量不能变,而引用变量所指向的内容是可以改变的。
5、"=="和equals方法究竟有什么区别?
答:对于基本数据类型(int,short等)应使用”==“来比较两个变量的值;而对于复合数据类型(类)”==“比较的是他们的内存地址,因此在比较的时候,除非是同一个初始化的对象,否则一定会返回false,JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址(相当于==),但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。因此,当我们在自己定义类,想用equals时,就必须重写这个方法了。6、值类型和引用类型究竟有什么区别?
答: 值类型指的就是八种基本数据类型;
引用类型(除了基本数据类型外的类型)类似于指针,不同的引用类型可以指向同一个数据。