java-基本类型包装类
基本类型包装类
基本数据类型对应的包的好处是它是个类可以new对象调方法
基本数据类型包装类的特点:
用于基本数据类型和字符串进行转换;
且每个方法都是自己包装类的方法, 因为返回值是static修饰的所以可以直接 类名.调用;
字符串转基本数据类型的时候:
字符串必须是数值型不然不能进行转换
基本数据类型转字符方法:
1:基本数组类加 " "(双引号);
2.String.valueof方法;
3.调用包装类的toString方法:String s=Integer.toString
基本类型和对象转换方法 :
使用int类型与Integer对象转换进行演示,其他基本类型转换方式相同。
1.基本数据类型 ——》 包装类型:
Integer i = new Integer(4);//使用构造函数函数
Integer ii = new Integer("4");//构造函数中可以传递一个数字字符串
2.字符串-->包装类型,但必须是数值类型的字符串
Integer iii = Integer.valueOf(4);//使用包装类中的valueOf方法
Integer iiii = Integer.valueOf("4");//使用包装类中的valueOf方法
3.包装类型——》基本数据类型
int num = i.intValue();
基本数据类型和引用数据类型的区别:
int不能存null;Integer可以存null;
因为Integer是个对象可以掉方法,而且对象的默认值是null;Integer实际存的是地址
自动拆装箱:
就是引用数据类型可以直接拿来运算,因为系统自动并隐藏了引用数据类型转基本数据类型的过程;
基本数据类型可以直接赋值给引用数据类型,原因是系统自动将基本数据类型转成了引用数据类型并隐藏了转换过程
自动装箱:基本数据类型转成引用数据类型(int->Integer)
自动拆箱:引用数据类型转成基本数据类型(Integer->int)
自动装箱 (int转Integer) 拆箱(Integer转int); 装箱:int转Integer; 拆箱:Integer转int;
自动装箱:基本数据类型转引用数据类型:
例如
Integer i=1;
自动装箱就是直接赋值,
实际上省略了integer i=new Integer(1);
这里的1就是integer i=new Integer(1);
自动拆箱:就是包装类型转成基本数据类型
int sum=i+2;
这里也是直接写,
实际上省略了:int sum=i.intvalue(1)+2; i=i.intvalue();
自动装箱(byte常量池)
package com.oracle.demo01; public class Demo01 { public static void main(String[] args) { //接收数据 是String类型的 String age="18"; String score="80.8"; //将字符串转换为基本数据类型 int a=Integer.parseInt(age); //将 double b=Double.parseDouble(score); //基本数据类型转为字符串 转成什么就用什么来接 //方法一 “” int c=1; System.out.println(""+c+2);//12 //方法二 String 中的valueof方法 String s1=String .valueOf(c); System.out.println(s1+2);
//方法三 调包装类中的toString (基本数据类型 变量) String s2=Integer.toString(c); System.out.println(s2+2); } }
package com.oracle.demo01; public class Demo02 { public static void main(String[] args) { //基本数据类型 转 包装类型
int转Integer: 这实际上就是有参构造; Integer i1= new Integer(1); Integer i3=Integer.valueOf(2); //字符串-->包装类型,但必须是数值类型的字符串 Integer i2=new Integer("1"); Integer i4=Integer.valueOf("2"); 通过包装类.valueof()方法来转:int转Integer: //包装类型——》基本数据类型 int i5=i1.intValue(); i1是前面转的Integer类型的变量 }}
package com.oracle.demo01 public class Demo03 { public static void main(String[] args) { //自动装箱:基本数据类型-》包装类型 /*Integer i=1;// Integer i= new Integer(1); //自动拆箱:包装类型-》基本数据类型 int sun=2+i;//int sum=i.intvalue()+2; System.out.println(sun);//3*/ Integer i1=500; Integer i2=500; System.out.println(i1==i2);//false因为i是Integet类型是对象,所以他们比较的是地址,所以地址肯定不一样 System.out.println(i1.equals(i2));//true 因为这里i用的是equals()方法比较的是内容所以i和i2的内容一样都是555 //只更改值,-128--127 byte常量池因为127是byte类型的,byte有常量池;
如果i3和i4的数值一样,那么就不会生成一个新的对象;直接把i3的 值赋值给i4;也就是把i4的地址给i3;那么也就不会生成新的对象实际上i4就是i3 Integer i3=127; Integer i4=127; System.out.println(i3==i4);//true System.out.println(i3.equals(i4));//true } }