笔记
今天学了基础类库中的比较类comparable和包装类。
> comparable:
就是说如果我的类实现了comparable接口,就说明我的对象具备了comparable比较的能力,这个接口对实现它的每个类的对象进行排序。这种排序被称为类的自然排序,遵循自然规则。
它的方法是int compareTo (T o)
方法的作用是比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零、或整数。
具体实例:
public class Student implements Comparable<Student> {
@Override
public int compareTo(Student stu) {
return this.getAge()-stu.getAge();
}
}
Student 类实现了Comparable接口,并且重写了compareTo方法 ,返回this.getAge()-stu.getAge();如果this.getAge()-stu.getAge()等于正数,就大于,负数就是小于,0则是等于。
Comparator比较器
指的是如果一个类实现了Comparator,那么这个类就具备了比较器的能力。
Comparator也是一个接口,并且是在java.util这个包下。
它的方法是compare(T o1,T o2)
它的作用是用来比较两个参数。根据第一参数小于、等于或大于第二个参数分别返回负数、零和整数。
o1是要比较的第一个对象
o2是要比较的第二个对象
具体实例:
import java.util.Comparator;
public class NameCompartor implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
return s1.getName().compareTo(s2.getName());
}
}
NameCompartor实现了Comparator接口,并且重写了它的方法。方法和compareTo类似,只不过比较的是两个对象s1和s2。
> 包装类
包装类就是将基本数据包装成类。
自动拆箱和自动装箱
将基本数据类型自动转换成引用数据类型
integer i=0;
将引用数据类型自动拆箱称基本数据类型
int t=i;
将10进制转换成2进制
String binaryString=Integer.toBinaryString(10);
System.out.println(binaryString);
将10转换成8进制
String octalString = Integer.toOctalString(10);
System.out.println(octalString);
将10进制转换成16进制
String hexString = Integer.toHexString(10);
System.out.println(hexString);
二进制转换成10进制
String string = Integer.toString(10, 4);
System.out.println(string);
常量池
实例:
Integer i1=127;
Integer i2=127;
System.out.println(i1==i2);
System.out.println(i1.equals(i2));
结果是:true , true
Integer i3=128;
Integer i4=128;
System.out.println(i3==i4);
System.out.println(i3.equals(i4));
结果是:false , true
因为常量池是一个字节(-128到127)如果用==号来比较,则超出了这个值,所以返回false。而equals比较的是值,所以i3.equals(i4)变成了值,所以返回的是true。