基本数据类型的包装类

Java 是面向对象的编程语言,但它也包含了8种基本数据类型,这8个基本类型不支持面向对象的编程机制,基本数据类型的数据也不具备“对象” 的特性:没有属性方法可以被调用。为了解决8个基本数据类型不能当成 Object 类型变量使用的问题,Java 提供了包装类的概念,为8个基本类型分别定义了响应的引用类型,并称之为基本数据类型的包装类。

基本数据类型 包装类
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
boolean Boolean
public class Primitive2Wrapper {
    public static void main(String[] args) {
        boolean b1 = true;
        //通过构造器将b1基本类型变量包装成包装类对象
        Boolean b1Obj = new Boolean(b1);
        int it = 5;
        Integer itObj = new Integer(it);
        //把一个字符串转换成 Float 对象
        Float f1 = new Float("4.5");
        //把一个字符串转化为 Boolean 对象
        Boolean bObj = new Boolean("false");
        //异常
        //Long lObj = new Long("ddd");
    }
}

如果希望取出包装类对象中包装的基本类型变量,可以使用包装类提供的xxxValue() 方法

//取出 Boolean 对象中的 boolean 变量
boolean bb = bObj.booleanValue(); 

第6章 面向对象下

JDK1.5 提供了自动装箱和自动拆箱机制,所谓自动装箱就是可以把一个基本类型变量直接赋给对应的包装类变量,或者赋给 Object 变量;自动拆箱与之相反,允许直接把包装类对象直接赋给一个对应的基本类型变量。

public class AutoBoxingUnboxing {
    public static void main(String[] args) {
        //直接把一个基本类型变量赋给 Integer
        Integer intObj = 5;
        Object boolObj = true;
        //直接把一个 Integer 对象赋给 int 类型变量
        int it = intObj;
        if(boolObj instanceof Boolean){
            boolean b = (Boolean)boolObj;
            System.out.println(b);
        }
    }
}

除此之外,包装类还可以实现基本类型变量和字符串之间的转换,出了 Character 之外的所有包装类都提供了一个 parseXxx(String s) 静态方法,用于将一个特定字符串装换成基本类型变量;除此之外,在 String 类里也提供了多个重载
valueOf() 方法,用于将基本类型变量转换为字符串

public class Primitive2String {
    public static void main(String[] args) {
        String intStr = "123";
        //把一个特定的字符串转换为 int 变量
        int it = Integer.parseInt(intStr);
        String floatStr = "4.56";
        float ft = Float.parseFloat(floatStr);
        //把一个 float 变量转换成 String 变量
        String ftStr = String.valueOf(2.345f);
        //把一个 double 变量转换成 String 变量
        String dbStr = String.valueOf(3.456);
        //把一个 boolean 变量转换成 String 变量
        String boolStr = String.valueOf(true);
    }
}

基本类型变量和字符串之间的转换关系
第6章 面向对象下

处理对象

Java 对象都是 Object 类的实例, 都可以调用该类中定义的方法,这些方法是处理 Java 对象的通用方法。

打印对象和 toString 方法

class Person11{
    private String name;
    public Person11(String name){
        this.name = name;
    }
    public void info(){
        System.out.println("名字为:" + name);
    }
}

public class PrintObject {
    public static void main(String[] args) {
        Person11 p = new Person11("大圣");
        //打印 p 所引用的 Person11 对象
        //这里实际上输出的是Person11对象的toString()方法返回值
        System.out.println(p); 
    }
}

toString() 方法是 Object 类里的一个实例方法,所有 Java 类都是 Object 的子类,因此所有 Java 对象都具有 toString 方法。不仅如此,所有 Java 对象都可以和字符串进行连接运算,当 Java 对象和字符串进行连接运算时,系统自动调用 Java 对象的toString() 方法的返回值和字符串进行连接运算。
toString() 方法是一个非常特殊的方法,他是一个“自我描述”方法,该方法通常用于实现这样一个功能:当程序员直接打印该对象时,系统将会输出该对象的自我描述信息。
toString() 方法总是返回该对象实现类的类名[email protected]+hashCode值,因此,如果想要实现自我描述功能,必须重写 Object 类的 toString() 方法。

class Apple11{
    private String color;
    private double weight;
    public Apple11(String color, double weight){
        this.color = color;
        this.weight = weight;
    }
    public String toSring(){
        return "一个苹果的颜色是:" + color + "重量是:" + weight;
    }
}

public class TestToString {
    public static void main(String[] args) {
        Apple11 a = new Apple11();
        System.out.println(a);
    }
}

== 和 equals 比较运算符

相关文章: