前戏

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
  1. public class Playing{
  2. public static void main(String[] args) {
  3. int i = 100;
  4. // 通过new操作符创建Integer实例(不推荐使用,会有编译错误)
  5. //Integer n1 = new Integer(i);
  6. // 通过静态方法valueOf(int)创建Integer实例
  7. //Integer n2 = Integer.valueOf(i);
  8. // 通过静态方法valueOf(String)创建Integer实例
  9. Integer n3 = Integer.valueOf("100");
  10. System.out.println(n3.intValue());
  11. // 类中是严格区分引用类型和基本类型的
  12. Integer n = null; // Integer 引用类型,编译器自动使用Integer.valueOf(int)
  13. int i = n;
  14. }
  15. }

不变类

  1. /*
  2. 一旦创建了Integer对象,该对象就是不变的。
  3. 对两个Integer实例进行比较要特别注意:绝对不能用==比较,因为Integer是引用类型,必须使用equals()比较
  4. */
  5. public class Playing {
  6. public static void main(String[] args) {
  7. Integer x = 127;
  8. Integer y = 127;
  9. Integer m = 99999;
  10. Integer n = 99999;
  11. System.out.println("x == y: " + (x==y)); // true
  12. System.out.println("m == n: " + (m==n)); // false
  13. System.out.println("x.equals(y): " + x.equals(y)); // true
  14. System.out.println("m.equals(n): " + m.equals(n)); // true
  15. }
  16. }

进制转换

  1. public class Playing{
  2. public static void main(String[] args) {
  3. int x1 = Integer.parseInt("100"); // 100
  4. int x2 = Integer.parseInt("100",2); // 256,因为按16进制解析
  5. System.out.println(Integer.toString(100)); // "100",表示为10进制
  6. System.out.println(Integer.toString(100,2)); // "1100100",表示2进制
  7. System.out.println(Integer.toBinaryString(100)); // "1100100",表示2进制
  8. }
  9. }
  10. // 所有的整数和浮点数的包装类型都继承自Number