什么是包装类
包装类:基本数据类型对应的引用类型
public static void main(String[] args) {
//0.利用构造方法获取Integer的对象(JDK5以前的方式)
/*因为看到了new 关键字,在Java中,每一次new都是创建了一个新的对象
* 所以下面的两个对象都是new出来的,地址值不一样*/
Integer i1 = new Integer(1);
Integer i2 = new Integer("1");
System.out.println(i1); // 1
System.out.println(i2);// 1
//1.利用静态方法获取Integer的对象(JDK5以前的方式)
/*因为在实际开发中,-128~127 之间的数据,用的比较多
* 如果每次使用都是new对象,那么太浪费内存了
* 所以,提前把这个范围之内的每一个数据都创建好对象
* 如果要用到了不会创建新的,而是返回已经创建好的对象*/
Integer i3 = Integer.valueOf(123);
Integer i4 = Integer.valueOf("123");
Integer i5 = Integer.valueOf("123", 8);
System.out.println(i3);//123
System.out.println(i4);//123
System.out.println(i5);//83
}
public static void main(String[] args) {
//在以前包装类如何进行计算
Integer i1 = new Integer(1);
Integer i2 = new Integer(2);
/*需求:
* 要把两个数据进行相加得到结果3
* 对象之间是不能直接进行计算的
* 步骤:
* 0.把对象进行拆箱,变成基本数据类型
* 1.相加
* 2.把得到的结果再次进行装箱(再变回包装类)*/
int result = i1.intValue() + i2.intValue();
Integer i3 = new Integer(result);
System.out.println(i3); // 3
}
public static void main(String[] args) {
/*在JDK5的时候提出了一个机制:自动装箱和自动拆箱
* 自动装箱:把基本数据类型会自动的变成其对应的包装类
* 自动拆箱:把包装类自动的变成其对象的基本数据类型*/
/*在底层,此时还会去自动调用静态方法valueof得到一个Integer对象,只不过这个动作不需要我们自己去操作了
* 自动装箱的动作:*/
Integer i1 = 5;
//自动拆箱
Integer i2 = new Integer(5);
Integer i = i2;
//在JDK5以后,int和Integer可以看做是同一个东西,因为在内部可以自动转化
}
Integer成员方法
public static void main(String[] args) {
//0.把整数转换成二进制
String str1 = Integer.toBinaryString(100);
System.out.println(str1); // 1100100
//1.把整数转换成八进制
String str2 = Integer.toOctalString(100);
System.out.println(str2); // 144
//2.把整数转换成十六制
String str3 = Integer.toHexString(100);
System.out.println(str3); // 64
//3.将字符串类型的整数转成int类型的整数
//强类型语言:每种数据在Java中都有各自的数据类型
//在计算的时候,如果不是同一种数据类型,是如法直接计算的。
int i = Integer.parseInt("123");
System.out.println(i);
System.out.println(i + 1);//124
/*细节1:
* 在类型转换的时候,括号中的参数只能是数字不能是其他,否则代码会报错
* 细节2:
* 8种包装类中国,除了Character都有对应的parseXxx的方法,惊醒类型转换*/
}
public static void main(String[] args) {
//键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
// String str = sc.next();
// System.out.println(str);
/*弊端:
* 但我们在使用next,nextInt,nextDouble在接收数据的时候,遇到空格、回车、制表符的时候就停止了
* 我们想要的是接收一整行数据
* 约定:
* 以后我们如果想要键盘录入,不管什么类型,统一使用nextLine
* 特点:遇到回车才停止*/
System.out.println("nextLine的使用:");
String str2 = sc.nextLine();
System.out.println(str2);
double v = Double.parseDouble(str2);
System.out.println(v + 1);
}