建网站 赚钱,打开百度搜索网站,动画制作大师,wordpress页面调用代码演示#xff1a;
public class IntegerTest01 {public static void main(String[] args) {//把100这个数字经过构造方法包装成对象MyInt myInt new MyInt(100);//doSome()方法虽然不能直接传100,但是可以传一个100对应的包装类型IntegerTest01.doSome(myInt);}public sta…代码演示
public class IntegerTest01 {public static void main(String[] args) {//把100这个数字经过构造方法包装成对象MyInt myInt new MyInt(100);//doSome()方法虽然不能直接传100,但是可以传一个100对应的包装类型IntegerTest01.doSome(myInt);}public static void doSome(Object obj){System.out.println(obj);}
}自己建立的包装类
public class MyInt extends Object{//这种包装类目前是自己手动写的实际开发中我们不需要自己写//8种基本数据类型对应的8种包装类SUN公司已经写好了我们可以直接用int value;public MyInt() {}public MyInt(int value) {this.value value;}Overridepublic String toString() {return String.valueOf(value);}
}需求
调用doSome()方法的时候需要传一个数字进去
问题 但是数字属于基本数据类型而doSome()方法参数的类型是Object 可见doSome()方法无法接受基本数据类型的数字
解决
可以传一个数字对应的包装类进去达到数据转型的作用 疑问
什么是包装类
答案
包装类就是将数据进行包装然后进行传递的作用
作用
方便开发 8种基本数据类型对应的包装类型名是什么
SUN公司已经写好了基本就是对应首字母大写的包装类
基本数据类型 包装类型
byte java.lang.Byte父类Number
short java.lang.Short父类Number
int java.lang.Integer父类Number
long java.lang.Long父类Number
float java.lang.Float父类Number
double java.lang.Double父类Number
boolean java.lang.Boolean父类Object
char java.lang.Character父类Onject
以上8种包装类中重点以java.lang.Integer为代表进行学习其它的类型依葫芦画瓢就行 8种包装类其中6个都是数字对应的包装类他们的父类都是Number可以先研究一下Number中公共的方法
Number是一个抽象类无法实例化对象
Number类中有几个方法这些方法是负责拆箱的 术语
装箱基本数据类型--引用数据类型
拆箱引用数据类型--基本数据类型 代码演示
public class IntegerTest02 {public static void main(String[] args) {//基本数据类型--引用数据类型装箱Integer integernew Integer(100);System.out.println(integer);//引用数据类型--基本数据类型拆箱//.floatValue() 是Integer的父类Number中的其中一个方法float finteger.floatValue();System.out.println(f);//引用数据类型--基本数据类型拆箱int retValueinteger.intValue();System.out.println(retValue);}
}结果由于Integer中的toString方法已经重写了因此输出引用的时候就不再是原始的内存地址了 通过常量获取最大值和最小值
代码演示
public class IntegerTest03 {public static void main(String[] args) {System.out.println(int的最大值Integer.MAX_VALUE);System.out.println(int的最小值Integer.MIN_VALUE);//依葫芦画瓢System.out.println(byte的最大值Byte.MAX_VALUE);}
}结果 自动装箱和自动拆箱
代码演示1
public class IntegerTest04 {public static void main(String[] args) {//自动装箱Integer x100;//自动拆箱int yx;}
}代码演示2
public class StringTest07 {public static void main(String[] args) {//i是引用类型这里是自动装箱//等同于Interger inew Interger(100);Integer i100;//加号两边要求是基本数据类型的数字i是包装类不属于基本数据类型//这里直接自动拆箱//在java5之后编译器才不会报错System.out.println(i1);//101Integer a1000;Integer b1000;//比较的是内存地址System.out.println(ab);//flase//结论只有运算的时候才会自动拆箱不属于运算符号因此不会自动拆箱}
}代码演示3面试
【java中为了提高程序的效率将[-128-127]之间所有的包装对象提前创建好放到了一个方法区的“整数型常量池”中目的是只要用这个区间的数据不需要再new了直接从整数型常量池中取出来用即可】
public class IntegerTest05 {public static void main(String[] args) {Integer i128;Integer z128;System.out.println(iz);//falseInteger x127;Integer y127;System.out.println(xy);//true}
}查看源代码
【源代码中ctrlf搜索-128在类初始化的时候static静态代码块创建出256个对象存储到catch[]数组缓存中】 代码演示 4
public class IntegerTest06 {public static void main(String[] args) {//手动装箱Integer xnew Integer(1000);//手动拆箱int yx.intValue();System.out.println(y);//不是一个数字可以包装成Integer吗//不能运行时会出现异常编译时不会出现异常//Exception in thread main java.lang.NumberFormatException: For input string: 中文//Integer anew Integer(中文);//System.out.println(a);}}图示类型之间的转换有调用哪些方法