一、访问控制修饰符(access modifier)
1)public(公共的):被public修饰的属性和方法可以被所有类访问。
2)protected(受保护的):被protected修饰的属性和方法可以被类内部、同一包内的类访问以及该类的子类(子类在不同包中)访问。
3)private(私有的):被private修饰的属性和方法只能在该类的内部使用。
4)default(不加任何访问修饰符):在类内以及相同包下面的类所使用。
注:
二、 instanceof:判断某个对象是否是某个类的实例,形式:引用名 instanceof 类名(接口),结果返回一个布尔值。
三、相等性的比较(==)
1)对于原生数据类型来说,比较的是左右两边的值是否相等。
2)对于引用类型来说,比较左右两边的引用是否指向同一对象,或者说左右两边的引用地址是否相同。
*学习Java应多看官方API文档和Java源代码
四、String类
1)String类重写了Object类中的equals()方法:对于String类的equals()方法来说,如果传进来的Object对象,其判断方法与==等价;如果传进来的是String对象,即字符串,它判断的是当前字符串与传进来的字符串的内容是否一致。 //对于String对象的相等性判断来说,请使用equals方法,而不要使用==
2)String对象时常量,其对象一旦创建完毕就无法改变;当使用+拼接字符串时,会生成新的String对象,而不是原有String对象追加内容。
//All string literals(字面值) in Java programs, such as "abc"
, are implemented(实现) as instances of this class
3)String s = "aaa";
a)首先查找String Pool(字符串池,位于栈当中)中是否存在"aaa"字符串对象,如果没有,则在String Pool中创建一个"aaa"字符串对象,然后返回该对象的地址,赋给引用变量s。
b)如果有,则把String Pool中的这个"aaa"字符串对象的地址返回,赋给引用变量s。
4)String s = new String("aaa");
a)首先查找String Pool中是否存在"aaa"对象,如果有,直接在堆(heap)中创建一个"aaa"字符串对象,然后返回该对象的地址,赋给引用变量s,导致s指向了堆中创建的这个"aaa"字符串对象。
b)如果没有,则首先在String Pool中创建一个"aaa"字符串对象,然后再在堆(heap)中创建一个"aaa"字符串对象,然后返回该对象的地址,赋给引用变量s,导致s指向了堆中创建的这个"aaa"字符串对象。