java基础之equal()方法、static关键字、单例设计模式

来源:互联网 发布:留学低龄化的数据 编辑:程序博客网 时间:2024/06/05 20:18

一、  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;

    }

}

根据我自己理解饿汉模式和懒汉模式各有优缺点:

饿汉模式一般不会出现多线程同步的问题,但是如果类对象占用的内存很大时,不论使用或者不使用,对象一定会被分配内存,这样会内存的很大浪费。

懒汉模式一般在使用创建对象方法时才会为对象分配内存,这点比饿汉模式要好,但是,懒汉模式在多线程时,会存在同步问题,这点以后在多线程中在跟大家分享解决办法。



0 0
原创粉丝点击