菜单

着力数据列包装类

2018年11月16日 - Java

为好操作基本数据列值,将那个包装成了目标,在靶中定义了性和行为,丰富了该多少的操作。

包装类

Java提供了平组包装类,来包装所有的中坚数据类

基本数据类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

上述包装类又分为两米品种:

用于描述该对象的类,就称为基本数据对象包装类。

装箱与拆箱操作

核心数据列以及包装类之间的易:

  1. 装箱操作:将基本数据类变为包装类的花样:

  2. 每个包装类的构造方法都可以收各自数据类型的变量;

  3. 拆箱操作:从包装类之中取出被包裹的多少:

  4. 下Number类中提供的:xxxValue()方法好。

范例:int与Integer非自动拆、装箱

public class Integer2intDemo {
    public static void main(String[] args) {
        Integer obj = new Integer(10);      //将基本数据类型装箱
        int temp = obj.intValue();          //将包装后的数据拆箱
        System.out.println(temp);
    }
}

范例:自动拆、装箱

public class Integer2intDemo {
    public static void main(String[] args) {
        Integer obj2 = 10;      //自动装箱
        int temp2 = obj;        //自动装箱
        obj++;                  //包装类直接进行数学计算
        System.out.println(temp * obj);
    }
}

注意

public class Integer2intDemo {
    public static void main(String[] args) {
        Integer obja = 10;
        Integer objb = 10;
        Integer objc = new Integer(10);
        System.out.println(obja == objb);   //true
        System.out.println(obja == objc);   //false
        System.out.println(objb == objc);   //false
        System.out.println(obja.equals(objc));  //true
    }
}

利用包装类的时刻很少会动用构造方法完成,几乎都是一直赋值,但是在认清内容是否等的时光势必要是用equals()方法。

提示:这时Object可以接纳一切的援数据类型,因为在活动装箱机制,所以Object也堪存放基本项目了。

public class Integer2intDemo {
    public static void main(String[] args) {
        Object obj3 = 10;   //先包装再转换
        //Object 不可能直接向下转型为int
        int temp3 = (Integer)obj3;  //向下转型为Integer后,自动拆箱
        System.out.println(temp3 * 2);
    }
}

byte    Byte

数据类型转换(核心)

利用包装类最多之就是数据类型转换,在包类里提供有将String型数据易为基本数据类的法门,使用几只代表的类似证:

范例:将字符串变为int型数据

public class Integer2intDemo {
    public static void main(String[] args) {
        String str = "123";     //字符串
        int temp4 = Integer.parseInt(str);
        System.out.println(temp4);
    }
}

这时候促成了字符串变为基本数据类的操作,但是这样的换过程中:深受换的字符串一定是由于数字组合
范例:错误代码

public class Integer2intDemo {
    public static void main(String[] args) {
        String str = "123a";        //字符串
        int temp4 = Integer.parseInt(str);
        System.out.println(temp4);
    }
}

Exception in thread "main" java.lang.NumberFormatException: For input string: "123a"
范例:观察boolean转换

        String str2 = "true";   //字符串
        boolean flag = Boolean.parseBoolean(str2);
        if (flag) {
            System.out.println("** 满足条件!");
        } else {
            System.out.println("** 不满足条件!");
        }

每当Boolean进行转移的过程被,如果假定转换的字符串不是true或者false,那么用联合按false处理。
本既然实现了字符串变为基本数据列的操作,那么也可以实现中心数据类型转换为字符串的操作:

        int num = 100;
        String str3 = num + "";     //变为String
        System.out.println(str3.replaceAll("0","9"));   //199

这般的操作虽然好省略的完结,但是会存在垃圾问题。

        int num = 100;
        String str4 = String.valueOf(num);
        System.out.println(str4.replaceAll("0","9"));   //199

如此的操作不见面生出垃圾,所以当出之常常反复会用操作二。

short   Short

总结

  1. JDK1.5后头才提供自动装箱与拆箱的操作;
  2. 字符串与主干数据列的竞相转换:

  3. 字符串转换为核心数据类,依靠包装类的parseXxx()方法;

  4. 基本数据类型转换为字符串,依靠String.valueOf(数据类型)方法。

int     Inreger 

long    Long

float    Float

double  Double

char   Character

boolean  Boolean

中心数据列—>字符串

1.中坚数据类值+””

2.因此String类吃的静态方法valueof(基本数据类型值)

字符串—>基本数据类

1.以包装类吃的静态方法xxx parseXxx(xxx类型的字符串)

    例如:int parseInt(“intString”);

               boolean parseBoolean(“booleanString”);

    只有character没有parse方法

2.假设字符串被Integer进行对象的包裹,那么得应用一个无静态方法inValue,将一个Integer对象转成中心数据类的值

int inValue();
long longValue();
.
.
.
等等

平头具备不同的进制体现

十上制—>其他进制

二 

static String toBinaryString(int i)  

static String toOctalString(int i)  

十六

static String toHexString(int i)  

任意

static String toString(int i, int radix)  

 

其余进制—>十进制

static int parseInt(String s, int radix)  

 

比较有限独对象的数值返回-1 0 1

int compareTo(Integer anotherInteger)  

 

自行装箱

public class Text {
    public static void main(String[] args){
        Integer a=127; //自动装箱
        Integer b=127;    
        System.out.println(a==b);//true
        System.out.print(a.equals(b));\\true
    }
}

jdk升级到1.5下 自动装箱 简化书写
如果装箱的是一个字节,那么数量会被共享,不会见开发新的半空中(最小值-128,最酷价值127)

机动拆箱

i=i+6—–>i=new Integer(i.inValue()+6)   
  i.inValue()可以解也活动拆箱

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图