Java学习笔记-17: 包装类(Wrapper)

包装类(Wrapper)

  • 针对八种基本数据类型定义相应的引用类型—包装类(封装类)

  • 有了类的特点,就可以调用类中的方法,Java才是真正的面向对象

    基本数据类型 包装类

    byte Byte

    short Short

    int Integer

    long Long

    float Float

    double Double

    boolean Boolean

    char Ch

  • 在Object类中

package com.hyb.Class.Object;

import com.sun.org.apache.xpath.internal.operations.Bool;
import org.junit.Test;

/*
包装类的使用
1.掌握基本数据类型与包装类的装换
2.掌握基本数据类型与String的转换
3.包装类的装箱与拆箱,我们都知道
 */
public class WrapperTest {
    //包装类
    @Test
    public void test1(){
        int a=10;
        Integer integer = new Integer(a);
        Integer integer1 = new Integer("123");
        System.out.println(a);
        System.out.println(integer.toString());
        System.out.println(integer1.toString());
        //Integer integer2 = new Integer("123a");
        //System.out.println(integer2.toString());//报错
        //因为本来是int的,“123”只是一个字符串写法,本身不是字符串
        Boolean aBoolean = new Boolean(true);//true
        Boolean bBoolean = new Boolean("True");//true,忽略大小写,但是不能去掉双引号
        Boolean true123 = new Boolean("true123");
        System.out.println(aBoolean);
        System.out.println(bBoolean);
        System.out.println(true123);//false,这里不会报错,Boollean进行了优化
        test_2 test_2 = new test_2();
        System.out.println(test_2.a);//false
        System.out.println(test_2.b);//null,因为Boolean是个null了


    }
    //包装类的装换
    @Test
    public void test2(){
        //包装类转换为基本数据类型
        //类型 变量名=包装类名.类型Value();
        Integer integer1 = new Integer(1);
        int a=integer1.intValue();
        System.out.println(a);
    }
    //包装类的装箱与拆箱
    @Test
    public void test3(){
        int num=10;
        method(num);//并不是将num的值赋给obj,因为一个是类,一个是int的整数,但这是jdk5.0的新特性
        //这便是自动装箱和拆箱
        //自动装箱,便不用new一个包装类
        int a=10;
        Integer b=a;
        System.out.println(b.toString());//10
        //自动拆箱,也不用 <类型 变量名=包装类名.类型Value()>;
        int a1=b;
        System.out.println(a1);//10

    }
    public void method(Object obj){

    }
    //基本数据类型与String之间的转化
    @Test
    public void test4(){
        //方式一:连接运算
        int a=10;
        String str1=a+"";
        System.out.println(str1);//"10"
        //方法二:调用String重写Object中的valueOf方法
        int a1=10;
        String str2=String.valueOf(a1);
        System.out.println(str2);//"10"
        Integer a2=100;
        String str3=String.valueOf(a2);
        System.out.println(a2);//"100"

    }
    //string 转化为基本数据类型和包装类,要调用包装类中《parse+要转换成的类型》
    @Test
    public void test5(){
        String a="123";
        int a1=Integer.parseInt(a);
        System.out.println(a1+1);//a=124
    }

}
class test_2{
    boolean a;
    Boolean b;
}

包装类的面试题

package com.hyb.Class.Object;

import org.junit.Test;

import java.util.Scanner;
import java.util.Vector;


public class WrapperInterview {
    @Test
    public void test1(){
        Object o1=true?new Integer(1):new Double(2.0);
        //上述结果为1.0,因为三元运算符要求统一类型,所以得到1后会提升类型
        System.out.println(o1);
    }
    @Test
    public  void test2(){
        Object o2;
        if(true){
            o2=new Integer(1);
        }
        else{
            o2=new Double(2.0);
        }
        System.out.println(o2);//1

    }

    @Test
    public void test3(){
        Integer integer1 = new Integer(1);
        Integer integer2 = new Integer(1);
        System.out.println(integer1==integer2);
        //
        Integer a=1;
        Integer b=1;
        System.out.println(a==b);
        //
        Integer a1=128;
        Integer b1=128;
        System.out.println(a1==b1);
        /*
        false 我们都知道对象比较是地址,所以不相等
        true
        这是装箱和拆箱的特性,Integer内部定义了IntegerCache,IntegerCache中定义了Intege[]数组
        保存了-128到127的数字,可以直接使用其中元素,不用再去new一个对象了。
        false
        超出了-128到127的范围,相当于new了一个对象
         */

    }


}

package com.hyb.Class.Object;

import java.util.Scanner;
import java.util.Vector;
/*
练习4
利用Vector代替数组处理:从键盘读入学生成绩(以负数代表输入结束),找出
最高分,并输出学生成绩等级。
提示:数组一旦创建,长度就固定不变,所以在创建数组前就需要知道它的
长度。而向量类java.util.Vector可以根据需要动态伸缩。
创建Vector对象:Vector v=new Vector();
给向量添加元素:v.addElement(Object obj); //obj必须是对象
取出向量中的元素:Object obj=v.elementAt(0);
注意第一个元素的下标是0,返回值是Object类型的。
计算向量的长度:v.size();
若与最高分相差10分内:A等;20分内:B等;
30分内:C等;其它:D等
 */
public class WrapperInterview1 {
    public static void main(String[] args) {
        WrapperInterview1 w = new WrapperInterview1();
        w.test4();
    }
    public void test4(){
        Scanner scanner = new Scanner(System.in);
        Vector v = new Vector();
        while (true){
            int In=scanner.nextInt();
            if(In<0){
                break;
            }
            Integer In1=In;
            v.addElement(In1);
        }
        int min=0,max=0;
        min=(int)v.elementAt(0);
        max=(int)v.elementAt(0);
        for (int i = 0; i < v.size(); i++) {

            Object obj=v.elementAt(i);
            //jdk5.0之前
//            Integer obj1=(Integer) obj;
//            int obj2=obj1.intValue();
//            min=obj2;
            //
            if((int)obj<min){
                min=(int)obj;
            }
            if((int)obj>max){
                max=(int) obj;
            }
        }
        System.out.println(min+" "+max);
        if(max-min<10){
            System.out.println("该学生为A等");
        }
        else if(max-min<20){
            System.out.println("该学生为B等");
        }
        else if(max-min<30){
            System.out.println("该学生为c等");
        }
        else{
            System.out.println("其他等级!");
        }
    }
}

你可能感兴趣的:(java学习,java,object)