javaSE13-- API_常用类--默认继承Object--toString()--==与equals()[详解]

API_常用类

API应用程序编程接口

API文档

是对Java预定定义的类或接口功能和方法功能的说明文档,目的是提供给开发人员进行使用帮助说明

默认继承Object,

Java中所有类没有显示的继承类,默认继承Object,因为要实现多态(Object类型,可以表示任何类型)

public class ObjectDemo extends Object{

    public static void main(String[] args) {

         ObjectDemo obj = new ObjectDemo();

         int[] a = new int[5];//数组也是继承了Object
               a.hashCode();
}

toString();

输出对象时:会自动调用对象中的toString();如果对象中没有,则会调用Object类中的toString(),对象中的hashCode值转为16进制

return getClass().getName() + "@" + Integer.toHexString(hashCode());

我们为了显示更简单 ,可以在子类中重写toString(),从而调用子类中的.

public class Person extends  Object{

    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
        Person p = new Person("jim",18);

        System.out.println(p);
        System.out.println("info==="+p);

输出

Person{name='jim', age=18}
info===Person{name='jim', age=18}

==与equals()

  1. java基本类型
  2. 比较包装类型
  3. 比较String类型
  4. 比较对象

Java基本类型

  • byte,short,char,int,long,float,double,boolean。他们之间的比较,应用双等号(==),比较的是他们的值。

比较包装类型

  • ==基本类型比较的就是具体的值.
  • ==再对引用类型进行比较的时,比较的时引用的对象地址是否相同
  • equals()一般类重写Object类中equals(),他们有自己的方式,比较的时对象中包含的类容(仅限类容)是否相同
    String s1 = new String("abc");
    String s2 = new String("abc");
     // == 基本类型比较的就是具体的值
     // == 再对引用类型进行比较时,比较的是引用的对象地址是否相同
    System.out.println(s1==s2);

     //一般类都重写Object类中equals(), 他们有自己的实现方式,比较的是对象中包含的内容(具体值)是否相等
    System.out.println(s1.equals(s2));

输出

false
true
附件:equals源码
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

比较String类型

==比较的是内存地址,equal比较的是值

     String s3 = new String("abc");
        String s4 = new String("abc");
        System.out.println(s3==s4);//false
        System.out.println(s3.equals(s4));//true


        String  s1 = "abc";
        String  s2 = "abc";
        System.out.println(s1==s2);//true
        System.out.println(s1.equals(s2));//true

String类

Java中所有字符串,都是String类的对象,值一旦给给定就不能改变,一旦修改描绘重新创建一个新的对象

两种创建方法:

  1. String s = “abc”;

    第一种先在栈中创建一个对String类的对象引用变量s,然后去查找"abc"是否被保存在**字符串常量池中,**如果没有则在堆中创建一个String对象object,

    第二次创建时,常量池已经存在,直接让引用变量指向已有的字符串对象

    • 特点

      jvm会自动根据栈中数据的实际情况来决定是否有必要创建新对象

  2. String s = new String(“abc”)

    一概在队中创建新对象,而不管其字符串值是否相等,是否有必要创建新对象。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值