在Java继承体系中,java.lang.Object类位于顶端(是所有对象的直接或间接父类)。如果一个类没有写extends关键字声明其父类,则该类默认继承java.lang.Object类。Object类定义了“对象”的基本行为,被子类默认继承。
1.Number 类
Number数值类型是byte、double、float、int、long 和 short类的抽象父类,提供把包装类转化成基本数据类型的方法(xxxValue)。
详细请查阅JDK API 及以上文档:
1.2 Interger 是int基本数据类型的包装类,在Interger内部封装了一个final int value 的属性。
1) 构造方法
1 public class Test1 { 2 public static void main(String[] args) { 3 // Integer 属性 4 //System.out.println(Integer.MAX_VALUE); 输出2^31 - 1; 5 //System.out.println(Integer.MIN_VALUE); 输出-2^31; 6 7 // 构造方法 8 int t = 10; 9 String bStr = "20"; 10 Integer t1 = new Integer(t); 11 //可能抛出NumberFormatException异常 12 Integer t2 = new Integer(bStr); 13 System.out.println(t1.toString()); 14 System.out.println(t2.toString()); 15 16 } 17 }
2)int<->Integer<->string类型之间转换
1 public class Test2 { 2 public static void main(String[] args) { 3 // int -> Integer 4 Integer i1 = new Integer(10); 5 Integer i2 = Integer.valueOf(20); 6 7 // Integer -> int 8 int a = i1.intValue(); 9 10 // String -> Integer 11 Integer i3 = new Integer("30"); 12 Integer i4 = Integer.valueOf("40"); 13 14 // Integer -> String 15 System.out.println(i3.toString()); 16 17 // String -> int 18 int b = Integer.parseInt("50"); 19 System.out.println(b); 20 21 //int -> String 22 String str = Integer.toString(10); 23 24 String str2 = Integer.toString(8,2);//将8转化为二进制数 25 System.out.println(str2); //输出二进制 1000; 26 } 27 28 }
3)Comparable接口
查看JDK API文档我们发现对Comparable定义如下:
Comparable 表示具有比较能力,对象可比较大小,还可以强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。
1 public class Test3 { 2 3 public static void main(String[] args) { 4 Integer i1 = new Integer(10);//把包装类转化基本数据类型 5 int a=i1.intValue(); 6 System.out.println(a); 7 8 //(2)Integer的比较 9 Integer i2 = new Integer(20); 10 Integer i3 = new Integer(30); 11 //equals是对象内容进行比较。 12 System.out.println(i2.equals(i3));//输出false ,i2和i3的内容不想相等。 13 14 /*compareTo(), 在JDK API中,java.lang包下面的基本数据类型的封装类都提供了该方法,如 Integer,Float,Byte,Short,Character 等。 15 比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。*/ 16 System.out.println(i2.compareTo(i3));//输出-1,说明该对象i2 小于 指定对象i3; 17 18 } 19 20 }
2. String类
1)String是字符串类型,是引用类型,是“不可变”字符串(内部声明一个private final char value[];),无线程安全问题。在java.lang.String中。
1 public class Test1 { 2 public static void main(String[] args) { 3 String str1 = "abc"; 4 String str2 = "abc"; 5 String Str3 = "abcd"; 6 7 //比较str1与str2的内存地址是否相等? 8 System.out.println(str1 == str2);//输出true;相等! 9 10 } 11 12 }
因为String对象是不可变的,所以可以共享。 通过字面量创建的字符串分配在常量区。
3. 字符串常用方法
1)构造方法
1 import java.io.UnsupportedEncodingException; 2 import java.nio.charset.Charset; 3 4 public class Test2 { 5 public static void main(String[] args) { 6 //在堆区初始化一个空字符串 7 String str1 = new String(); 8 9 //通过一个字节数组构建一个字符串 10 byte[] bytes = {97,98,99}; 11 //通过使用平台的默认字符集解码指定的byte 数组 12 //System.out.println(Charset.defaultCharset()); //输出GBK ,不同平台的默认字符集解码不同的。GBK是在Windows简体中文平台下的字符解码; 13 String str2 = new String(bytes); 14 System.out.println(str2); 15 16 byte[] byte2 = {-42,-48}; 17 String str3 = null; 18 try { 19 //使用指定的字符集对字节序列进行解码 20 str3 = new String(byte2,"GBK"); 21 } catch (UnsupportedEncodingException e) { 22 e.printStackTrace(); 23 } 24 System.out.println(str3); 25 26 //对一个UTF-8的字节序列进行解码 27 byte[] byte3 = {-28,-72,-83,-28,-72,-83}; 28 29 try { 30 String str4 = new String(byte3,"UTF-8");//输出中中 31 String str5 = new String(byte3,0,3,"UTF-8");//输出中,是0-3位的数; 32 System.out.println("str4:"+ str4); 33 System.out.println("str4:"+ str5); 34 } catch (UnsupportedEncodingException e) { 35 e.printStackTrace(); 36 } 37 38 } 39 40 }