java学习之Day02知识点总结

1.String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有?

答:没有,因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。

2.是否可以继承String类?

答:String类是final类故不可以继承。

3.String s = new String("xyz");创建了几个String Object?二者之间有什么区别?

答:两个或一个,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它一句那个常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,这句代表就不会创建”xyz”自己了,直接从缓冲区拿。

4.数组有没有length()这个方法? String有没有length()这个方法?

答:数组没有length()这个方法,有length的属性。String有有length()这个方法。

5.请说出作用域public,private,protected,以及不写时的区别

答:public 声明的为公共成员变量和函数成员,在整个类内类外都可使用。
private 声明的为私有成员变量和函数成员,只在声明的类内可以使用。
protected声明的为受保护成员变量和函数成员,类外不可使用。类内可以使用。
不使用关键字默认为类内使用。


6.面向对象的编程语言有哪4个主要的特征。

答:封装,继承,多态,抽象。


7."=="和equals方法究竟有什么区别?

(单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚)

==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。

如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = newObject();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。

equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的

你可能感兴趣的:(java)