Java SE Lesson3

1.     接口中所声明的方法都是抽象方法。接口中的方法都是public的。

2.     接口中也可以定义成员变量。接口中的成员变量都是publicfinalstatic

3.     一个类不能既是final的,又是abstract的。因为abstract的主要目的是定义一个约定,让子类去实现这种约定,而final表示该类不能被继承,这样abstract希望该类被继承而final明确说明该类不能被继承,两者矛盾。

4.     Design Patterns(设计模式)。单例模式(Singleton):一个类只会生成唯一的一个对象。

5.     包(package)。用于将完成不同功能的类分门别类,放在不同的目录(包)下。包的命名规则:将公司域名反转作为包名。www.shengsiyuan.com,com.shengsiyuan(包名),对于包名:每个字母都需要小写。如果定义类的时候没有使用package,那么Java就认为我们所定义的类位于默认包里面(defaultpackage)。

6.     编译带有package声明的Java源文件有两种方式:

a)     直接编译,然后根据类中所定义的包名,逐一手工建立目录结构,最后将生成的class文件放到该目录结构中(很少使用,比较麻烦)。

b)     使用编译参数 –d,方式为 javac –d . 源文件 . java,这样在编译后,编译器会自动帮助我们建立好包所对应的目录结构。

7.     有两个包名,分别是aa.bb.cc与aa.bb.cc.dd,那么我们称后者为前者的子包。

8.     导入(import),将使用package分离的各个类导入回来,让编译器能够找到所需要的类。

9.     import的语法:importcom.shengsiyuan.PackageTest;

10. import com.shengsiyuan.*, 表示导入com.shengsiyuan包下面的所有类。

11. import aa.bb.*并不会导入aa.bb.cc包下面的类。这时需要这样写:

importaa.bb.*;

importaa.bb.cc.*;

12. 关于package、import、class的顺序问题:

A)   首先需要定义包(package),可选

B)    接下来使用import进行导入,可选

C)   然后才是class或interface的定义。

13. 如果两个类在同一个包下面,那么则不需要导入,直接使用即可。

14. 访问修饰符(accessmodifier)。

1)     public(公共的):被public所修饰的属性和方法可以被所有的类访问。

2)     protected(受保护的):被protected所修饰的属性和方法可以在类的内部、相同包以及该类的子类(相当于被子类继承下来了,并不是new出子类的对象来调用)所访问。

3)     private(私有的):被private所修饰的属性和方法只能在该类内部使用。

4)     默认的(不加任何访问修饰符):在类内部以及相同包下面的类所使用。

15. instanceof:判断某个对象是否是某个类的实例。语法形式:引用名instanceof 类名(接口名)。返回一个boolean值。

16.  People people = new Man();

System.out.println(peopleinstanceof People);

结果为true,因为Man是People的子类,根据继承,子类就是父类,因此Man也就可以看做是People的实例。如果people想使用Man类里面特有的方法,则需要向下类型转换成Man类型。

17. 相等性的比较

1)对于原生数据类型来说,比较的是左右两边的值是否相等

2)对于引用类型来说,比较的是左右两边的引用是否指向同一个对象,或者说左右两边的引用地址是否相同。

18. java.lang.Object类。java.lang包在使用的时候无需显示导入,编译的时候编译器自动帮我们导入。

19. API(ApplicationProgramming Interface),应用编程接口。

20. 当打印引用时,实际上会打印出引用所指对象的toString()方法的返回值,因为每个类都直接或者间接地继承自Object,而Object类中定义了toString()这个方法。

21.  equals()方法,该方法定义在Object类当中,因此Java中的每个类都具有该方法,对于Object类的equals()方法来说,它是判断调用equals()方法的引用与传进来的引用是否一致,即这两个引用是否指向的是同一个对象。对于Object类的equals()方法来说,等价于==

22.  对于String类的equals()方法来说,它是判断当前字符串与传进来的字符串内容是否一致。

23. 对于String对象的相等性判断来说,请使用equals()方法,而不要使用==。

24. String是常量,其对象一旦创建完毕就无法改变。当使用+拼接字符串时,会生成新的字符串对象,而不是向原有的String对象追加内容。

25. StringPool(字符串池)

26. String str = “aaa”;(采用字面值的方式赋值)

1)查找StringPool中是否存在“aaa”这个对象,如果不存在,则在StringPool中创建一个“aaa”对象,然后将StringPool中的这个“aaa”对象的地址返回来,赋给引用变量str,这样str会指向StringPool中的这个“aaa”字符串对象。

2)如果存在,则不创建任何对象,直接将StringPool中的这个“aaa”对象的地址返回来,赋给str使用。

27. String str = new String(“aaa”);

1)     首先在StringPool中查找有没有“aaa”这个字符串对象,如果有,则不再StringPool中再去创建“aaa”这个对象了,直接在堆(heap)中创建一个“aaa”字符串对象,然后将堆中的这个“aaa”对象的地址返回来,赋给str引用,导致str指向了堆中的这个“aaa”字符串对象

2)     如果没有,则首先在StringPool中创建一个“aaa”对象,然后再在堆中创建一个“aaa”对象,然后将堆中的这个“aaa”对象的地址返回来,赋给str引用,导致str指向了堆中所创建的“aaa”对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值