Java 学习笔记 day 9

常用类

Object

toString方法
Object类中定义有public String toString()方法,其返回值是 String 类
型,描述当前对象的有关信息。
当需要通过输出语句输出一个对象时,如System.out.println(person),
将自动调用该对象类的 toString()方法,如果该类中没有重写toString(),那
么默认调用Object类中的toString(),默认输出对象hashCode值.
可以根据需要在用户自定义类型中重写toString()方法
public class Person{
    private String name;
    private int age;
    private int num;

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


    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", num=" + num +
                '}';
    }
}
public class ToStringDemo {
    /*
    Object
        java.lang.Object  是java类体系中最顶级的,万类之祖
        toString()
        当输出一个对象时,回默认调用类中toString()方法,把对象以字符串形式输出
        类中如果没有toString()方法,会调用父类(Object)中的toString()方法

     */
    public static void main(String[] args) {
        Person person=new Person("张三",24,1001);
        System.out.println(person);
    }
}

equals方法

● Object 类中定义有:
● public boolean equals(Object obj) 方法 , 判断对象是否相等的逻辑。
public boolean equals(Object obj) {
return (this == obj);
}
● Object 中的 equals 方法默认使用 == 比较 , 比较的是对象地址 , 这点需
要注意 .
● JDK 提供的一些类,如 String Date 等,重写了 Object equals
法,调用这些类的 equals 方法, x.equals (y) , x y 所引用的对象
是同一类对象且属性内容相等返回 true 否则返回 false
public class Person{
    private String name;
    private int age;
    private int num;

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


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

    @Override
    public boolean equals(Object obj) {
        if(obj==null){
            return false;
        }
        if(this==obj){
            return true;
        }
        if(obj instanceof Person){
            Person person=(Person)obj;
            return this.name.equals(person.name)&&this.age==person.age&&this.num==person.num;
        }
        return false;
    }
}
public class TestEquals {
    public static void main(String[] args) {
        /*
        == 用于基本类型比较时,比较的是值是否相等
           用于引用类型比较时,比较的是两个引用的地址是否相等

        equals()方法用来比较对象中的内容
         */
        Person person=new Person("zhang",23,23);
        Person person1=new Person("zhang",23,23);

        System.out.println(person.equals(person1));

        //Object类中的equal()方法比较的是地址
        //所以其他的类为了比较两个对象中包含的内容是否相等,都对Object类中的equal()方法重写,改为判断对象内容

        //以后如果比较两个对象的地址是否相等时,直接使用==比较即可
        System.out.println(person1==person);
    }
}

Arrays

sort -排序

作用于数组的所有元素
public static void sort(type[] a)
作用于数组指定范围内的元素
将指定的类型数组所有元素按数字升序进行排序。
自定义对象排序
自定义类实现Comparable接口
重写compareTo方法 Arrays
public class A implements Comparable<A>{
    private String name;
    private int age;
    private int num;

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

    @Override
    public String toString() {
        return "A{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", num=" + num +
                '}';
    }

    @Override
    public int compareTo(A o) {
        //return this.age-o.age;
        //return this.num-o.num;
        return this.name.compareTo(o.name);
    }
}
public class TestA {
    public static void main(String[] args) {
        A a1=new A("张三",11,1001);
        A a2=new A("李四",12,1002);
        A a3=new A("赵大",13,1003);
        A a4=new A("王五",14,1004);
        A[] a=new A[4];
        a[0]=a2;
        a[1]=a4;
        a[2]=a3;
        a[3]=a1;
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));

    }
}

binarySearch -使用二分搜索算法搜索指定数组

public static int binarySearch(type[] a, type key)
public static int binarySearch(long[] a,int fromIndex,int
toIndex,long key)
参数:
a - 要搜索的数组。
key - 要搜索的值。
fromIndex - 要排序的第一个元素的索引(包括)。
toIndex - 要排序的最后一个元素的索引(不包括)。
如果key在数组中,则返回搜索值的索引;否则返回负数,表示不存在 Arrays
import java.util.Arrays;

public class ArraysBinarySearch {
    public static void main(String[] args) {
        int[] a = {1, 2, 3, 4, 5, 6, 7};

        //二分查找法,数组必须有序,不存在,返回负数,若存在,返回元素的索引
        int index=Arrays.binarySearch(a, 7);
        System.out.println(index);

        //指定区间查找,包含开始索引,到结束索引-1
        int index1=Arrays.binarySearch(a,0,4,5);
        System.out.println(index1);
    }
}

 copyOf方法

数组复制,将指定数组中的元素复制到一个指定长度的新数组中,并返回
新数组.
static int[] copyOf(int[] a, int newLength)
fill方法
将指定的int值分配给指定的int数组的每个元素。
fill(int[] a, int val)
import java.util.Arrays;

public class ArraysCopy {
    public static void main(String[] args) {
        /*
        数组复制:
           java数组在创建时,指定长度,一旦指定长度不能改变
           将原数组中的内容复制到指定长度的新数组中
         */
        int[] a={1,2,3,4,5};
        int[] b= Arrays.copyOf(a,10);
        System.out.println(Arrays.toString(b));

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值