Java——包装类(Wrapper)

莫道桑榆晚,为霞尚满天。这篇文章主要讲述Java——包装类(Wrapper)相关的知识,希望能为你提供帮助。
2.7包装类(Wrapper)
基本数据类型由于不是类,不能够使用java类库里提供的大量的方法。所有在设计上,我们让每一个基本数据类型都对应一个类,同时数据存储的范围还不变。此时相当于基本数据类型就具有了类的特点。针对八种基本定义相应的引用类型—包装类(wrapper 或封装类)。有了类的特点,就可以调用类中的方法。

Java——包装类(Wrapper)

文章图片

 
 
2.7.1 装箱基本数据类型包装成包装类的实例      ---装箱
通过包装类的构造器实现:
int i = 500;     Integer t = new Integer(i);
还可以通过字符串参数构造包装类对象:
【Java——包装类(Wrapper)】Float f = new Float(“4.56”);
Long l = new Long(“asdf”);   //NumberFormatException
2.7.2 拆箱获得包装类对象中包装的基本类型变量      ---拆箱
调用包装类的.xxxValue()方法:
boolean b = bObj.booleanValue();
JDK1.5之后,支持自动装箱,自动拆箱。但类型必须匹配。
2.7.3 字符串和基本数据类型的相互转换①字符串转换成基本数据类型
通过包装类的构造器实现:
int i = new Integer(“12”);
通过包装类的parseXxx(String s)静态方法:
Float f = Float.parseFloat(“12.1”);
②基本数据类型转换成字符串
用字符串重载的valueOf()方法:
String fstr = String.valueOf(2.34f);
更直接的方式:
String intStr = 5 + “”
2.7.4 包装类用法举例
int i = 500;
Integer t = new Integer(i);
装箱:包装类使得一个基本数据类型的数据变成了类。
有了类的特点,可以调用类中的方法。
String s = t.toString(); // s = “500“,t是类,有toString方法
String s1 = Integer.toString(314); // s1= “314“  将数字转换成字符串。
String s2=“4.56”;
double ds=Double.parseDouble(s2);     //将字符串转换成数字
拆箱:将数字包装类中内容变为基本数据类型。
int j = t.intValue(); // j = 500,intValue取出包装类中的数据
包装类在实际开发中用的最多的在于字符串变为基本数据类型。
String str1 = "30" ;
String str2 = "30.3" ;        
int x = Integer.parseInt(str1) ;             // 将字符串变为int型
float f = Float.parseFloat(str2) ; // 将字符串变为int型
 
我们需要掌握的:
基本数据类型、包装类、String类之间的转换!
Java——包装类(Wrapper)

文章图片

 
 
简易版:
①基本数据类型与对应的包装类有自动装箱、自动拆箱
如:int i = 10;
          Integer i1 = i; //自动装箱
          int j = i1; //自动拆箱
②基本数据类型、包装类----> String类:调用String类的重载的valueOf(Xxx xx);
  String类----> 基本数据类型、包装类:调用相应的包装的parseXxx(String str);
注意:String str = "123";
                int i = (int)str; 是错误的转法。
特别的Boolean类型的  赋值有误不会报异常,除了正确的返回true  其他一律返回false
代码:
package com.atguigu.java;
import org.junit.Test;
③基本数据类型包装类及String之间的相互转换
public class TestWrapper {
            //基本数据类型、包装类与String类之间的转换
            @Test
            public void test2(){
                          //基本数据类型、包装类 ---> String类:调用String类的重载的valueOf(Xxx x)方法
                          int i1 = 10;
                          String str1 = i1 + ""; //"10"
                          Integer i2 = i1;
                          String str2 = String.valueOf(i2);
                          String str3 = String.valueOf(true); //"true"
                          str2 = i2.toString();
                          System.out.println(str3);
                          //String类---> 基本数据类型、包装类:调用包装类的parseXxx(String str)方法
                          int i3 = Integer.parseInt(str2);
                          System.out.println(i3);
                          boolean b1 = Boolean.parseBoolean(str3);
                          System.out.println(b1);
                          //int i4 = (int)str2;
            }
            //基本数据类型与包装类之间的转化
            @Test
            public void test1(){
                          int i = 10;
                          System.out.println(i);
                          boolean b = false;
                          //基本数据类型---> 对应的包装类:调用包装类的构造器
                          Integer i1 = new Integer(i);
                          System.out.println(i1.toString());
                         
                          Float f = new Float("12.3F");
                          System.out.println(f);
                          //java.lang.NumberFormatException
                          //i1 = new Integer("12abc");
                          //System.out.println(i1);
                          //对于Boolean来讲,当形参是"true"返回true,除此之外返回false。
                          Boolean b1 = new Boolean("false");
                          System.out.println(b1);
                         
                          b1 = new Boolean("truea");
                          System.out.println(b1);
                         
                          Order o = new Order();
                          System.out.println("$ "+o.b); //null
                          //包装类---> 基本数据类型:调用包装类Xxx的XxxValue()方法。
                          int i2 = i1.intValue();
                          System.out.println(i2);
                          float f1 = f.floatValue();
                          System.out.println(f1);
                          boolean b2 = b1.booleanValue();
                         
                          //JDK5.0以后,自动装箱和拆箱
                          int i4 = 12;
                          Integer i3 = i4; //自动装箱
                          Boolean bb = false;
                         
                          int i5 = i3; //自动拆箱
            }
}
class Order{
            Boolean b;
}
2.7.5 Junit单元测试类【eclipse快捷键】
快速生成Junit测试类:
当前工程上鼠标右键àBuild Pathà Add Libraries… à Junit à next à 选择Junit4àfinish
Java——包装类(Wrapper)

文章图片

 
 
import org.junit.Test;
 
Junit单元测试类
①当前工程下-右键build path-add libraries-Junit4
②在主类中,创建一个空参的无返回值的方法,(如:public void test1())用于代码的测试,方法上声明:@Test
③导入import org.junit.Test;
④在test1()方法中,进行代码的编写。
⑤测试:双击方法名,右键run as-junit Test即可。
public class TestJunit {
            public static void main(String[] args) {
                          String str = "AA";
                          System.out.println(str);
            }
           
            @Test
            public void test2(){
                         
            }
           
            @Test
            public void test1(){
                          String str = "AA";
                          System.out.println(str);
                          m1();
            }
            public void m1(){
                          System.out.println("hello world");
            }
}
2.7.6 包装类练习题利用Vector代替数组处理:从键盘读入学生成绩(以负数代表输入结束),找出最高分,并输出学生成绩等级。
提示:数组一旦创建,长度就固定不变,所以在创建数组前就需要知道它的长度。而向量类java.util.Vector可以根据需要动态伸缩。
创建Vector对象:Vector v=new Vector();
给向量添加元素:v.addElement(obj);     //obj必须是对象
取出向量中的元素:Object  obj=v.elementAt(0);
注意第一个元素的下标是0,返回值是Object类型的。
计算向量的长度:v.size();
若与最高分相差10分内:A等;20分内:B等;30分内:C等;其它:D等
【代码】
package com.jiang.exer;
 
import java.util.Scanner;
import java.util.Vector;
public class TestScore {
            public static void main(String[] args) {
                          //1.创建Scanner的对象,提示从键盘输入学生的成绩(以负数代表输入结束)
                          Scanner s = new Scanner(System.in);
                          System.out.println("请输入学生的成绩:(以负数代表输入结束)");
            //2.for(; ; ),从键盘依次获取学生的成绩,并填入由Vector v=new Vector()创建的对象v中。
                          Vector v=new Vector();
                          int maxScore = 0; //记录最高分
                          for(; ; ){
                                        int score = s.nextInt();
                                        if(score < 0){
                                                      break;
                                        }
                                        //3.求出所有输入的正的成绩中的最高分
                                        //获取学生成绩中的最高分
                                        if(maxScore < score){
                                                      maxScore = score;
                                        }
                                        //依次将学生成绩村放入v中
                                        Integer score1 = new Integer(score);
                                        v.addElement(score1);
                          }
                          //4.通过v.elementAt(i)依次获取填入v中的元素,同时判断一下各个分数的等级并输出。
                          for(int i = 0; i < v.size(); i++){
                                        Integer score = (Integer)v.elementAt(i);
                                        char level;
                                        if(maxScore - score < = 10){
                                                      level = \'A\';
                                        }else if(maxScore - score < = 20){
                                                      level = \'B\';
                                        }else if(maxScore - score < = 30){
                                                      level = \'C\';
                                        }else{
                                                      level = \'D\';
                                        }
                                        System.out.println("学生成绩为:" + score + ",等级为:" + level);
                          }
            }
}

    推荐阅读