一、 Object 的equals()方法
1、==
(1)基本数据类型:根据基本数据类型的值判断是否相等。相等就返回true,反之返回false。
注:两端的数据类型可以不同,在不同的情况下,也可以返回true。
(2)引用数据类型:比较引用变量的地址值是否相等。
2、equals()
(1)只能处理引用类型变量。
(2)在object中,equals()仍然比较的是两个引用变量的地址值是否相等。
注:String、包装类、File类重写了equals()方法,比较的两个实体的内容是否相等。
二、 包装类、基本数据库类型、String类之间的转换
三、static(静态的)可以用来修饰属性、方法、代码块、内部类
(1)static修饰属性(类变量):由类创建的所有对象都共用这一属性,当其中一个对象对此属性进行修改,其他对象在调用这一属性时,其值是某一对象修改后的值。
类变量随类加载时加载,而且独一份。静态的变量,可以直接通(类.类变量)这种形式来调用。类变量的加载是早于对象的,所以当有了对象以后,可以“对象.类变量”,可行。但是“类.实例变量”不可行。
类变量存在于静态域中。
(2)static修饰方法(类方法):由类创建的所有对象都共用这一方法。随着类的加载而加载,可以直接通过“类.类方法”的方式调用。内部可以调用静态的方法或者属性,而不能调用非静态的方法或者属性。但是,非静态的方法中可以调用静态的方法或者属性。
注:静态结构(static的属性、方法、代码块、内部类)的声明周期要早于非静态的结构,同时被回收要晚于非静态的结构。
静态方法内,是不可以有this或者super的。
四、单例设计模式:解决问题,使得一个类只能创建一个对象。
//单例模式(饿汉式) class SingleTon{
//1、私有化构造器,使得在类的外边已经不能调用此构造器 private SingleTon() {
} //2、自己在类的内部创建类的对象 private static SingleTon singleTon =new SingleTon(); //3、私有化此对象,通过公共的方法来调用 //此公共的方法只能通过类来调用,因此设置成static,同时类的实例也必须设置成static的 public static SingleTon getinstance(){ returnsingleTon; } } |
//懒汉式单例模式:可能存在线程安全问题 class SingleTon1{ //1、私有化的构造器 private SingleTon1(){} // private static SingleTon1 singleTon1 =null; // public static SingleTon1 getinstance(){ if(singleTon1 ==null){ singleTon1 =new SingleTon1(); } returnsingleTon1; } } |
根据我自己理解饿汉模式和懒汉模式各有优缺点:
饿汉模式一般不会出现多线程同步的问题,但是如果类对象占用的内存很大时,不论使用或者不使用,对象一定会被分配内存,这样会内存的很大浪费。
懒汉模式一般在使用创建对象方法时才会为对象分配内存,这点比饿汉模式要好,但是,懒汉模式在多线程时,会存在同步问题,这点以后在多线程中在跟大家分享解决办法。