前戏
java的数据类型分两种:
- 基本类型:byte、short、int、long、boolean、float、double、char
- 引用类型:所有class和interface类型
引用类型可以赋值为null,表示空,但基本类型不能赋值为null.
基本类型 | 对应的引用类型 |
---|---|
boolean | java.lang.Boolean |
byte | java.lang.Byte |
short | java.lang.Short |
int | java.lang.Integer |
long | java.lang.Long |
float | java.lang.Float |
double | java.lang.Double |
char | java.lang.Character |
public class Playing{
public static void main(String[] args) {
int i = 100;
// 通过new操作符创建Integer实例(不推荐使用,会有编译错误)
//Integer n1 = new Integer(i);
// 通过静态方法valueOf(int)创建Integer实例
//Integer n2 = Integer.valueOf(i);
// 通过静态方法valueOf(String)创建Integer实例
Integer n3 = Integer.valueOf("100");
System.out.println(n3.intValue());
// 类中是严格区分引用类型和基本类型的
Integer n = null; // Integer 引用类型,编译器自动使用Integer.valueOf(int)
int i = n;
}
}
不变类
/*
一旦创建了Integer对象,该对象就是不变的。
对两个Integer实例进行比较要特别注意:绝对不能用==比较,因为Integer是引用类型,必须使用equals()比较
*/
public class Playing {
public static void main(String[] args) {
Integer x = 127;
Integer y = 127;
Integer m = 99999;
Integer n = 99999;
System.out.println("x == y: " + (x==y)); // true
System.out.println("m == n: " + (m==n)); // false
System.out.println("x.equals(y): " + x.equals(y)); // true
System.out.println("m.equals(n): " + m.equals(n)); // true
}
}
进制转换
public class Playing{
public static void main(String[] args) {
int x1 = Integer.parseInt("100"); // 100
int x2 = Integer.parseInt("100",2); // 256,因为按16进制解析
System.out.println(Integer.toString(100)); // "100",表示为10进制
System.out.println(Integer.toString(100,2)); // "1100100",表示2进制
System.out.println(Integer.toBinaryString(100)); // "1100100",表示2进制
}
}
// 所有的整数和浮点数的包装类型都继承自Number