zoukankan      html  css  js  c++  java
  • Java——包装类(Wrapper)

    2.7包装类(Wrapper)

    基本数据类型由于不是类,不能够使用java类库里提供的大量的方法。所有在设计上,我们让每一个基本数据类型都对应一个类,同时数据存储的范围还不变。此时相当于基本数据类型就具有了类的特点。针对八种基本定义相应的引用类型—包装类(wrapper 或封装类)。有了类的特点,就可以调用类中的方法。

    2.7.1 装箱

    基本数据类型包装成包装类的实例    ---装箱

    通过包装类的构造器实现:

    int i = 500;   Integer t = new Integer(i);

    还可以通过字符串参数构造包装类对象:

    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类之间的转换!

    简易版:

    ①基本数据类型与对应的包装类有自动装箱、自动拆箱

    如: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

    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);

                  }

           }

    }

  • 相关阅读:
    数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
    现代 PHP 新特性系列(六) —— Zend Opcache
    Apache配置参数详解
    Git的常用命令
    PHP如何防止XSS攻击
    CSRF的防御实例(PHP)
    Web安全之CSRF攻击
    PHP五种常见的设计模式
    PHP四种基础算法详解
    php遍历文件的5种方式
  • 原文地址:https://www.cnblogs.com/superjishere/p/11819729.html
Copyright © 2011-2022 走看看