image.png
package com.Hanjiangxue.javase.integer;
//java中为8种基本数据类型又对应准备了8种包装类型。8种包装类属于引用数据类型,父类为Object
//思考:为什么要再提供8中包装类呢?
public class IntegerTest01 {
//入口
public static void main(String[] args) {
//有没有这种需求:调用doSome方法时需要一个数字进去。
//但是数字属于基本数据类型,而doSome方法参数类型Object。
//可见doSome方法无法接收基本数据类型的数字,那么怎么办呢?可以传一个数字对应的包装类进去。
//先将数字包装成对象。
MyInt m = new MyInt(100);
doSome(m);
}
public static void doSome(Object obj){
System.out.println(obj);
}
}
class MyInt{
int value;
public MyInt() {
}
public MyInt(int value) {
this.value = value;
}
@Override
public String toString() {
return String.valueOf(value);
}
}
package com.Hanjiangxue.javase.integer;
/*
8中基本数据类型包装类型名:
基本数据类型 包装数据类型
---------------------------------------
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(父类 Object)
Number是一个抽象类。
//引用数据类型转向基本数据类型。
byteValue()
shortValue()
intValue()
longValue()
floatValue()
doubleValue()
Integer构造方法:
Integer(int)
Integer(String)
*/
public class IntegerTest02 {
public static void main(String[] args) {
//基本数据类型转换为引用数据类型
Integer i = new Integer(123);//出现横线表示已过时、
//引用数据类型转换为基本数据类型
float f = i.floatValue();
System.out.println(f);
Integer in = new Integer("123");
System.out.println(in);
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
//在JDK1.5之后支持自动装箱和拆箱。
//自动装箱
Integer x = 100;
//自动拆箱。
int y = x;
}
}
package com.Hanjiangxue.javase.integer;
public class IntegerTest03 {
public static void main(String[] args) {
//900是基本数据类型
//x是包装类型
//基本数据类型-->自动转换-->包装类型:自动装箱
Integer x = 100;
System.out.println(x);
//包装类型-->自动转换-->基本数据类型:自动装箱
int y = x;
System.out.println(y);
Integer z = 1000;
System.out.println(z+1);//z自动转换成基本数据类型,因为+号两边为基本数据类型。
Integer a = 1000;
Integer b = 1000;
System.out.println(a == b);//比较的是a,b两个引用的内存地址。==不会自动拆箱
//只有四则运算时才会自动拆箱,自动装箱
}
}
package com.Hanjiangxue.javase.integer;
//Integer重要面试题。
public class IntegerTest04 {
public static void main(String[] args) {
Integer a = 128;
Integer b = 128;
System.out.println(a == b);//false
Integer z = 127;
Integer x = 127;
System.out.println(x == z);//true
//Java中为了提高程序执行效率,将[-128-127]之间的所有包装对象提前创建好,放到一个方法区整数型常量池中
//目的是只要用这个区间的数据不需要在new了,直接从整数型常量池中取出。
//原理:x变量中保存的对象的内存地址和z变量保存的对象内存地址是一样的。
}
}
package com.Hanjiangxue.javase.integer;
//空指针异常:NullPointerException
//类型转换异常:ClassCastException
//数组下标越界异常:ArrayIndexOutOfBoundsException
//数字格式化异常:NumberFormatException
public class IntegerTest05 {
public static void main(String[] args) {
Integer x = new Integer(100);
int y = x.intValue();
System.out.println(y);
//Integer s = new Integer("中文");//运行时出现异常
//重点方法
//static int parseInt(String s)
//静态方法,传参String,返回int
//网页上输入的数字为字符串,所以需要转换成数字。
System.out.println(Integer.parseInt("123"));
System.out.println(Double.parseDouble("12")+1);
//static String toBinaryString(int i)
//将十进制转换成二进制
System.out.println(Integer.toBinaryString(10));
System.out.println(Integer.toHexString(10));
System.out.println(Integer.toOctalString(10));
//static Integer valueOf(int i)
//static Integer valueOf(String s)
System.out.println(Integer.valueOf(1));
System.out.println(Integer.valueOf("12"));
int i = 100;
String s = i+"";
String s1 = String.valueOf(i);
int x1 = Integer.parseInt("123");
Integer xx = Integer.valueOf(100);
int xxx = xx.intValue();
Integer k = Integer.valueOf("123");
String e = String.valueOf(k);
}
}
网友评论