包装类、类成员

目录

一.包装类

二.类成员


一.包装类

1.概念:8种基本数据类型对应的引用类型

2.类名:Integer,Character...

3.使用:(已过时,可以自动装箱)        

  1. 用new来创建Integer实例,不推荐
    Integer n=new Integer(100);
  2. 通过静态方法valueOf()
    Integer n1=Integer.valueOf(100);

取值可通过intValue()实例方法取值,n1.intValue();

4.自动装箱Autoboxing

        一个基本类型变量可以直接赋给对应的包装类变量/Object变量

   自动拆箱AutoUnboxing

        允许直接把包装类对象赋给对应的基本类型

Integer n3=127;//自动装箱
int it=n3;//自动拆箱

5.包装类实现基本类型和字符串类型之间的转换

通过类方法

  1. parseXxx(String S)        //String->基本类型    Character无此方法    
  2. valueOf(String S)    String->基本类型
  3. String类的valueOf()   基本类型->String,加空串也可行
int n1=Integer.parseInt("100");
int n2=Integer.ValueOf("100");
String s1=String.valueOf(100);
String s2=n1+"";//空字符串连接

 6.比较

①包装类实例与数值类型为值比较

②包装类型实例间的比较为地址比较

        e.g. 两个较小的等值的Integer实例,==为true(一般为-128~127,可变);

               两个较大的等值实例比较,==为false

这是因为 缓存        系统会将-128~127间的整数自动装箱成Integer实例,放入cache数组。此后,若要将一个-128~127间的整数自动装箱时,实例变量实际指向对应的cache数组元素。范围外的,会建立一个新的实例。

#自动装箱,Integer.valueOf(),  parseInt() 均优先返回缓存实例

③静态方法compare(xxx val1,xxx val2),比较包装类值大小,返回1,0,-1

public class Main {
    public static void main(String[] args) {
        Integer n1=Integer.valueOf(100);
        Integer n2=Integer.valueOf("100");
        Integer n = new Integer(100);
        System.out.println(n1==n2);//由于缓存机制,地址相同
        System.out.println(n==n1);//地址不同
        Integer n3=127;//自动装箱
        Integer n4=127;
        System.out.println(n3==n4);//true
        Integer n5=Integer.parseInt("100");
        System.out.println(n1==n5);//true
        System.out.println(Integer.compare(n1,n3));//-1
    }
}

7.包装类的意义

        解决了8种基本类型不能被当作Object类型使用的问题

二.类成员

1.java类只能包含 成员变量,方法,构造器,初始化块,内部类(包括枚举,接口)5种成员

2.null实例也可以访问类成员(static修饰),但无法访问实例变量,实例方法

3.单例类

        一个类始终只能创建一个实例,被称为单例类

①将构造器隐藏,private修饰

②定义一个public static方法用于创建对象

③在创建时,判断是否已经存在了一个对象,用一个类变量缓存实例

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello world!");
        Singleton ins1=Singleton.getInstance();
        Singleton ins2=Singleton.getInstance();
        System.out.println(ins1==ins2);
    }
}
class Singleton{
    private static Singleton instance;
    private Singleton(){

    }
    public static Singleton getInstance(){
        if(instance==null){
            instance=new Singleton();
        }
        return instance;
    }
}

4.意义

        在一些特殊场景下,不允许自由创建该类对象,只允许为该类创建一个对象。

你可能感兴趣的:(java学习,java,开发语言)