java lesson 14
1. 接口中所声明的方法都是抽象。 接口中所声明的方法都是抽象。 接口中所声明的方法都是抽象。 接口中所声明的方法都是抽象。 接口中所声明的方法都是抽象。 接口中所声明的方法都是抽象。 接口中的方法都是 接口中的方法都是 接口中的方法都是 接口中的方法都是 publicpublicpublicpublic public的。
2. 接口中也可以定义成员变量。 接口中也可以定义成员变量。 接口中也可以定义成员变量。 接口中也可以定义成员变量。 接口中也可以定义成员变量。 接口中的成员变量都是 接口中的成员变量都是 publicpublicpublicpublicpublicpublic、final finalfinalfinal、staticstaticstaticstatic static的。
3. 一个类不能既是 一个类不能既是 一个类不能既是 final final ,又是 ,又是 abstract abstractabstract abstract 的。因为 的。因为 abstract abstractabstract abstract 的主要目是定义一种约, 的主要目是定义一种约, 的主要目是定义一种约, 的主要目是定义一种约, 的主要目是定义一种约, 让子类去实现这种约定,而 让子类去实现这种约定,而 让子类去实现这种约定,而 让子类去实现这种约定,而 让子类去实现这种约定,而 final final 表示该类不能被继承,这样 表示该类不能被继承,这样 表示该类不能被继承,这样 表示该类不能被继承,这样 表示该类不能被继承,这样 abstract abstractabstract abstract abstract希望该类可以 希望该类可以 希望该类可以 被继承而 被继承而 final final 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 final final 的, 又是 abstract abstractabstract abstract 的。
4. Design PatternDesign Pattern Design PatternDesign PatternDesign PatternDesign PatternDesign PatternDesign PatternDesign Pattern (设计模式)。 (设计模式)。 (设计模式)。 单例模式( Singleton SingletonSingletonSingleton SingletonSingleton):表示一 个类只会生成唯的个对象。
5. 包( packagepackage package package)。 用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。的命名规则:将公司域反转作为包。 的命名规则:将公司域反转作为包。 的命名规则:将公司域反转作为包。 的命名规则:将公司域反转作为包。 的命名规则:将公司域反转作为包。 的命名规则:将公司域反转作为包。 的命名规则:将公司域反转作为包。 www.shengsiyuan.com www.shengsiyuan.comwww.shengsiyuan.com www.shengsiyuan.com www.shengsiyuan.comwww.shengsiyuan.com www.shengsiyuan.com www.shengsiyuan.comwww.shengsiyuan.com,com.shengsiyuancom.shengsiyuancom.shengsiyuancom.shengsiyuan com.shengsiyuan com.shengsiyuan com.shengsiyuancom.shengsiyuancom.shengsiyuan (包 名) ,对于包名:每个字母都需要小写。 ,对于包名:每个字母都需要小写。 ,对于包名:每个字母都需要小写。 ,对于包名:每个字母都需要小写。 ,对于包名:每个字母都需要小写。 如果定义类的时候没有使用 如果定义类的时候没有使用 如果定义类的时候没有使用 如果定义类的时候没有使用 如果定义类的时候没有使用 packagepackage package package,那么 JavaJavaJavaJava就认为我们所定义的类位于默包里面( 就认为我们所定义的类位于默包里面( 就认为我们所定义的类位于默包里面( 就认为我们所定义的类位于默包里面( 就认为我们所定义的类位于默包里面( 就认为我们所定义的类位于默包里面( default packagedefault packagedefault packagedefault packagedefault packagedefault package default package default package)。
6. 编译带有 packagepackagepackage package package声明的 声明的 JavaJavaJavaJava源文件有两种方式: 源文件有两种方式: 源文件有两种方式:
a) 直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成class 文件放到该目录结构中(很少使用,比较麻烦)。 文件放到该目录结构中(很少使用,比较麻烦)。 文件放到该目录结构中(很少使用,比较麻烦)。 文件放到该目录结构中(很少使用,比较麻烦)。 文件放到该目录结构中(很少使用,比较麻烦)。 文件放到该目录结构中(很少使用,比较麻烦)。 文件放到该目录结构中(很少使用,比较麻烦)。 文件放到该目录结构中(很少使用,比较麻烦)。
b) 使用编译参数 使用编译参数 –d,方式为 ,方式为 javac javac javac –d . d . d . 源文件 .java .java.java,这样在编译后,器会自动帮 ,这样在编译后器会自动帮 ,这样在编译后器会自动帮 ,这样在编译后器会自动帮 ,这样在编译后器会自动帮 助我们建立好包所对应的目录结构。 助我们建立好包所对应的目录结构。 助我们建立好包所对应的目录结构。 助我们建立好包所对应的目录结构。 助我们建立好包所对应的目录结构。 助我们建立好包所对应的目录结构。
7. 有两个包名,分别是 有两个包名,分别是 有两个包名,分别是 aa.bb.cc aa.bb.ccaa.bb.ccaa.bb.cc 与 aa.bb aa.bbaa.bb.cc.dd .cc.dd,那么我们称后者为前的子包。 ,那么我们称后者为前的子包。 ,那么我们称后者为前的子包。 ,那么我们称后者为前的子包。 ,那么我们称后者为前的子包。 ,那么我们称后者为前的子包。
8. 导入( importimportimportimportimportimport),将使用 ,将使用 packagepackage package package分离的各个类导入回来,让编译器能够找到所需要 分离的各个类导入回来,让编译器能够找到所需要 分离的各个类导入回来,让编译器能够找到所需要 分离的各个类导入回来,让编译器能够找到所需要 分离的各个类导入回来,让编译器能够找到所需要 分离的各个类导入回来,让编译器能够找到所需要 分离的各个类导入回来,让编译器能够找到所需要 分离的各个类导入回来,让编译器能够找到所需要 的类。
9. import importimportimportimport的语法: 的语法: import import import import import import com.shengsiyuan.PackageTest;com.shengsiyuan.PackageTest;com.shengsiyuan.PackageTest;com.shengsiyuan.PackageTest; com.shengsiyuan.PackageTest; com.shengsiyuan.PackageTest; com.shengsiyuan.PackageTest; com.shengsiyuan.PackageTest; com.shengsiyuan.PackageTest; com.shengsiyuan.PackageTest;com.shengsiyuan.PackageTest;com.shengsiyuan.PackageTest; com.shengsiyuan.PackageTest;
10. import com.shengsiyuan.* import com.shengsiyuan.*import com.shengsiyuan.*import com.shengsiyuan.*import com.shengsiyuan.* import com.shengsiyuan.*import com.shengsiyuan.*import com.shengsiyuan.*import com.shengsiyuan.* import com.shengsiyuan.* import com.shengsiyuan.* import com.shengsiyuan.*import com.shengsiyuan.*import com.shengsiyuan.* import com.shengsiyuan.* ,表示导入 ,表示导入 com.shengsiyuancom.shengsiyuancom.shengsiyuancom.shengsiyuan com.shengsiyuan com.shengsiyuan com.shengsiyuancom.shengsiyuancom.shengsiyuan 包下面的所有类。 包下面的所有类。
11. import aa.bb.* import aa.bb.*import aa.bb.*import aa.bb.*import aa.bb.* import aa.bb.* import aa.bb.*import aa.bb.*import aa.bb.* 并不会导入 并不会导入 并不会导入 aa.bb.cc aa.bb.ccaa.bb.ccaa.bb.cc 包下面的类。 包下面的类。 这时需要样写: 这时需要样写: 这时需要样写:
import aa.bb.*; import aa.bb.*;import aa.bb.*;import aa.bb.*;import aa.bb.*; import aa.bb.*; import aa.bb.*;import aa.bb.*;import aa.bb.*;
import aa.bb.cc.*; import aa.bb.cc.*;import aa.bb.cc.*;import aa.bb.cc.*;import aa.bb.cc.*; import aa.bb.cc.*; import aa.bb.cc.*;import aa.bb.cc.*;import aa.bb.cc.*; import aa.bb.cc.*;
12. 关于 packagepackage package package、importimportimportimportimportimport、class class 的顺序问题: 的顺序问题:
a) 首先需要定义包( 首先需要定义包( 首先需要定义包( packagepackage package package),可选 ),可选 ),可选
b) 接下来使用 接下来使用 import importimportimport 进行导入,可选 进行导入,可选 进行导入,可选
c) 然后才是 class 或 interface interfaceinterface interface interface的定义。 的定义。
13. 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。
14. 访问修饰符 访问修饰符 (access modifier access modifier access modifier access modifieraccess modifieraccess modifieraccess modifieraccess modifier )。
1) publicpublicpublicpublic public(公共的) :被 publicpublicpublicpublic public所修饰的属性和方法可以被有类访问。 所修饰的属性和方法可以被有类访问。 所修饰的属性和方法可以被有类访问。 所修饰的属性和方法可以被有类访问。 所修饰的属性和方法可以被有类访问。 所修饰的属性和方法可以被有类访问。 所修饰的属性和方法可以被有类访问。
2) protectedprotectedprotectedprotectedprotected protected (受保护的): (受保护的): (受保护的): (受保护的): 被 protectedprotectedprotectedprotectedprotected protectedprotected 所修饰的属性和方法可以在类内部、相同包 所修饰的属性和方法可以在类内部、相同包 所修饰的属性和方法可以在类内部、相同包 所修饰的属性和方法可以在类内部、相同包 所修饰的属性和方法可以在类内部、相同包 所修饰的属性和方法可以在类内部、相同包 所修饰的属性和方法可以在类内部、相同包 所修饰的属性和方法可以在类内部、相同包 以及该类的子所访问。 以及该类的子所访问。 以及该类的子所访问。 以及该类的子所访问。
3) privateprivate privateprivateprivate(私有的): (私有的): (私有的): 被 privateprivate privateprivateprivate所修饰的属性和方法只能在该类内部使用 所修饰的属性和方法只能在该类内部使用 所修饰的属性和方法只能在该类内部使用 所修饰的属性和方法只能在该类内部使用 所修饰的属性和方法只能在该类内部使用 所修饰的属性和方法只能在该类内部使用 所修饰的属性和方法只能在该类内部使用
4) 默认的(不加任何访问修饰符): 默认的(不加任何访问修饰符): 默认的(不加任何访问修饰符): 默认的(不加任何访问修饰符): 默认的(不加任何访问修饰符): 默认的(不加任何访问修饰符): 在类内部以及相同包下面的所使用。 在类内部以及相同包下面的所使用。 在类内部以及相同包下面的所使用。 在类内部以及相同包下面的所使用。 在类内部以及相同包下面的所使用。 在类内部以及相同包下面的所使用。
15. instanstanstanstanceof ceofceof: 判断某个对象是否类的实例。 判断某个对象是否类的实例。 判断某个对象是否类的实例。 判断某个对象是否类的实例。 判断某个对象是否类的实例。 语法形式:引用名 语法形式:引用名 语法形式:引用名 insta instainstainstanceof ceof 类 名(接口) 名(接口) ,返回一个 ,返回一个 ,返回一个 booleanbooleanbooleanboolean boolean 值。
16. People people = new Man();People people = new Man();People people = new Man();People people = new Man();People people = new Man(); People people = new Man();People people = new Man();People people = new Man(); People people = new Man(); People people = new Man();People people = new Man(); People people = new Man();People people = new Man();People people = new Man(); People people = new Man();People people = new Man();
17. System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People); System.out.println(people instanceof People);System.out.println(people instanceof People); System.out.println(people instanceof People); System.out.println(people instanceof People); System.out.println(people instanceof People); System.out.println(people instanceof People);System.out.println(people instanceof People); System.out.println(people instanceof People); System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People); System.out.println(people instanceof People); System.out.println(people instanceof People);System.out.println(people instanceof People); System.out.println(people instanceof People); System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People); System.out.println(people instanceof People); //结果为 结果为 true ,因为 ,因为 ManMan 是 PeoplePeoplePeoplePeoplePeople 的子 类,根据继承子就是父因此 类,根据继承子就是父因此 类,根据继承子就是父因此 类,根据继承子就是父因此 类,根据继承子就是父因此 类,根据继承子就是父因此 ManMan 也可以看作是 也可以看作是 PeoplePeoplePeoplePeoplePeople 的实例。 的实例。
18. 相等性的比较 相等性的比较 (== )
1) 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。
2) 对于引用类型来说,比较左右两边的是否指向同一个象或者边的引用地址是否相同。 边的引用地址是否相同。 边的引用地址是否相同。 边的引用地址是否相同。
19. java.lang.Object java.lang.Objectjava.lang.Object java.lang.Object java.lang.Objectjava.lang.Objectjava.lang.Object 类。 java.lang java.langjava.lang java.lang java.lang包在使用的时候无需显式导入,编译由器自动 包在使用的时候无需显式导入,编译由器自动 包在使用的时候无需显式导入,编译由器自动 包在使用的时候无需显式导入,编译由器自动 包在使用的时候无需显式导入,编译由器自动 包在使用的时候无需显式导入,编译由器自动 包在使用的时候无需显式导入,编译由器自动 包在使用的时候无需显式导入,编译由器自动 帮助我们导入。 帮助我们导入。
20. API (Application Programming Interface Application Programming InterfaceApplication Programming Interface Application Programming InterfaceApplication Programming InterfaceApplication Programming Interface Application Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming Interface Application Programming InterfaceApplication Programming Interface Application Programming InterfaceApplication Programming Interface Application Programming Interface Application Programming Interface),应用编程接口。 ,应用编程接口。 ,应用编程接口。
21. 当打印引用时,实际上会出所指对象的 当打印引用时,实际上会出所指对象的 当打印引用时,实际上会出所指对象的 当打印引用时,实际上会出所指对象的 当打印引用时,实际上会出所指对象的 当打印引用时,实际上会出所指对象的 当打印引用时,实际上会出所指对象的 当打印引用时,实际上会出所指对象的 toString()toString()toString() toString()toString()toString() 方法的返回值,因为每个 方法的返回值,因为每个 方法的返回值,因为每个 方法的返回值,因为每个 类都直接或间地继承自 类都直接或间地继承自 类都直接或间地继承自 类都直接或间地继承自 Object Object,而 Object Object类中定义了 类中定义了 toString()toString()toString() toString()toString()toString() ,因此每个类都有 ,因此每个类都有 ,因此每个类都有 ,因此每个类都有 toString()toString()toString() toString()toString()toString() 这个方法。 这个方法。 这个方法。
22. 关于进制的表示: 关于进制的表示: 关于进制的表示: 16 进制,逢 进制,逢 16 进一, 16 进制的数字包括: 进制的数字包括: 进制的数字包括: 0~9,A,B,C,D,E,FA,B,C,D,E,F A,B,C,D,E,F A,B,C,D,E,F A,B,C,D,E,FA,B,C,D,E,F ,
23. equals()equals()equals()equals()equals()equals()equals()equals()方法,该定义在 Object ObjectObjectObjectObject类当中,因此 JavaJavaJavaJava中的每个类都具有该方法, 对于 Object ObjectObjectObjectObject类的 equals()equals()equals()equals()equals()equals()equals()equals()方法来说,它是判断调用 方法来说,它是判断调用 方法来说,它是判断调用 equals()equals()equals()equals()equals()equals()equals()equals()方法的引 用与传进来用是否一致,即这两个引指向的同对象。 对于 Object ObjectObjectObjectObject类的 equals()equals()equals()equals()equals()equals()equals()equals()方 法来说,它等价于 == 。
24. 对于 StringString StringStringString类的 equals()equals()equals()equals()equals()equals()equals()equals()方法来说,它是判断当前字符串与传进的内容 是否一致。
25. 对于 String StringString对象的相等性判断来说,请使用 对象的相等性判断来说,请使用 对象的相等性判断来说,请使用 对象的相等性判断来说,请使用 对象的相等性判断来说,请使用 对象的相等性判断来说,请使用 equals equals () 方法,而不要使用 方法,而不要使用 方法,而不要使用 == 。
26. String StringString是常量,其对象一旦创建完毕就无法改变。当使用 是常量,其对象一旦创建完毕就无法改变。当使用 是常量,其对象一旦创建完毕就无法改变。当使用 是常量,其对象一旦创建完毕就无法改变。当使用 是常量,其对象一旦创建完毕就无法改变。当使用 是常量,其对象一旦创建完毕就无法改变。当使用 是常量,其对象一旦创建完毕就无法改变。当使用 +拼接字符串时,会生成新 拼接字符串时,会生成新 拼接字符串时,会生成新 拼接字符串时,会生成新 的 String StringString对象,而不是向原有的 对象,而不是向原有的 对象,而不是向原有的 对象,而不是向原有的 String StringString对象追加内容。 对象追加内容。 对象追加内容。 对象追加内容。
27. String Pool String PoolString PoolString Pool String PoolString PoolString Pool(字符串池) (字符串池) (字符串池)
28. String s = String s = String s = String s = String s = “aaa ”;(采用字面值方式赋) (采用字面值方式赋) (采用字面值方式赋) (采用字面值方式赋)
1) 查找 String Pool String PoolString PoolString Pool String PoolString PoolString Pool中是否存在“ 中是否存在“ 中是否存在“ 中是否存在“ aaa ”这个对象,如果不存在 则”这个对象,如果不存在 则”这个对象,如果不存在 则”这个对象,如果不存在 则”这个对象,如果不存在 则”这个对象,如果不存在 则String Pool String PoolString PoolString PoolString PoolString PoolString PoolString Pool中创建 中创建 一个“ aaa ”对象,然后将 对象,然后将 对象,然后将 String Pool String PoolString PoolString PoolString PoolString PoolString PoolString Pool中的这个“ 中的这个“ 中的这个“ aaa ”对象的地址返回来,赋给引 ”对象的地址返回来,赋给引 ”对象的地址返回来,赋给引 ”对象的地址返回来,赋给引 ”对象的地址返回来,赋给引 用变量 s,这样 s会指向 会指向 String Pool String PoolString PoolString Pool String PoolString PoolString Pool中的这个“ 中的这个“ 中的这个“ aaa ”字符串对象 ”字符串对象
2) 如果存在,则不创建任何对象直接将 如果存在,则不创建任何对象直接将 如果存在,则不创建任何对象直接将 如果存在,则不创建任何对象直接将 如果存在,则不创建任何对象直接将 如果存在,则不创建任何对象直接将 如果存在,则不创建任何对象直接将 String PoolString Pool String PoolString Pool String PoolString PoolString Pool中的这个“ 中的这个“ aaa ”对象地址返回来, ”对象地址返回来, ”对象地址返回来, ”对象地址返回来, 赋给 s引用。 引用。
29. String s = new String( String s = new String(String s = new String(String s = new String( String s = new String( String s = new String(String s = new String( String s = new String( String s = new String(String s = new String(“aaa ”);
1) 首先在 String Pool String PoolString PoolString PoolString PoolString PoolString PoolString Pool中查找有没“ 中查找有没“ 中查找有没“ 中查找有没“ aaa ”这个字符串对象,如果有则不在 ”这个字符串对象,如果有则不在 ”这个字符串对象,如果有则不在 ”这个字符串对象,如果有则不在 ”这个字符串对象,如果有则不在 ”这个字符串对象,如果有则不在 ”这个字符串对象,如果有则不在 ”这个字符串对象,如果有则不在 String Pool String Pool String PoolString Pool String PoolString PoolString Pool中再去创建“ 中再去创建“ 中再去创建“ aaaaaa ”这个对象了,直接在堆中( ”这个对象了,直接在堆中( ”这个对象了,直接在堆中( ”这个对象了,直接在堆中( ”这个对象了,直接在堆中( heapheapheap )中创建一个“ )中创建一个“ )中创建一个“ aaaaaa ”字符串对 ”字符串对 ”字符串对 象,然后将堆中的这个“ 象,然后将堆中的这个“ 象,然后将堆中的这个“ 象,然后将堆中的这个“ 象,然后将堆中的这个“ aaa ”对象的地址返回来,赋给 ”对象的地址返回来,赋给 ”对象的地址返回来,赋给 ”对象的地址返回来,赋给 ”对象的地址返回来,赋给 ”对象的地址返回来,赋给 s引用,导致 引用,导致 引用,导致 引用,导致 s指向了堆中 指向了堆中 创建的这个“ 创建的这个“ aaa ”字符串对象。 ”字符串对象。
2) 如果没有,则首先在 如果没有,则首先在 如果没有,则首先在 如果没有,则首先在 String PoolString Pool String PoolString Pool String PoolString PoolString Pool中创建一个“ 中创建一个“ 中创建一个“ 中创建一个“ aaa aaa“对象,然后再在堆中( “对象,然后再在堆中( “对象,然后再在堆中( “对象,然后再在堆中( “对象,然后再在堆中( heapheapheap )创 建一个” aaa aaa“对象,然后将堆中的这个” “对象,然后将堆中的这个” “对象,然后将堆中的这个” “对象,然后将堆中的这个” “对象,然后将堆中的这个” aaa “对象的地址返回来,赋给 “对象的地址返回来,赋给 “对象的地址返回来,赋给 “对象的地址返回来,赋给 “对象的地址返回来,赋给 s引用, 导致 s指向了堆中所创建的这个” 指向了堆中所创建的这个” 指向了堆中所创建的这个” 指向了堆中所创建的这个” 指向了堆中所创建的这个” aaa aaa“对象。 “对象。
1. 接口中所声明的方法都是抽象。 接口中所声明的方法都是抽象。 接口中所声明的方法都是抽象。 接口中所声明的方法都是抽象。 接口中所声明的方法都是抽象。 接口中所声明的方法都是抽象。 接口中的方法都是 接口中的方法都是 接口中的方法都是 接口中的方法都是 publicpublicpublicpublic public的。
2. 接口中也可以定义成员变量。 接口中也可以定义成员变量。 接口中也可以定义成员变量。 接口中也可以定义成员变量。 接口中也可以定义成员变量。 接口中的成员变量都是 接口中的成员变量都是 publicpublicpublicpublicpublicpublic、final finalfinalfinal、staticstaticstaticstatic static的。
3. 一个类不能既是 一个类不能既是 一个类不能既是 final final ,又是 ,又是 abstract abstractabstract abstract 的。因为 的。因为 abstract abstractabstract abstract 的主要目是定义一种约, 的主要目是定义一种约, 的主要目是定义一种约, 的主要目是定义一种约, 的主要目是定义一种约, 让子类去实现这种约定,而 让子类去实现这种约定,而 让子类去实现这种约定,而 让子类去实现这种约定,而 让子类去实现这种约定,而 final final 表示该类不能被继承,这样 表示该类不能被继承,这样 表示该类不能被继承,这样 表示该类不能被继承,这样 表示该类不能被继承,这样 abstract abstractabstract abstract abstract希望该类可以 希望该类可以 希望该类可以 被继承而 被继承而 final final 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 明确说该类不能被继承,两者矛盾。因此一个既是 final final 的, 又是 abstract abstractabstract abstract 的。
4. Design PatternDesign Pattern Design PatternDesign PatternDesign PatternDesign PatternDesign PatternDesign PatternDesign Pattern (设计模式)。 (设计模式)。 (设计模式)。 单例模式( Singleton SingletonSingletonSingleton SingletonSingleton):表示一 个类只会生成唯的个对象。
5. 包( packagepackage package package)。 用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。用于将完成不同功能的类分门别,放在目录(包 )下。的命名规则:将公司域反转作为包。 的命名规则:将公司域反转作为包。 的命名规则:将公司域反转作为包。 的命名规则:将公司域反转作为包。 的命名规则:将公司域反转作为包。 的命名规则:将公司域反转作为包。 的命名规则:将公司域反转作为包。 www.shengsiyuan.com www.shengsiyuan.comwww.shengsiyuan.com www.shengsiyuan.com www.shengsiyuan.comwww.shengsiyuan.com www.shengsiyuan.com www.shengsiyuan.comwww.shengsiyuan.com,com.shengsiyuancom.shengsiyuancom.shengsiyuancom.shengsiyuan com.shengsiyuan com.shengsiyuan com.shengsiyuancom.shengsiyuancom.shengsiyuan (包 名) ,对于包名:每个字母都需要小写。 ,对于包名:每个字母都需要小写。 ,对于包名:每个字母都需要小写。 ,对于包名:每个字母都需要小写。 ,对于包名:每个字母都需要小写。 如果定义类的时候没有使用 如果定义类的时候没有使用 如果定义类的时候没有使用 如果定义类的时候没有使用 如果定义类的时候没有使用 packagepackage package package,那么 JavaJavaJavaJava就认为我们所定义的类位于默包里面( 就认为我们所定义的类位于默包里面( 就认为我们所定义的类位于默包里面( 就认为我们所定义的类位于默包里面( 就认为我们所定义的类位于默包里面( 就认为我们所定义的类位于默包里面( default packagedefault packagedefault packagedefault packagedefault packagedefault package default package default package)。
6. 编译带有 packagepackagepackage package package声明的 声明的 JavaJavaJavaJava源文件有两种方式: 源文件有两种方式: 源文件有两种方式:
a) 直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成直接编译,然后根据类中所定义的 包名逐一手工建立目录结构最将生成class 文件放到该目录结构中(很少使用,比较麻烦)。 文件放到该目录结构中(很少使用,比较麻烦)。 文件放到该目录结构中(很少使用,比较麻烦)。 文件放到该目录结构中(很少使用,比较麻烦)。 文件放到该目录结构中(很少使用,比较麻烦)。 文件放到该目录结构中(很少使用,比较麻烦)。 文件放到该目录结构中(很少使用,比较麻烦)。 文件放到该目录结构中(很少使用,比较麻烦)。
b) 使用编译参数 使用编译参数 –d,方式为 ,方式为 javac javac javac –d . d . d . 源文件 .java .java.java,这样在编译后,器会自动帮 ,这样在编译后器会自动帮 ,这样在编译后器会自动帮 ,这样在编译后器会自动帮 ,这样在编译后器会自动帮 助我们建立好包所对应的目录结构。 助我们建立好包所对应的目录结构。 助我们建立好包所对应的目录结构。 助我们建立好包所对应的目录结构。 助我们建立好包所对应的目录结构。 助我们建立好包所对应的目录结构。
7. 有两个包名,分别是 有两个包名,分别是 有两个包名,分别是 aa.bb.cc aa.bb.ccaa.bb.ccaa.bb.cc 与 aa.bb aa.bbaa.bb.cc.dd .cc.dd,那么我们称后者为前的子包。 ,那么我们称后者为前的子包。 ,那么我们称后者为前的子包。 ,那么我们称后者为前的子包。 ,那么我们称后者为前的子包。 ,那么我们称后者为前的子包。
8. 导入( importimportimportimportimportimport),将使用 ,将使用 packagepackage package package分离的各个类导入回来,让编译器能够找到所需要 分离的各个类导入回来,让编译器能够找到所需要 分离的各个类导入回来,让编译器能够找到所需要 分离的各个类导入回来,让编译器能够找到所需要 分离的各个类导入回来,让编译器能够找到所需要 分离的各个类导入回来,让编译器能够找到所需要 分离的各个类导入回来,让编译器能够找到所需要 分离的各个类导入回来,让编译器能够找到所需要 的类。
9. import importimportimportimport的语法: 的语法: import import import import import import com.shengsiyuan.PackageTest;com.shengsiyuan.PackageTest;com.shengsiyuan.PackageTest;com.shengsiyuan.PackageTest; com.shengsiyuan.PackageTest; com.shengsiyuan.PackageTest; com.shengsiyuan.PackageTest; com.shengsiyuan.PackageTest; com.shengsiyuan.PackageTest; com.shengsiyuan.PackageTest;com.shengsiyuan.PackageTest;com.shengsiyuan.PackageTest; com.shengsiyuan.PackageTest;
10. import com.shengsiyuan.* import com.shengsiyuan.*import com.shengsiyuan.*import com.shengsiyuan.*import com.shengsiyuan.* import com.shengsiyuan.*import com.shengsiyuan.*import com.shengsiyuan.*import com.shengsiyuan.* import com.shengsiyuan.* import com.shengsiyuan.* import com.shengsiyuan.*import com.shengsiyuan.*import com.shengsiyuan.* import com.shengsiyuan.* ,表示导入 ,表示导入 com.shengsiyuancom.shengsiyuancom.shengsiyuancom.shengsiyuan com.shengsiyuan com.shengsiyuan com.shengsiyuancom.shengsiyuancom.shengsiyuan 包下面的所有类。 包下面的所有类。
11. import aa.bb.* import aa.bb.*import aa.bb.*import aa.bb.*import aa.bb.* import aa.bb.* import aa.bb.*import aa.bb.*import aa.bb.* 并不会导入 并不会导入 并不会导入 aa.bb.cc aa.bb.ccaa.bb.ccaa.bb.cc 包下面的类。 包下面的类。 这时需要样写: 这时需要样写: 这时需要样写:
import aa.bb.*; import aa.bb.*;import aa.bb.*;import aa.bb.*;import aa.bb.*; import aa.bb.*; import aa.bb.*;import aa.bb.*;import aa.bb.*;
import aa.bb.cc.*; import aa.bb.cc.*;import aa.bb.cc.*;import aa.bb.cc.*;import aa.bb.cc.*; import aa.bb.cc.*; import aa.bb.cc.*;import aa.bb.cc.*;import aa.bb.cc.*; import aa.bb.cc.*;
12. 关于 packagepackage package package、importimportimportimportimportimport、class class 的顺序问题: 的顺序问题:
a) 首先需要定义包( 首先需要定义包( 首先需要定义包( packagepackage package package),可选 ),可选 ),可选
b) 接下来使用 接下来使用 import importimportimport 进行导入,可选 进行导入,可选 进行导入,可选
c) 然后才是 class 或 interface interfaceinterface interface interface的定义。 的定义。
13. 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。 如果两个类在同一包下面,那么则不需要导入直接使用即可。
14. 访问修饰符 访问修饰符 (access modifier access modifier access modifier access modifieraccess modifieraccess modifieraccess modifieraccess modifier )。
1) publicpublicpublicpublic public(公共的) :被 publicpublicpublicpublic public所修饰的属性和方法可以被有类访问。 所修饰的属性和方法可以被有类访问。 所修饰的属性和方法可以被有类访问。 所修饰的属性和方法可以被有类访问。 所修饰的属性和方法可以被有类访问。 所修饰的属性和方法可以被有类访问。 所修饰的属性和方法可以被有类访问。
2) protectedprotectedprotectedprotectedprotected protected (受保护的): (受保护的): (受保护的): (受保护的): 被 protectedprotectedprotectedprotectedprotected protectedprotected 所修饰的属性和方法可以在类内部、相同包 所修饰的属性和方法可以在类内部、相同包 所修饰的属性和方法可以在类内部、相同包 所修饰的属性和方法可以在类内部、相同包 所修饰的属性和方法可以在类内部、相同包 所修饰的属性和方法可以在类内部、相同包 所修饰的属性和方法可以在类内部、相同包 所修饰的属性和方法可以在类内部、相同包 以及该类的子所访问。 以及该类的子所访问。 以及该类的子所访问。 以及该类的子所访问。
3) privateprivate privateprivateprivate(私有的): (私有的): (私有的): 被 privateprivate privateprivateprivate所修饰的属性和方法只能在该类内部使用 所修饰的属性和方法只能在该类内部使用 所修饰的属性和方法只能在该类内部使用 所修饰的属性和方法只能在该类内部使用 所修饰的属性和方法只能在该类内部使用 所修饰的属性和方法只能在该类内部使用 所修饰的属性和方法只能在该类内部使用
4) 默认的(不加任何访问修饰符): 默认的(不加任何访问修饰符): 默认的(不加任何访问修饰符): 默认的(不加任何访问修饰符): 默认的(不加任何访问修饰符): 默认的(不加任何访问修饰符): 在类内部以及相同包下面的所使用。 在类内部以及相同包下面的所使用。 在类内部以及相同包下面的所使用。 在类内部以及相同包下面的所使用。 在类内部以及相同包下面的所使用。 在类内部以及相同包下面的所使用。
15. instanstanstanstanceof ceofceof: 判断某个对象是否类的实例。 判断某个对象是否类的实例。 判断某个对象是否类的实例。 判断某个对象是否类的实例。 判断某个对象是否类的实例。 语法形式:引用名 语法形式:引用名 语法形式:引用名 insta instainstainstanceof ceof 类 名(接口) 名(接口) ,返回一个 ,返回一个 ,返回一个 booleanbooleanbooleanboolean boolean 值。
16. People people = new Man();People people = new Man();People people = new Man();People people = new Man();People people = new Man(); People people = new Man();People people = new Man();People people = new Man(); People people = new Man(); People people = new Man();People people = new Man(); People people = new Man();People people = new Man();People people = new Man(); People people = new Man();People people = new Man();
17. System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People); System.out.println(people instanceof People);System.out.println(people instanceof People); System.out.println(people instanceof People); System.out.println(people instanceof People); System.out.println(people instanceof People); System.out.println(people instanceof People);System.out.println(people instanceof People); System.out.println(people instanceof People); System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People); System.out.println(people instanceof People); System.out.println(people instanceof People);System.out.println(people instanceof People); System.out.println(people instanceof People); System.out.println(people instanceof People);System.out.println(people instanceof People);System.out.println(people instanceof People); System.out.println(people instanceof People); //结果为 结果为 true ,因为 ,因为 ManMan 是 PeoplePeoplePeoplePeoplePeople 的子 类,根据继承子就是父因此 类,根据继承子就是父因此 类,根据继承子就是父因此 类,根据继承子就是父因此 类,根据继承子就是父因此 类,根据继承子就是父因此 ManMan 也可以看作是 也可以看作是 PeoplePeoplePeoplePeoplePeople 的实例。 的实例。
18. 相等性的比较 相等性的比较 (== )
1) 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。 对于原生数据类型来说,比较的是左右两边值否相等。
2) 对于引用类型来说,比较左右两边的是否指向同一个象或者边的引用地址是否相同。 边的引用地址是否相同。 边的引用地址是否相同。 边的引用地址是否相同。
19. java.lang.Object java.lang.Objectjava.lang.Object java.lang.Object java.lang.Objectjava.lang.Objectjava.lang.Object 类。 java.lang java.langjava.lang java.lang java.lang包在使用的时候无需显式导入,编译由器自动 包在使用的时候无需显式导入,编译由器自动 包在使用的时候无需显式导入,编译由器自动 包在使用的时候无需显式导入,编译由器自动 包在使用的时候无需显式导入,编译由器自动 包在使用的时候无需显式导入,编译由器自动 包在使用的时候无需显式导入,编译由器自动 包在使用的时候无需显式导入,编译由器自动 帮助我们导入。 帮助我们导入。
20. API (Application Programming Interface Application Programming InterfaceApplication Programming Interface Application Programming InterfaceApplication Programming InterfaceApplication Programming Interface Application Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming InterfaceApplication Programming Interface Application Programming InterfaceApplication Programming Interface Application Programming InterfaceApplication Programming Interface Application Programming Interface Application Programming Interface),应用编程接口。 ,应用编程接口。 ,应用编程接口。
21. 当打印引用时,实际上会出所指对象的 当打印引用时,实际上会出所指对象的 当打印引用时,实际上会出所指对象的 当打印引用时,实际上会出所指对象的 当打印引用时,实际上会出所指对象的 当打印引用时,实际上会出所指对象的 当打印引用时,实际上会出所指对象的 当打印引用时,实际上会出所指对象的 toString()toString()toString() toString()toString()toString() 方法的返回值,因为每个 方法的返回值,因为每个 方法的返回值,因为每个 方法的返回值,因为每个 类都直接或间地继承自 类都直接或间地继承自 类都直接或间地继承自 类都直接或间地继承自 Object Object,而 Object Object类中定义了 类中定义了 toString()toString()toString() toString()toString()toString() ,因此每个类都有 ,因此每个类都有 ,因此每个类都有 ,因此每个类都有 toString()toString()toString() toString()toString()toString() 这个方法。 这个方法。 这个方法。
22. 关于进制的表示: 关于进制的表示: 关于进制的表示: 16 进制,逢 进制,逢 16 进一, 16 进制的数字包括: 进制的数字包括: 进制的数字包括: 0~9,A,B,C,D,E,FA,B,C,D,E,F A,B,C,D,E,F A,B,C,D,E,F A,B,C,D,E,FA,B,C,D,E,F ,
23. equals()equals()equals()equals()equals()equals()equals()equals()方法,该定义在 Object ObjectObjectObjectObject类当中,因此 JavaJavaJavaJava中的每个类都具有该方法, 对于 Object ObjectObjectObjectObject类的 equals()equals()equals()equals()equals()equals()equals()equals()方法来说,它是判断调用 方法来说,它是判断调用 方法来说,它是判断调用 equals()equals()equals()equals()equals()equals()equals()equals()方法的引 用与传进来用是否一致,即这两个引指向的同对象。 对于 Object ObjectObjectObjectObject类的 equals()equals()equals()equals()equals()equals()equals()equals()方 法来说,它等价于 == 。
24. 对于 StringString StringStringString类的 equals()equals()equals()equals()equals()equals()equals()equals()方法来说,它是判断当前字符串与传进的内容 是否一致。
25. 对于 String StringString对象的相等性判断来说,请使用 对象的相等性判断来说,请使用 对象的相等性判断来说,请使用 对象的相等性判断来说,请使用 对象的相等性判断来说,请使用 对象的相等性判断来说,请使用 equals equals () 方法,而不要使用 方法,而不要使用 方法,而不要使用 == 。
26. String StringString是常量,其对象一旦创建完毕就无法改变。当使用 是常量,其对象一旦创建完毕就无法改变。当使用 是常量,其对象一旦创建完毕就无法改变。当使用 是常量,其对象一旦创建完毕就无法改变。当使用 是常量,其对象一旦创建完毕就无法改变。当使用 是常量,其对象一旦创建完毕就无法改变。当使用 是常量,其对象一旦创建完毕就无法改变。当使用 +拼接字符串时,会生成新 拼接字符串时,会生成新 拼接字符串时,会生成新 拼接字符串时,会生成新 的 String StringString对象,而不是向原有的 对象,而不是向原有的 对象,而不是向原有的 对象,而不是向原有的 String StringString对象追加内容。 对象追加内容。 对象追加内容。 对象追加内容。
27. String Pool String PoolString PoolString Pool String PoolString PoolString Pool(字符串池) (字符串池) (字符串池)
28. String s = String s = String s = String s = String s = “aaa ”;(采用字面值方式赋) (采用字面值方式赋) (采用字面值方式赋) (采用字面值方式赋)
1) 查找 String Pool String PoolString PoolString Pool String PoolString PoolString Pool中是否存在“ 中是否存在“ 中是否存在“ 中是否存在“ aaa ”这个对象,如果不存在 则”这个对象,如果不存在 则”这个对象,如果不存在 则”这个对象,如果不存在 则”这个对象,如果不存在 则”这个对象,如果不存在 则String Pool String PoolString PoolString PoolString PoolString PoolString PoolString Pool中创建 中创建 一个“ aaa ”对象,然后将 对象,然后将 对象,然后将 String Pool String PoolString PoolString PoolString PoolString PoolString PoolString Pool中的这个“ 中的这个“ 中的这个“ aaa ”对象的地址返回来,赋给引 ”对象的地址返回来,赋给引 ”对象的地址返回来,赋给引 ”对象的地址返回来,赋给引 ”对象的地址返回来,赋给引 用变量 s,这样 s会指向 会指向 String Pool String PoolString PoolString Pool String PoolString PoolString Pool中的这个“ 中的这个“ 中的这个“ aaa ”字符串对象 ”字符串对象
2) 如果存在,则不创建任何对象直接将 如果存在,则不创建任何对象直接将 如果存在,则不创建任何对象直接将 如果存在,则不创建任何对象直接将 如果存在,则不创建任何对象直接将 如果存在,则不创建任何对象直接将 如果存在,则不创建任何对象直接将 String PoolString Pool String PoolString Pool String PoolString PoolString Pool中的这个“ 中的这个“ aaa ”对象地址返回来, ”对象地址返回来, ”对象地址返回来, ”对象地址返回来, 赋给 s引用。 引用。
29. String s = new String( String s = new String(String s = new String(String s = new String( String s = new String( String s = new String(String s = new String( String s = new String( String s = new String(String s = new String(“aaa ”);
1) 首先在 String Pool String PoolString PoolString PoolString PoolString PoolString PoolString Pool中查找有没“ 中查找有没“ 中查找有没“ 中查找有没“ aaa ”这个字符串对象,如果有则不在 ”这个字符串对象,如果有则不在 ”这个字符串对象,如果有则不在 ”这个字符串对象,如果有则不在 ”这个字符串对象,如果有则不在 ”这个字符串对象,如果有则不在 ”这个字符串对象,如果有则不在 ”这个字符串对象,如果有则不在 String Pool String Pool String PoolString Pool String PoolString PoolString Pool中再去创建“ 中再去创建“ 中再去创建“ aaaaaa ”这个对象了,直接在堆中( ”这个对象了,直接在堆中( ”这个对象了,直接在堆中( ”这个对象了,直接在堆中( ”这个对象了,直接在堆中( heapheapheap )中创建一个“ )中创建一个“ )中创建一个“ aaaaaa ”字符串对 ”字符串对 ”字符串对 象,然后将堆中的这个“ 象,然后将堆中的这个“ 象,然后将堆中的这个“ 象,然后将堆中的这个“ 象,然后将堆中的这个“ aaa ”对象的地址返回来,赋给 ”对象的地址返回来,赋给 ”对象的地址返回来,赋给 ”对象的地址返回来,赋给 ”对象的地址返回来,赋给 ”对象的地址返回来,赋给 s引用,导致 引用,导致 引用,导致 引用,导致 s指向了堆中 指向了堆中 创建的这个“ 创建的这个“ aaa ”字符串对象。 ”字符串对象。
2) 如果没有,则首先在 如果没有,则首先在 如果没有,则首先在 如果没有,则首先在 String PoolString Pool String PoolString Pool String PoolString PoolString Pool中创建一个“ 中创建一个“ 中创建一个“ 中创建一个“ aaa aaa“对象,然后再在堆中( “对象,然后再在堆中( “对象,然后再在堆中( “对象,然后再在堆中( “对象,然后再在堆中( heapheapheap )创 建一个” aaa aaa“对象,然后将堆中的这个” “对象,然后将堆中的这个” “对象,然后将堆中的这个” “对象,然后将堆中的这个” “对象,然后将堆中的这个” aaa “对象的地址返回来,赋给 “对象的地址返回来,赋给 “对象的地址返回来,赋给 “对象的地址返回来,赋给 “对象的地址返回来,赋给 s引用, 导致 s指向了堆中所创建的这个” 指向了堆中所创建的这个” 指向了堆中所创建的这个” 指向了堆中所创建的这个” 指向了堆中所创建的这个” aaa aaa“对象。 “对象。
发表评论
-
已前的学习笔记java lesson 20
2012-01-03 13:26 846java lesson 20 1. 要想使用反射,首先需要获得 ... -
已前的学习笔记java lesson 19
2012-01-03 13:25 707java lesson 19 1. 当遍历集合或数组时,如果需 ... -
已前的学习笔记java lesson 18
2012-01-03 13:23 788java lesson 18 1. 有这样一个类: // ge ... -
已前的学习笔记java lesson 17
2012-01-03 13:22 698java lesson 17 1. 当向ArrayList添加 ... -
已前的学习笔记java lesson 16
2012-01-02 15:54 803java lesson 16 1. 对于Java中 ... -
已前的学习笔记java lesson 15
2012-01-02 15:52 865java lesson 15 1. 包装类( ... -
已前的学习笔记java lesson 13
2012-01-02 15:45 632java lesson 13 Java SE Lesson 2 ... -
已前的学习笔记java lesson 12
2012-01-02 15:43 693JAVA lesson 12 1. 类是一种 ... -
已前的学习笔记java lesson 11
2012-01-01 12:51 719Java lesson 11 1. 如果一个类包含了属性与方法 ... -
已前的学习笔记java lesson 11
2011-12-31 15:02 0Java lesson 11 1. 如果一个类包含了属性与方法 ... -
已前的学习笔记java lesson 10
2011-12-31 14:42 726Java lesson 10 1. 类中的属性又叫做成员变量( ... -
已前的学习笔记java lesson 9
2011-12-31 14:17 686Java lesson 9 1. 面向对象 ... -
已前的学习笔记java lesson 8
2011-12-31 14:00 779Java lesson 8 1. break语句:经常用在循环 ... -
已前的学习笔记java lesson 7
2011-12-31 12:00 687Java lesson 7 1. Java中的循环控制语句一共 ... -
已前的学习笔记java lesson 6
2011-12-31 11:31 785Java lesson 6 1. 条件运算符(三元表达式),其 ... -
已前的学习笔记java lesson 5
2011-12-30 22:29 704Java lesson 5 运算符 关系运算符 1.大于(&g ... -
已前的学习笔记java lesson 4
2011-12-30 21:33 724Java lesson 4 运算符(operator) pub ... -
已前的学习笔记java lesson 3
2011-12-30 21:02 604Java lesson 3 Pitfall of primit ... -
已前的学习笔记java lesson 2
2011-12-30 20:02 664Java lesson 2 Primitive date ty ... -
已前的学习笔记java lesson 1
2011-12-30 18:15 633Lesson 1 Java se java standard ...
相关推荐
java技术从入门到精通(孙鑫)学习笔记-Lesson2
java技术从入门到精通(孙鑫)学习笔记Lesson4
【Java学习笔记】是针对Java编程语言的一份详尽的学习资料,主要由“圣思源”提供,旨在帮助初学者和进阶者深入理解和掌握Java技术。这份笔记可能包含了从基础语法到高级特性的全面讲解,结合了理论与实践,通过实例...
"java技术从入门到精通(孙鑫)学习笔记Lesson1"涵盖了Java的基础知识,包括JDK、JRE、J2SE、J2EE和J2ME等核心概念。 JDK,全称为Java Develop Kit,是Java开发工具包,包含了编译器、调试器和各种工具,用于编写、...
java技术从入门到精通(孙鑫)学习笔记Lesson3(接口)
java技术从入门到精通(孙鑫)学习笔记Lesson10(网络编程)
Java 多线程是编程中的重要概念,尤其在并发处理和高效系统设计中扮演着关键角色。本节主要探讨了Java中的线程概念以及如何创建...通过不断的实践和学习,可以更好地利用Java的多线程特性来提升软件的性能和用户体验。
【Java技术从入门到精通——Lesson3学习笔记】 在Java编程语言中,包(package)是一种组织类的方式,它的引入主要是为了管理和解决大型项目中大量类的命名冲突问题。包在Java中扮演着类似文件系统目录的角色,允许...
本篇笔记主要关注的是继承这一概念。 继承允许我们创建一个新类,这个新类可以从现有的类(父类或超类)中继承属性和行为。这样做的好处是可以减少代码重复,提高代码的复用性,并且使得类之间的关系更加清晰。在...
面向对象编程是Java技术的核心,它是以对象为...理解这些概念是深入学习Java技术的基础,也是成为一名精通Java的程序员所必需的。通过实践和不断学习,你可以更好地掌握面向对象编程的精髓,提高编程效率和代码质量。
本篇笔记主要讨论了几个关键的数据结构,包括LinkedList、ArrayList以及HashSet,并通过实例展示了它们的用法。 首先,LinkedList是一个实现了List接口的类,它采用双向循环链表实现。这意味着每个节点包含一个数据...
【压缩包子文件的文件名称列表】:由于只给出了“two lesson”这一条信息,我们可以假设压缩包内包含了一系列与Java编程第二课相关的文件,可能有PPT课件、代码示例、笔记文档、练习题等,用于帮助学习者理解并掌握...
通过学习这个“圣思园Java.web笔记”,开发者可以系统地掌握Java Web开发的基本技能,为构建动态、交互性强的Web应用程序打下坚实的基础。无论是初学者还是有经验的开发者,都能从中受益,提升自己的技术水平。
《Java学习》是一个全面深入的Java编程学习资源,包含了丰富的笔记和配套代码,旨在帮助学习者更好地理解和掌握Java编程语言。这个压缩包文件是学习Java过程中的重要参考资料,它包括了多个子目录,每个子目录代表了...
【标题】:“小贝程序员生活\课件\java\javaclass\thirteen lesson.rar” 提供的是一份关于Java编程的课程资料,其中包含了第十三课的内容。这个压缩包很可能是针对初学者或者有一定基础的Java开发者设计的,旨在...
:仅列出“eighteen lesson”,这可能是压缩包内的一个目录或者一系列文件的总称,可能包括PPT课件、PDF讲义、Java源代码文件(.java)、执行脚本(.bat或.sh)、笔记文档(.txt或.md)等,用于辅助学习第18课的Java...
描述中同样提到“小贝程序员生活\课件\java\javaclass\one lesson.rar”,这暗示了这个压缩包的内容与Java编程语言的“javaclass”部分相关,可能包含课件、笔记、代码示例或教学视频等学习资源。"javaclass"通常指...
描述中提到的路径结构暗示这是一个关于Java类和对象的学习资料,可能包括PPT、笔记、代码示例等。"小贝程序员生活"可能是讲师或课程系列的名字,而"\java\javaclass"表明内容专注于Java语言的基础和高级特性,特别是...
【压缩包子文件的文件名称列表】:仅给出“nine lesson”,这可能是压缩包内的主目录或者文件夹名,里面可能包含了该课程的PPT、代码示例、笔记文档、视频教程等各类学习资源,帮助学习者理解和实践Java类的使用。...