java编程思想

1、==和!= 比较的是对象的引用,引用存在于栈内,保存的是对象的地址;对象存在于堆内。

2、equals默认比较的也是引用,即对象的地址,若要比较对象实际的值,需要重写Object的equals方法;

java中如String,Integer等类已经重写了equals方法,因此比较的不再是对象在内存的地址,而是对象实际包含的值。

3、在Java5以前,switch(expr)中,exper只能是byte,short,char,int类型。

从Java5开始,java中引入了枚举类型,即enum类型。

从Java7开始,exper还可以是String类型。

4、任何基本数据类型都可以转换成别的基本数据类型,boolean除外。

如double d=1,float f=(float)1.23,short s=(short)34545454;

5、java基本数据类型变量存的是值,并且在栈中,因此更加高效;

表达式中出现的最大数据类型,就是表达式最终结果的数据类型。

6、this关键字只能在方法内部使用,表示对“调用该方法的当前对象”的引用。

7、进制:int a=031;  //8进制,以数字0开始。

十六进制:int b=0x1B;  //16进制,以0x开始。

8、System.gc()函数的作用只是提醒虚拟机:程序员希望进行一次垃圾回收。

但是它不能保证垃圾回收一定会进行,而且具体什么时候进行是取决于具体的虚拟机的,不同的虚拟机有不同的对策。

9、初始化的过程:

1>首次使用new,或者类的静态块、静态方法首次被访问时,虚拟机会去查找类路径,定位该类的.class文件;

2>载入class文件(创建一个Class对象),执行静态初始化,包括静态代码块,静态域等,并且只进行一次;

注:若该类有基类,则先执行基类的静态初始化,再执行子类的

3>使用new时,在堆上为对象分配内存,并将内存空间初始化为二进制零,

即对象的基本数据类型执行默认初始化(数字类型置为0,布尔型为false),引用类型被置为null;

4>按照声明顺序执行字段定义处的初始化

5>执行构造器;

注:若该类有基类,先执行基类的4>,5>,再执行子类的4>,5>;

 

10、可变参数列表获得的其实是一个数组,平时多练习使用,如下:

public void print(String... str){

  for(String s:str)

    System.out.println(s);

}

11、import static静态导入的使用

12、接口中的属性默认是static final 的

13、状态模式P165

14、策略模式P175

创建一个能够根据所传递参数对象的不同而具有不同行为的方法  

15、适配器模式P177

16、工厂方法模式P186

17、使用接口的好处:能够向上转型为基类型,使得方法调用更加灵活

18、迭代器模式P192

posted @ 2018-04-25 12:02  不安于现状的码农  阅读(324)  评论(0)    收藏  举报