• 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
  • 相关阅读:
    存储管理:
    小软件推荐:
    python学习之序列化
    python学习之串口编程
    python学习之常用模块
    Linux调试工具strace和gdb常用命令小结
    adjtimex和时钟的几个概念tick,freq,ppm,jiffies
    koji
    top -Hp pid 显示所有的线程
    Neighbour table overflow---- arp表溢出
  • 原文地址:https://www.cnblogs.com/lvlisn/p/16418905.html
Copyright © 2020-2023  润新知