系列文章目录
包装类、Object类、String类的一些常用方法,以及包装类、基本数据类型、String类型的相互转换
目录
一、包装类
包装类其实就是将八大数据类型转为引用数据类型(这些包装类都是在java.lang包下的)
int对应Integer,char对应Character,其余的都是首字母大写
1.自动拆装箱
jdk1.5之后就可以实现包装类的自动拆装箱。
1.jdk1.5之前:Integer a = new Integer(1); int b = a.intValue();
jdk1.5之后:Integer a = 1; int b = a;
2.Integer缓冲区
integer缓冲区是一种特殊的缓存机制,用于存储 [-128,127]的Integer常量对象
1.使用前提:必须是在自动装箱时
2.自动装箱时,如果在 [-128,127]范围里,会返回一个Integer缓冲区的对象,两个对象是一样的。(不是创建了对象),减少内存空间,提高性能
3.常用方法
1.静态方法:
Integer.toString()方法,可以将数字按进制输出(字符串形式)。
例如:Integer.toString((100,2));将100按二进制输出(字符串形式)
Integer.toBinaryString(100); 将100转为二进制形式(同理还有八进制,十六进制)
重要方法:
public static int parseInt(String s):将字符串s转为 int类型(通过类名.调用)
同理可推其他包装类的。
二、Object类
Object类是所有类的父类,所有类默认继承Object类。
1.toString()方法
一般子类需要重写toString()方法,作用是返回当前对象的字符串形式。
-
返回一个对象的字符串形式
-
Object里使用的是全限类名+@+hashCode的16进制字符串
-
也可以通过重写,在输出对象时,输出该对象的某些属性值
2.equals()方法
很多类都对equals()方法进行了重写,在Object类中,是使用==去进行比较的
我们可以重写方法去比较对象的具体属性是否相等,而不是比较对象的地址。
3.hashCode()方法
是一种散列算法,将任意长度的数据输入,通过hashCode()计算,得到相同长度的输出(长变短,是一种压缩映射)。
相同的输入会得到相同的输出
不同的输入可能得到相同的输出,也可能得到不同的输出。
引用变量的hasdCode值:
两个引用变量指向同一个对象,hashCode值一定相同
如果两者的hashCode值不同,则不是指向同一个对象
如果hashCode值相同,可能是指向同一个对象,也可能是不同的对象
-
hashCode算法一般和equals一起重写,也是借助属性的值,定义算法
4.getClass()方法
子类不可以重写getClass方法,由final修饰的本地方法。
调用的一定是Object的方法,获取的是当前运行时指向的字节码对象
5.==和equals()的区别(重点)
==是一个操作符,不能被重写,它比较基本数据类型时,比较的是值,比较引用数据类型时,是比较两者的地址值是否相同。
equals()方法可以 被重写,在Object类中也是使用==去比较,如果想要比较对象具体的属性,需要重写方法(根据程序员自己的需求去重写)。
三、String类
1.简述
String类型是在java.lang包下的,字符串值不可变,字符串对象一旦创建值就不能被修改。
2.常用方法(重要)
replace( 字符串,替代的值)方法:将字符串替代为替代的值。(返回一个新的字符串)
3.常量池
String常量池是在堆中的。
1.当我们创建字符串对象时,如果字符串常量池中已经有相同字符串的对象,那么就不会创建对象,而是会返回字符串常量池的对象。
节省内存空间, 还可以享受垃圾回收机制。
2.将字符串放入常量池方法
直接赋值,或者调用intern()方法。
通过new的字符串不能放入常量池中,可以调用intern()方法。
3.使用+拼接的字符串常量,结果也是一个字符串常量,如果常量池中没有,java会自动存入。