day13--Java常用类

打印 上一主题 下一主题

主题 931|帖子 931|积分 2793

Java常用类

1.包装类

1.1什么是包装类?

Java 是面向对象的语言,但不是“纯面向对象”的,比如我们经常用到的基本数据类型就不是对象。
在我们实际应用中,经常需要将基本数据转换成对象,以便于操作。为了解决这个不足,Java在设计类时,为每个基本数据类型分别设计了一个对应的类进行代表,这样的八个与基本数据类型对应的类统称为包装类(Wrapper Class)
8种基本数据类型,分别对应一个包装类。包装类均位于java.lang包:
基本数据类型包装类byteBytebooleanBooleanshortShortcharCharactherintIntegerlongLongfloatFloatdoubleDouble在这八个类中,除了Character和Boolean以外,其他的都是“数字型”,“数字型”都是java.lang.Number的子类。
1.2为什么要用包装类?(优点)


  • 某些方法的参数必须是对象,为了能让基本数据类型的数据能作为参数,因此提供包装类
  • 包装类还可以提供更多的功能
  • 其他特别重要的功能:比如可以实现字符串和基本数据类型之间的转换
例子1:让基本数据类型的数据能作为参数
  1. package li.normalclass.warpper;
  2. import java.util.ArrayList;
  3. import java.util.Date;
  4. import java.util.List;
  5. public class TsetWarpper1 {
  6.     public static void main(String[] args) {
  7.         // 1. 某些方法的参数必须是对象,为了能让基本数据类型的数据能作为参数,因此提供包装类
  8.         List list = new ArrayList();
  9.         list.add(new String("xxxx"));
  10.         list.add(new Date());
  11.         //自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象
  12.         list.add(80);//自动装箱,早期应该写成:   list.add(new Integer(80));
  13.         list.add(3.14);//自动装箱,早期:list.add(new Double(3.14));
  14.         System.out.println(list);
  15.     }
  16. }
复制代码
自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象
例子2:包装类还可以提供更多的功能
  1. package li.normalclass.warpper;
  2. import java.util.ArrayList;
  3. import java.util.Date;
  4. import java.util.List;
  5. public class TsetWarpper1 {
  6.     public static void main(String[] args) {   
  7.         // 2. 包装类还可以提供更多的功能
  8.         System.out.println(Integer.MAX_VALUE);//2147483647
  9.         
  10.         System.out.println(Integer.MIN_VALUE);//-2147483648
  11.         
  12.         System.out.println(Integer.SIZE);//32bit
  13.         
  14.         System.out.println(Integer.TYPE);//底层包装的基本数据类型
  15.     }
  16. }
复制代码
例子3:实现字符串和基本数据类型之间的转换
  1. package li.normalclass.warpper;
  2. public class TsetWarpper1 {
  3.     public static void main(String[] args) {
  4.         //3. 其他特别重要的功能:比如可以实现字符串和基本数据类型之间的转换
  5.         //比如用户在网页表单输入的所有内容,java接收完之后会全部识别为String字符串类型,这时候就要我们将字符串根据需要转变为不同的数据类型
  6.         //注意字符串不能强制转换成数值类型,不能用强制转换
  7.         
  8.         int age  = Integer.parseInt("18");
  9.         double pi = Double.parseDouble("3.14");
  10.         System.out.println(age);
  11.         System.out.println(pi);
  12.     }
  13. }
复制代码
1.3如何使用包装类

1.3.1自动装箱和自动拆箱


  • 自动装箱和自动拆箱就是将基本数据类型和包装类之间进行自动的互相转换。
    JDK1.5之后,Java引入了自动装箱(autoboxing)和自动拆箱(unboxing)

  • 自动装箱:基本类型的数据处于需要对象的环境中时,会自动转换为“对象”。
  • 自动拆箱:每当需要一个值时,对象会自动转成基本数据类型,没必要去显示调用intvalue()、doubleValue()等方法。
    如        Integer  i = 5; int j = i ; //这样的过程就是自动拆箱

我们可以用一句话总结自动拆箱和自动装箱:
自动装箱过程是通过调用包装类valueOf()方法实现的,而自动拆箱过程是通过调用包装类xxxValue()方法实现的
xxx代表对应的基本数据类型,如intValue()、doubleValue()等
例子1:自动拆箱和自动装箱
  1. package li.normalclass.warpper;
  2. public class TsetWapper2 {
  3.     public static void main(String[] args) {
  4.         //如何使用包装类
  5.         //1.自动拆箱和自动装箱
  6.         Integer integer = new Integer(80);//手动装箱
  7.         int i = integer.intValue();//手动拆箱
  8.         //从jdk1.5开始支持自动装箱和自动拆箱
  9.         Integer integer1 = 80;//自动装箱
  10.         int i1 = integer;//自动拆箱
  11.         System.out.println(integer1+"\t"+i1);
  12.     }
  13. }
复制代码
例子2:自动装箱和自动拆箱的底层封装
前置知识:


    • equals与==的区别:


  • ==是判断两个变量或实例是不是指向同一个内存地址,equals是判断两个变量或实例所指向的内存空间的值是不是相同
  • ==是指对内存地址进行比较 ,equals()是对字符串的内容进行比较
  • ==指引用是否相同, equals()指的是值是否相同



    • Integer.valueOf();//自动装箱底层代码源码:

[code]public static Integer valueOf(int i) {    if (i >= IntegerCache.low && i

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表