7月16日java学习总结

String类(final类,不可以被继承)

final String[] value;//底层存储方式

因为final的存在,导致value不能变动,故无论是增加长度,减小长度还是改变字符,都是不能变的;(也导致了String运算的效率低下)

存储差异:

String str  ="abc";//str在栈中,"abc"在方法区,str直接指向"abc",故str==str1;

String str1 ="abc"

String str = new String("abc");

String str 1= new String("abc");str在栈中,指向堆中的中间变量,再指向"abc"

其中new的对象均在堆中,故str!=str1;

String的常用方法:

String str

str.startWith(); str.endWith();

str.trim();//去除掉字符串首尾的空格;

str.isEmpty();//判断str是否是空;

str.contains();//判断str是否包含()内的字符序列;

str.toCharArray();//将str转化为char型的数组;

str.split();//将str按照()内的字符,分割成数组;

易错题:

public class StringTest {
String str = new String( "good" );
char [] ch = { 't' , 'e' , 's' , 't' };
public void change(String str , char ch []) {
str = "test ok" ;
ch [0] = 'b' ;
}
public static void main(String[] args ) {
StringTest ex = new StringTest();
ex .change( ex . str , ex . ch );
System. out .print( ex . str + " and " ); //good
System. out .println( ex . ch );//best
}
}
方法中的str和原本定义中的str是两个变量,在执行方法时,成员变量str将地址值赋给了方法里的形参,而形参想修改该地址指向的常量,但因为final value,导致其无法进行修改,从而使得其会创建一个新的中间变量,而str指向的仍然保持地址值不变;

String的延申类:StringBuilder StringBuffer(线程安全)

他们的value没用final修饰,故可以直接修改

同时源码中,构造char[]数组的方法也不尽相同;

常用方法:

str1.append("str2")方法;将str1与str2进行拼接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值