zoukankan      html  css  js  c++  java
  • Java入门5---Object类、String类、包装类

    一、Object类

     java.lang.Object类,是所有类的根父类

    1.== 和equals的比较

    ==:

    1. 基本数据类型:根据基本数据类型的值判断是否相等,相等返回true,反之返回false
      1. 注:两端数据类型可以不同,在不同的情况下,也可以返回true。
    2. 引用数据类型:比较类型变量的地址值是否相等。

    equals():

    1. 只能处理引用类型变量
    2. Object类,发现equals()仍然比较的两个引用变量的地址值是否相等
    3. String类,包装类,File类,Data类这些重写Object类的equals()方法,比较是两个对象的“实体内容”是否完全相同。

    若我们自定义一个类,希望比较两个对象的属性值都相同的情况下返回true的话,就需要重写Object类的equals(Object obj)方法。

    举例1:

            // ==
            // 1.基本数据类型:根据基本数据类型的值判断是否相等,相等返回true,反之返回false
            //  注:两端数据类型可以不同,在不同的情况下,也可以返回true。
            // 2.引用数据类型,比较类型变量的地址值是否相等。
            int i = 12;
            int j = 12;
            System.out.println(i == j); // true
            char c = 12;
            System.out.println(i == c); // true
            float f = 12.0F;
            System.out.println(i == f); // true
            int k = 65;
            char a = 'A';
            System.out.println(k == a); // true
            Object obj1 = new Object();
            Object obj2 = new Object();
            System.out.println(obj1 == obj2);
    
            Person p1 = new Person();
            Person p2 = new Person();
            Person p3 = p1;
            System.out.println(p1 == p2); // false
            System.out.println(p1 == p3); // true
    

    举例2:

    public static void main(String[] args) {
            TestEquals t = new TestEquals();
            t.test1();
    
            // equals():1.只能处理引用类型变量 2.在Object类,发现equals()仍然比较的两个引用变量的地址值是否相等。
            // java.lang.Object类,是所有类的根父类
    
            Person p11 =  new Person();
            Person p12 = new Person();
            System.out.println(p11 == p12); // false
            System.out.println(p11 == p12); // false
    
            // 像String类,包装类,File类,Data类这些重写Object类的equals()方法,比较是两个对象的“实体内容”是否完全相同。
            String str1 = new String("AA");
            String str2 = new String("AA");
            System.out.println(str1 == str2); // false
            System.out.println(str1.equals(str2)); // true
        }
    

      

    二、String类

    1.toString()方法

    (1)当我们输出一个对象的引用时,会调用toString()方法。

    public String toString() {
        getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    

    当我们没有重写Object类的toString()方法时,打印的就是对象所在的类,以及对象实体在堆空间的位置。

    (2)一般我们需要重写Object类的toString()方法,将此对象的各个属性值返回。

    (3)像String类、Date类、File类、包装类都重写了toString()方法。

    三、包装类

    1.包装类

    基本数据类型由于不是类,不能够使用java库里提供的大量的方法,所以在设计上,我们让每一个基本数据类型都对应一个类,同时数据存储的范围还不变。此时相当于基本数据类型就具有了类的特点。这些类即为包装类(wrapper或封装类)。

     

    2.基本数据类型、包装类、String类之间的转换

    总结:

    (1)基本数据类型与对应的包装类有自动装箱、自动拆箱

    int i = 10;
    Integer i1 = i; // 自动装箱
    int j = i1; // 自动拆箱
    

    (2)基本数据类型、包装类--->String类:调用String类的重载的valueOf(Xxx xx);

    String类--->基本数据类型、包装类:调用相应的包装类的parseXxx(String str);

    注意:

    // 错误写法,String和int之间没有关系
    String str = "123";
    int i = (int)str;
    

      

    参考文献:

    【1】Java中字符数组、String类、StringBuffer三者的相互转换 - 功夫 熊猫 - 博客园

    【2】String,StringBuilder,StringBuffer,数组,列表之间的若干转换以及若干数组常用操作方法_java_2017_csdn的博客-CSDN博客_stringbuilder 转数组

  • 相关阅读:
    关于故事和段子
    SQLserver2008数据库备份和还原问题(还原是必须有完整备份)
    百度文库破解方法
    如何识别病毒,转自百度文库,千辛万苦破解出来的
    20个人艰不拆的事实:知道真相的我眼泪掉下来 T.T
    linux学习网站分享
    个人对于腾讯和优酷的看法
    今天去客户现场的一些感想
    基于 Blazui 的 Blazor 后台管理模板 Blazui.Admin 正式尝鲜
    新手福利!Blazor 从入门到砖家系列教程(你真的可以成为砖家)
  • 原文地址:https://www.cnblogs.com/nxf-rabbit75/p/13210326.html
Copyright © 2011-2022 走看看