Java 入门 29 常用API Object StringBuilder 案例

 

 Student类 (重写toString() ,equals())

package com.ITheima.API_Object;

import java.util.Objects;

public class Student {
    private String name;
    private char sex;
    private int age;

    public Student() {
    }

    public Student(String name, char sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    //重写toString()
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", sex=" + sex +
                ", age=" + age +
                '}';
    }

    /**
     * 定制相等规则
     *  两个对象的内容一样 旧认为是相等的
     *  s1.equals(s2)
     *  比较者 s1==this
     *  被比较者 s2==>o
     */
//    //重写equals
//    @Override
//    public boolean equals(Object o){
//        //判断传入的是否是Student类型的实例
//        if(o instanceof Student){
//            // 多态转换类型
//            Student s2=(Student)o;
//            return this.name==s2.name&&this.age==s2.age&&this.sex==s2.sex;
//        }else{
//            return true;
//        }
//    };


    @Override
    public boolean equals(Object o) {
        //1 判断是否是同一个对象比较, 如果是 返回true
        if (this == o) return true;
        //2 如果a 是null  则返回false  如果a 不是学生类型 则返回false ...Student !=...Pig
        if (o == null || getClass() != o.getClass()) return false;
        //3 说明o 一定是学生类型 且不为null
        Student student = (Student) o;
        return sex == student.sex && age == student.age && Objects.equals(name, student.name);
    }

}
View Code

Test类 toString()

package com.ITheima.API_Object;

/**
 * 目标:掌握Object类中toString 方法的使用
 */
public class Test {
    public static void main(String[] args) {
        /**
         *
         *Object.toString()方法 返回对象的引用地址
         * 存在的意义是 为了让我们在类中重写该方法用来查看 对象的内容
         */
        Student s = new Student("张三", '男', 18);
        String rs=s.toString();
        System.out.println(rs);
        System.out.println(s.toString());
        //直接输入对象变量,默认可以省略toString调用不屑
        System.out.println(s);
    }
}
View Code

Test1 equals()

package com.ITheima.API_Object;

public class Test1 {
    public static void main(String[] args) {
        Student s1=new Student("张三",'男',11);
        Student s2=new Student("张三",'男',11);
        //Object.equals(object1) 比较两个对象的地址是否相等  重写Object.equals(obj1)
        System.out.println(s1.equals(s2));//true
        System.out.println(s1==s2);//false  == 也是比较两个对象的地址
    }
}
View Code

package com.ITheima.API_Object;

import java.util.Objects;

public class Test2 {
    public static void main(String[] args) {
        String s1 = null;
        String s2 = new String("itheima");
        String s3 = new String("itheima");


        //System.out.println(s1.equals(s2));//留下了应还,可能会出现空指针异常

        //Objects.equals(s1,s2)
        System.out.println(Objects.equals(s1, s2));

        /**
         *
         public static boolean equals(Object a, Object b) {
         return (a == b) || (a != null && a.equals(b));
         }
         */

        /**
         * Objects.isNull(s1) 与 s1==null 等同
         */
        System.out.println(s1==null);//true
        System.out.println(Objects.isNull(s1));//true

        System.out.println(s2 == null);//false
        System.out.println(Objects.isNull(s2));//false
    }
}
View Code

 

package com.ITheima.API_Object;


/**
 * 目标:学会使用StringBuilder操作字符串 ,最终还需要知道它性能好的原因
 */
public class Test3 {
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder();//""
        sb.append("a");
        sb.append("b");
        sb.append("c");
        sb.append("d");
        sb.append("1");
        sb.append("false");
        sb.append("3.3");
        System.out.println(sb);//abcd1false3.3

        StringBuilder sb1=new StringBuilder();
        //支持链式编程
        sb1.append("a").append("b").append("c").append("信");
        System.out.println(sb1);//abc信

        //反转  reverse
        sb1.reverse().append(19);
        System.out.println(sb1);


        //注意 StringBuilder只是拼接字符串的手段:效率好
        StringBuilder sb2=new StringBuilder();
        //最终的目的还是要恢复成String类型
        String str=sb2.toString();
        check(str);
    }

    public static void check(String str){
        System.out.println(str);
    }
}
View Code

 

 

 

案例

 

 

 

package com.ITheima.API_Object;

public class Test5 {
    public static void main(String[] args) {
        int [] arr={1,2,3,4,5,6,9};
        int [] arr1=null;
        System.out.println(showArr(arr));
        System.out.println(showArr(arr1));
    }

 /*   public static String showArr(int[] arr) {
        StringBuilder str = new StringBuilder("");
        if (arr != null) {
            if (arr.length == 0) {
                String code = str.append("[]").toString();
                return code;
            } else {
                str.append("[");
                for (int i = 0; i < arr.length; i++) {
                    if (i == arr.length - 1) {
                        str.append(arr[i] );
                    } else {
                        str.append(arr[i] + ",");
                    }
                }
                str.append("]");
                String str1 = str.toString();
                return str1;
            }
        } else {
            return null;
        }
    }

    ;*/

    //黑马代码
    public static String showArr(int [] arr){
        if(arr!=null){
          StringBuilder str=new StringBuilder("[");
            for (int i = 0; i < arr.length; i++) {
                str.append(i==arr.length-1?(arr[i]):(arr[i]+","));
            }
            str.append("]");
            return str.toString();
        }else{
            return null;
        }
    }
}
View Code

 

posted @ 2022-06-28 11:34  还有什么值得拥有  阅读(15)  评论(0编辑  收藏  举报