一.包装类:
- byte–>Byte
- short—>Short
- int—>Integer
- long—>Long
- float—>Float
- double—>Double
- char—>Character
- boolean—>Boolean
问题:为什么每一个基本类型都对应着一个引用类型呢?
1.在Java中有些场景只能使用引用类型,例如集合框架
2.引用类型对基本数据类型进行了扩展,在类中封装了操作方法
二.拆箱/装箱
1.装箱:从基本类型转换为引用类型的过程
2.拆箱/取消装箱:把引用类型转换为基本类型的过程
例如:
1.字符串------------------>数值
1、 int num=Integer.valueOf(str); 转换的是Integer ,进行拆向后
2、int num4=Integer.parseInt(str); //建议使用此种方式,直接转换为int
3、Integer integer=new Integer(str);
int num5=integer;
2.数值------------------>字符串
1、String str3=String.valueOf(num6);
2、//在Integer类中重写了Object类中的toString:把数值转换为字符串
Integer integerNum7=234;
String str4=integerNum7.toString();
三.特殊的引用类型String
String:
①使用双引号引起的若干个字符
②常量字符串/不可变字符串
1.案例:
String str1="abc";
String str2="abc";//二者的地址相同
java 中当给字符串赋值时,如果字符串值在常量区域中已经存在,那么不会分配新的常量区域,而是把现有值的常量地址进行赋值
原理:字符串会产生一个hashCode,通过hashCode,判断字符串值是否在常量区域中存储过
2.使用方式
字符串使用方式一:String str1="abc";
字符串使用方式二:String str2=new String("bcd");
3.重点※※※常用方法
length() int
字符串的长度
charAt() char
返回对应索引位置的字符
indexOf()
字符串首次出现位置
lastIndexOf()
最后一次出现的索引位置
substring()
字符串截取函数
toUpperCase()
转成大写字母
toLowerCase()
转成小写字母
replace()
替换
equals()
判断两个字符串的值是否相等,区分大小写
equalsIgnoreCase()
不区分大小写
split("")
将字符串中的某些值删除,拆分成几段数组
例如:
public class Test13 {
public static void main(String[] args) {
String str = "长亭外 古道边 芳草碧蓝天";
for (String string : str.split(" ")) {
System.out.println(string);
}
}
}
//结果:
长亭外
古道边
芳草碧蓝天
四.String,StringBuilder,StringBuffer
- String: 字符串是不可变字符串,如果频繁的改变字符串的值,此时如果使用String会浪费内存空间
- StringBuilder:在原内存空间中改变值,可变字符串.
非线程安全,使用效率最高 - StringBuffer:同StringBuilder相同.
线程安全,效率低