常用类
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));
}
}