String字符串
String是一个类,属于引用类型。
Java程序中一切使用""引起来的内容,都是这个类的实例,称为字符串对象。
字符串定义后是一个常量,值不可更改。字符串实际是一个字符数组。
创建
String str="hello你好";
可变字符串
String字符串对象是一个常量,在定义后其值不可改变。
如果使用String类的对象,对其频繁更新时,就会不停地创建新的对象,重新引用。
所以如果要执行1000次重新赋值的过程,就要创建1000个字符串对象,花费很多时间和内存空间,所以效率很低。这时就需要使用可变字符串类。
StringBuilder类
用于表示可变字符串的一个类,是非线程安全的,建议在单线程环境下使用,效率略高于StringBuffer。
StringBuffer类
用于表示可变字符串的一个类,是线程安全的,建议在多线程环境下使用,效率略低于StringBuilder。StringBuilder和StringBuffer中的方法作用都一致,只不过StringBuffer中的方法使用了synchronized关键字修饰,表示一个同步方法,在多线程环境下不会出现问题。
可变字符串与不可变字符串之间的转换
有些方法如indexOf()、charAt()等,在String和StringBuilder中都存在,可以不用转换。
但有些方法如getBytes()、contains()等,只能通过String调用,这时就需要进行转换。
不可变字符串转换为可变字符串
通过创建一个可变字符串对象,将不可变字符串作为参数实现转换
//定义一个不可变字符串对象
String str="hello";
//创建一个可变字符串对象,将不可变字符串对象作为参数
StringBuilder sb = new StringBuilder(str);
可变字符串转换为不可变字符串
通过调用可变字符串的toString()方法实现转换
//创建一个可变字符串对象
StringBuilder sb = new StringBuilder("hello");
//调用toString()转换为String类型
String str=sb.toString();
包装类
Java是纯面向对象语言,宗旨是将一切事物视为对象处理。
但原始类型不属于对象,不满足面向对象的思想,但原始类型使用时无需创建对象,保存在栈中,效率
更改。
为了让原始类型也有对象的类类型,达到"万物皆对象"的思想,所以就有了包装类的概念。
**包装类就是原始类型对应的类类型。**包装类通常用于将字符串转换为对应的原始类型。
在web应用中,从浏览器中获取到后台的数据,全是String类型,一定要使用转换的方法。
装箱
所有包装类都有一个静态方法valueOf(原始类型),将某个原始类型的数据转换为相应的包装类对象,这个过程称为装箱。
//手动装箱
int i=123;//定义一个原始类型的数据
Integer aInteger=Integer.valueOf(i);//调用包装类的valueOf()方法将原始类型转换为包 装类对象
拆箱
所有包装类都有一个原始类型Value()方法,用于将包装类对象转换为原始类型,这个过程称为拆
箱
//手动拆箱
Integer aInteger=new Integer(123);//创建一个包装类对象
int i = aInteger.intValue();//调用包装类的"原始类型Value()"方法将其转换为原始类型
自动装箱拆箱。
在jdk1.5之后,加入了自动装箱拆箱的特性,可以直接在原始类型和对应的包装类中互相赋值
//自动装箱
Integer aInteger=123;
//自动拆箱
int i=aInteger;