1.Object
Object是基类,也就是说 Java 中所有类都继承了 Object,子类可以使用 Object 的所有方法。Object类位于java.lang包中。自定义类或者系统提供类全部隐式继承Object,特殊数组也继承
(1) toString
可以将任何一个对象转换成字符串返回,返回值的生成算法:
getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
Object obj=new Object();
System.out.println(obj.toString());//getClass().getName() + '@' + Integer.toHexString(hashCode())
Student stu=new Student();
System.out.println(stu.toString());//stu对象类名称+ '@' + Integer.toHexString(hashCode())
(1.1) 子类重写父类中toString方法
(1.2) 快速生成toString
(2) equals
用来比较两个引用的虚地址,当我们引用同一个物理地址,则返回true,否则返回false
(2.1) String 重写equals
String name1="小明";
String name2="小红";
System.out.println(name1==name2);
String name3=new String("小明");
String name4=new String("小红");
System.out.println(name3==name4);
System.out.println(name3.equals(name4));//equals重写方法后,比较字符串中的值!!
Student stu1=new Student("1001","小红",89);
Student stu2=new Student("1002","小明",79);
Student stu3=new Student("1001","小红",89);
System.out.println(stu1==stu3);
System.out.println(stu1.equals(stu3));//equals调用的是父类中的方法,比较地址
(2.2) 为什么java重写equals方法时,要重写hashcode?
(3)hashCode
获取对象的哈希码值,为16进制
特点:
如果两个对象使用equals比较返回true,那么 他们的hashcode值一定相同。
如果两个对象使用equals比较返回false,那么他们的hashcode值有可能不同有可能相同。
getClass
返回对象运行时类,即是一个Class
Student stu1=new Student("1001","小红",89);
System.out.println(stu1.getClass());
class com.etc.day10.Student//控制台输出
getName
通过Class类中的中的一个方法,获取真实类的全名称
System.out.println(stu1.getClass().getName());
com.etc.day10.Student//控制台输出
2.包装类
java中提供包装类,将8个基本数据类型,进行封装为一个类
包装类中会提供很多的属性和方法,供程序员使用
存储在java.lang包下
原始数据类型 | 包 装 类 |
---|---|
boolean**(布尔型)** | Boolean |
byte**(字节型)** | Byte |
char**(字符型)** | Character |
short**(短整型)** | Short |
int**(整型)** | Integer |
long**(长整型)** | Long |
float**(浮点型)** | Float |
double**(双精度浮点型)** | Double |
属性
int num=9;
System.out.println(Integer.MAX_VALUE);//int 最大值
System.out.println(Integer.MIN_VALUE);//int 最小值
System.out.println(Integer.SIZE);//位 1字节=8位 4 32位
自动拆箱和装箱
自动装箱
Integer num1=99;
自动拆箱
int num2=num1;
注意
int num1=129;
int num2=129;
System.out.println(num1==num2);//true
Integer num3=124;
Integer num4=124;
System.out.println(num3==num4);//false
总结:
-128~127之内的整型,第一次引用,在缓存中new一个对象;再次引用,直接从缓存中查找
-128~127之外的整型,每次都要new一个新的对象
valueOf
返回值包装类
1.字符串转换成Integer
String year="1988";
System.out.println("年龄:"+(2021-Integer.valueOf(year)));
2.包装数据类直接进行赋值
Integer i=10;
Integer j=Integer.valueOf(10);
3.浮点型每次都要new一个新的对象
parseXxx
parseInt parseDouble …
返回的是基本数据类型
System.out.println("年龄-"+(2021-Integer.parseInt(year)));//年龄-33
isDigit 判断传入字符是否是一个’0’ - ‘9’
isLetter 判断传入字符是否是一个字母
isUpperCase 判断传入字符是否是一个大写字母
isLowerCase 判断传入字符是否是一个小写字母