黑马程序员技术交流社区
标题:
String问题
[打印本页]
作者:
ld5128702
时间:
2013-4-13 19:02
标题:
String问题
本帖最后由 ld5128702 于 2013-4-14 00:09 编辑
class Demo01
{
public static void sop(String str)
{
System.out.println(str);
}
public static void main(String args[])
{
String str=" as daf ";
sop("("+str+")");
str=myTrim(str);//String定义的变量不是不能改变吗?这里算不算是呢?迷惑,求解释
sop(str);
}
//练习一:去除字符串两端的空格
public static String myTrim(String str)
{
int start=0,end=str.length()-1;
while(start<=end&&str.charAt(start)==' ')
start++;
while(start<=end&&str.charAt(end)==' ')
end--;
return str.substring(start,end+1);
}
}
复制代码
作者:
郭兴业
时间:
2013-4-13 19:24
String trim()
返回字符串的副本,忽略前导空白和尾部空白。
你看看这句话,返回的是字符串的副本,而非字符符本身,你就可以理解为trim以后,就是一个新的字符串,当然,你这是自定义了一个MyTrim一个道理
作者:
殇_心。
时间:
2013-4-13 19:25
举个例子吧:
String str = "字符串" ;
这里的str是一个变量 只是把"字符串"的地址值赋值给了str而已
而"字符串"这个是不能再改变了。
str=myTrim(str);
调用函数处理只是把变量str的引用地址值改变了。
作者:
本人已死
时间:
2013-4-13 19:30
public String substring(int beginIndex,
int endIndex)返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。
示例:
"hamburger".substring(4, 8) returns "urge"
"smiles".substring(1, 5) returns "mile"
参数:
beginIndex - 起始索引(包括)。
endIndex - 结束索引(不包括)。
返回:
指定的子字符串。
来自api 此方法返回一个新的字符串,你还用原来字符串的变量名接收的 ,这根本就是2个东西
作者:
①人←①城市
时间:
2013-4-13 21:07
本帖最后由 ①人←①城市 于 2013-4-13 21:10 编辑
String类是的本质是字符数组char[], 并且其值不可改变。private final char value[];
Java运行时会维护一个String Pool(String池),JavaDoc翻译很模糊“字符串缓冲区”。String池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。而一般对象不存在这个缓冲池,并且创建的对象仅仅存在于方法的堆栈区。
作者:
①人←①城市
时间:
2013-4-13 21:07
创建字符串的方式很多,归纳起来有三类:
其一,使用new关键字创建字符串,比如String s1 = new String("abc");
其二,直接指定。比如String s2 = "abc";
其三,使用串联生成新的字符串。比如String s3 = "ab" + "c";
String对象的创建
String对象的创建也很讲究,关键是要明白其原理。
原理1:当使用任何方式来创建一个字符串对象s时,Java运行时(运行中JVM)会拿着这个X在String池中找是否存在内容相同的字符串对象,如果不存在,则在池中创建一个字符串s,否则,不在池中添加。
原理2:Java中,只要使用new关键字来创建对象,则一定会(在堆区或栈区)创建一个新的对象。
原理3:使用直接指定或者使用纯字符串串联来创建String对象,则仅仅会检查维护String池中的字符串,池中没有就在池中创建一个,有则罢了!但绝不会在堆栈区再去创建该String对象。
原理4:使用包含变量的表达式来创建String对象,则不仅会检查维护String池,而且还会在堆栈区创建一个String对象。
作者:
ld5128702
时间:
2013-4-14 00:09
明白了,谢谢各位了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2