黑马程序员_java字符串

 ------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

字符串是复合数据类型,在java程序中经常会用到字符串及对字符串的各种操作,如字符串的连接,比较,截取,查找,替换等。在java中的lang包中有一个类是String来处理字符串的一系列操作,以及StringBuffer类。

字符是指单引号括起来的单个字母。在java中表示字符的数据类型是char.一个字符在内存中占两个字节。有时可能需要一个字符作为一个对象。例如:将一个字符作为一个方法的参数,而该方法参数应该为对象类型,同样,java中也提供了一个“包装(wapper)器”类,用来将char类型的字符包装为一个character对象。Character类还提供了一系列的静态方法用于操纵字符,可以使用Character构造器创建一个Character对象,代码如下:

Character name=new Character('Tom');

java编译器会根据需要自动创建一个Character对象。如果传递的是一个原始char类型的字符到一个期望传递参数是对象的方法中,编译器会自动将char转换为Character.这个特征被称为“自动装箱”。或者如果转换是相反的,称为“拆箱”。例如:

Character name='Tom';//将原始字符Tom被装箱到Character对象中的name属性中

Character method(Character c){}//方法的参数类型和返回类型都是Character对象

char c=method('a');//原始的字符a被装箱用于方法method,返回值被拆箱为字符‘c’

Character类是不可变的,所以一旦一个Character对象被创建,就不能改变。

字符串是由零个或多个字符组成的有序序列。通常以串的整体作为操作对象。字符串初始化后长度就是固定的,串的两种最基本的存储方式是顺序存储方式和链式存储方式。字符串声明的格式:String 字符串变量名。字符串变量必须赋值后才可以使用,称为字符串对象的初始化。

初始化有三种方式:

1. String username="tom";

2.String usernaem=new String("tom");

3.String username; username="tom";

在字符串中"=="和equals()方法的区别:

class strDemo{
public static void main(String args[]){
String s1 = new String("amit"); 
System.out.println(s1.replace('m','r')); //arit
System.out.println(s1); //amit
String s3 =new String( "arit"); 
String s4 = "arit"; 
String s2 = s1.replace('m','r'); 
System.out.println(s2==s3);//false
System.out.println(s3.equals(s4));//true
System.out.println(s2==s4);//false
}
}

equals()方法比较的是两个字符中的内容以及字符串长度是否相等。而"=="比较的是等式两边的字符串是否指向同一个内容,比较的是字符串对象在内存中的指向。

一个String对象的长度是由初始化值决定的,一个字符串一旦被初始化后,长度就固定了,如果想使用String类对字符串进行不同的操作,会产生很多对象,需要在内存中另外分配空间。针对这个问题,java提出了StringBuffer类,既可以节省空间,又能改变字符串的内容。StringBuffer类所产生的对象默认有16个字符的长度,而且内容和长度都可以改变,如果附件的字符超过了可容纳的长度,则StringBuffer对象会自动增加长度以容纳被附加的字符。

StringBuffer和String的主要区别:

String是不可变对象,因此在每次对String类型进行改变时都会产生一个新的String对象。而StringBuffer类则不一样,它具有一个缓冲功能。每次操作结果都会在StringBuffer对象本身进行操作。不会产生新的对象。所以,在字符串对对象经常改变的情况下建议使用StringBuffer类型,会让程序的运行效率提高。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值