1、下面语句声明了什么
String s = "hello world!";
这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指 向“hello world!”这个String类型的对象
2、“==”和“equals”方法究竟有什么区别
==操作符专门用来比较变量的值是否相等
如int a = 10; int b = 10; 则 a == b将是true
比较难理解的地方
String s1 = new String("hello");
String s2 = new String("hello");
则 s1 == s2; 结果将是false 。这是因为对象变量其实是一个引用,它们的值其实是指向对象所在的内存地址,而不是对象本身。s1和s2都使用了new操作符,意味着将在内存中产生两个内容为“hello”的字符串,它们处于不同的内存地址,s1和s2的值其实是两个不同的内存地址的值,所以比较结果为false
equals方法是对象内容的比较;
在Object中equals方法和==运算符作用一样,要进行内容的比较,需要对Object中得equals方法进行覆写,如String类的equals方法就已经覆写了Object中的equals方法
3、final修饰引用变量和基本数据类型的区别
final 使得被修饰的变量“不变”
这里的不变表示的变量的值不变,对于引用变量即是变量的引用对象不能改变,但变量引用对象的内容可以改变
如final int[] a = {1,2,3};
int[] b = {4,5,6};
// a = b; 此处会出现编译错误:无法为最终变量a分配值 ,
a[0] = 2;
for(int n : a){
System.out.print(n+", "); //结果会输出2, 2, 3
}
|
|