数据类型
八大基本数据类型有对应的基本数据类型包装类(八大基本数据类型的包装类都是final修饰,不可更改)
这有个问题:int与Integer,是不是同一种数据类型?
答案:不是的,int为基本数据类型,Integer为包装类型(为类)
了解一点背景:
基本数据类型转化为其对应的数据类型的包装类,其实是装箱和拆箱的操作
装箱:把一个基本数据类型的值转换为对应的包装类的对象
拆箱:把一个包装类对象转换对应的基本类型
从java5开始 提供自动装箱和拆箱。自动装箱:可以直接把一个基本数据类型的值赋给包装类。自动拆箱:同理
事实上,自动装箱和拆箱是一个“语法糖”,只是编译器级别的新特性,其底层依然使用的是手动装箱和拆箱。
//装箱 int abc = 17; Integer num1 = Integer.valueOf(abc); //拆箱
int num2 = num.intValue();
同时,我们可以自己设计包装类
//设计包装类 class IntWapper{ private int value;//被包装的int值 //设定的最大值 最小值 public static final int MAX_VALUE = 34445556; public static final int MIN_VALUE = -34445556; //构造器 public IntWapper(int value) { this.value = value; } public String toBinaryString(int value) { //计算(省略) return "010101"; } }
数据类型的转化(这里介绍String类型的相关转化)
//1.String类型转化为包装类型的两种方法 例如: String str1 = "12233"; Double i1 = new Double(str1); Double i2 = Double.valueOf(str1); System.out.println("--------------------------------"); //2.包装类转化成String类型 Long num2 = 123L; String str2 = num2.toString();//或者String str2 = String.valueOf(num2); System.out.println(str2); System.out.println(str2.length());//此处能够得到字符串的长度,证明已经转化为字符串了 System.out.println("--------------------------------"); //3.基本数据类型转化为String类型,(1)利用二目运算符"+"隐式转化,任何基本类型与字符串相加都变成字符串。
//(2)利用显示的方法是n.toString()或String.valueof(n) String str3 = 17 + ""; System.out.println(str.length()); int num1 = 0; String str4 = String.valueOf(num1); System.out.println(str3); System.out.println(str4); System.out.println("--------------------------------"); //4.String类型转换为基本数据类型 /* * 注意: * String类型转换成int double等数据类型,其数据必须由数字构成 * 若有字母或者其他符号,则程序会报错 */ String str5 = "1234"; int num3 = Integer.parseInt(str5); System.out.println(num3);
//非常少见的
//String类型转化成boolean类型
String str6 = "false";
boolean nn = Boolean.parseBoolean(str6);
System.out.println(nn);
System.out.println("-------------------------");
//String类型转化为char类型
//需要用char类型的数组进行接收
String str7 = "cc";
char[] oo = str7.toCharArray();
for(int j = 0 ; j < oo.length ; j++) {
System.out.println(oo[j]);
}
String c = "12345"; String d = "10"; String e = c + d; System.out.println(e);//输出:1234510 System.out.println("--------------------------------"); int f = 10; String g = f + c; System.out.println(g);//输出:1012345 int ii = Integer.parseInt(c); int top = 10 + ii; System.out.println(top);//输出:12355