黑马程序员——Java基础---Object类和包装类

-----<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一.Object类

Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。在不明确给出超类的情 况下,Java会自动把Object作为要定义类的超类。可以使用类型为Object的变量指向任意类型的对象。Object类有一个默认构造方法 pubilc Object(),在构造子类实例时,都会先调用这个默认构造方法。Object类的变量只能用作各种值的通用持有者。要对他们进行任何专门 的操作,都需要知道它们的原始类型并进行类型转换。

下面对常用的类进行介绍:

<span style="white-space:pre">	</span>public class Test
<span style="white-space:pre">	</span>{
    <span style="white-space:pre">	</span>public static void main(String[] args)
    <span style="white-space:pre">	</span>{
        /*
         * 字符串比较 
         * String类重写了Object父类的equals()方法
         */
        String str1 = "hello";
        String str2 = "hello";
        System.out.println("str1和str2值是否相等:" + str1.equals(str2));
        System.out.println("str1和str2是否相同:" + (str1 == str2));
        String str3 = new String("hello");
        System.out.println("str1和str3值是否相等:" + str1.equals(str3));
        System.out.println("str1和str3是否相同:" + (str1 == str3));
        String str4 = new String("hello");
        System.out.println("str3和str4值是否相等:" + str3.equals(str4));
        System.out.println("str3和str4是否相同:" + (str3 == str4));
        System.out.println("----------------------------");

        // Object比较
        Object obj1 = new Object();
        Object obj2 = new Object();
        // Object类的equals()方法实际上是使用==运算符进行判断
        System.out.println("obj1和obj2值是否相等:" + obj1.equals(obj2));
        System.out.println("obj1和obj2是否相同:" + (obj1 == obj2));
        System.out.println(<span style="font-family: Arial;">"----------------------------"</span>);

        // equals方法
        Animal a1 = new Animal("猫", 4);
        Animal a2 = new Animal("狗", 2);
        System.out.println("a1和a2值是否相等:" + a1.equals(a2));
        System.out.println("a1和a2是否相同:" + (a1 == a2));
        System.out.println("----------------------------");

        // hashCode方法
        System.out.println("第一次获取对象a1的hashCode值:" + a1.hashCode());
        System.out.println("第二次获取对象a1的hashCode值:" + a1.hashCode());
        System.out.println("第一次获取对象a2的hashCode值:" + a2.hashCode());
        System.out.println("----------------------------------");

        // toString方法
        System.out.println(a1);
        System.out.println(a2);
        String[] names = { "tom", "jack", "alice" };
        System.out.println(Arrays.toString(names));
        // 使用包装类的toString方法将基本数据类型转换为字符串
        String str = Integer.toString(13);
        System.out.println(str);
        System.out.println("------------------------------");

        // finalize方法
        Animal a3 = null;
        /*
         * for(int i=0;i<10000;i++){ 
         *  a3=new Animal("猫"+i, i); 
         * }
         */
        System.out.println("-----------------------------");
        // clone方法
        try
        {
            Animal a4 = (Animal) a1.clone();
            System.out.println("原a1的名字:" + a1.name);
            System.out.println("原a4的名字:" + a4.name);
            a4.name = "猴";
            System.out.println("现a1的名字:" + a1.name);
            System.out.println("现a4的名字:" + a4.name);
        } catch (CloneNotSupportedException e)
        {
            e.printStackTrace();
        }
    <span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>
 <span style="white-space:pre">	</span>//动物类Animal 要实现对象的克隆,必须实现Cloneable接口
 <span style="white-space:pre">	</span>class Animal extends Object implements Cloneable
<span style="white-space:pre">	</span>{<span style="white-space:pre">	</span>
    <span style="white-space:pre">	</span>String name;
    <span style="white-space:pre">	</span>int age;
   <span style="white-space:pre">	</span> public Animal(String name, int age)
    <span style="white-space:pre">	</span>{
        this.name = name;
        this.age = age;
    <span style="white-space:pre">	</span>}   
      //如果自定义类想比较对象的属性是否相等,需要重写父类的equals方法
      <span style="white-space:pre">	</span>public boolean equals(Object obj)
    <span style="white-space:pre">	</span>{
        Animal a = (Animal) obj;// 向下转型
        if (this.name.equals(a.name) && this.age == a.age)// 判断属性值是否相等
        {
            return true;
        } else
        {
            return false;
        }
    <span style="white-space:pre">	</span>}   
      //重写父类的toString方法,返回更易读的信息 
      //直接输出对象时,会自动调用toString()方法   
    <span style="white-space:pre">	</span>public String toString()
    <span style="white-space:pre">	</span>{
        return "Animal[name=" + name + ",age=" + age + "]";
    <span style="white-space:pre">	</span>}    
     //重写父类的finalize方法   
    <span style="white-space:pre">	</span>protected void finalize() throws Throwable
    <span style="white-space:pre">	</span>{
        super.finalize();
        System.out.println("回收资源。。。");
    <span style="white-space:pre">	</span>}   
     //重写父类的clone方法   
    <span style="white-space:pre">	</span>protected Object clone() throws CloneNotSupportedException
    <span style="white-space:pre">	</span>{
        return super.clone();
    <span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值