Java学习笔记-处理对象

处理对象

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

  • 打印对象和toString方法

    public class Person
    {
        private String name;
        public Person(String name)
        {
            this .name=name;
        }
    }
    public class PrintObject
    {
        public static void main(String[] args) {
            Person p=new Person("齐天大圣");
            System.out.println(p);
            System.out.println(p.toString());//与上面打印对象 
        }
    }
    

    可见打印对象输出的结果和打印引用调用toString方法一样,因此所有Java对象都具有toString方法

    不仅如此,所有Java对象都可以和字符串进行连接运算,当Java对象和字符串进行连接运算时,系统自动调用Java对象toString()方法的返回值和字符串进行连接运算,即下面两行代码实现结果也等效

    var p=p+" ";
    var p=p.toString()+" ";
    

    toString方法是一个特殊的方法,它是一个“自我描述”的方法,该方法通常用于实现这样一个功能:当程序员直接打印该对象时,系统将会输出该对象的“自我描述”信息,用以告诉外界该对象具有的状态信息。

    Object类提供的toString()方法总是返回该对象实现类的“类名+@+hashCode”值,这个返回值并不能真正实现“自我描述”的功能,因此如果用户需要自定义类能实现“自我描述”的功能,就必须重写Object类的toString()方法,例如:

    public class Apple
    {
        private String color;
        private double weight;
        public Apple(){}
        public Apple(String color,double weight)
        {
            this.color=color;
            this.weight=weight;
        }
        //重写toString方法,实现自我描述功能
        public  String toString()
        {
           return "一个苹果,颜色是:"+color
           +" 重量是:"+weight+"kg";
        }
    
        public static void main(String[] args) {
            Apple a=new Apple("红色",1);
            System.out.println(a.toString());
             System.out.println(a);
        }
    }
    

    从上面的运行结果可以看出,通过重写Apple类的toString()方法,就可以让系统在打印Apple对象时打印出该对象的“自我描述”信息。

    大部分时候,重写toString()方法总是返回该对象的令人感兴趣的信息所组成的字符串。通常可返回如下格式的字符串:

    类名[field=值1,field=值2,…=]

    return "Apple[color=" + color + ",wight=" + weight + "]";
    
  • ==和equals方法

    == : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象(基本数据类型 == 比较的值,引用数据类型 == 比较的是内存地址)。

    equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:

    Object的equals方法是比较的对象的内存地址;

    重写的String方法是比较的对象的值。

    Java程序中测试两个变量是否相等有两种方法,一种是利用==运算符,另一种是利用equals()方法

    当使用==来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数值类型(不严格要求两个数值类型也一定要相同),则只要两个变量的值相等,则将返回true值。

    但对于两个引用类型变量,只有它们指向同一个对象时,==判断才会返回true。==不可用于比较类型上没有父子关系的两个对象。

    public class Practice1
    {
        public static void main(String[] args)
        {
            int a=15;
            double b=15.00d;
            System.out.println(a==b);
            String c="500f";
            String d="500f";
            String e=d;
            System.out.println(d.equals(e));
            System.out.println(d==e);
            //System.out.println(new Practice1()==d);   因为d和Practice1类没有继承关系,所以语法格式不合格
            System.out.println(new Practice1().equals(d));
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值