字符串一旦定义,就表示开辟好了指定的空间,其内容就不可改变

public class StringChange{
    public static void main(String[] args) {
            String str = "Hello";
            str += "World";
            System.out.println(str);
    }
}

结果为HelloWorld,运行结果显示str的内容改变了!?事实并非如此!

由上图可以发现,str的内容未变,改变的只是str的引用,并且会产生字符串垃圾。

因此为避免大量垃圾,不应不断修改字符串内容。

时间: 2024-08-27 12:05:49

字符串一旦定义,就表示开辟好了指定的空间,其内容就不可改变的相关文章

字符串的定义和处理

\n 回车  \r 换行   \t 回车 1.定义: 双引号定义的:a.可以在双引号里面执行变量,例如: $num = 1000; $str = "it is my $num life "; echo $str; 此时就会输出 it is my 1000 life 表明双引号中可以识别到变量,但是如果想要正常执行上述方法,在变量前后要加上空格 或者将变量写成 ${num}或者按照php中的规则使用 "." 将前后进行连接. b.可以使用转义字符 $str = &qu

字符串的定义和处理(续)

额...这几天晚上都有事所以都没怎么学习,真是罪过啊,罪过.. 这个是接着上一篇的结尾处的内容继续的: 对url处理 parse_str(string str):将字符串解析到变量中,例如 parse_str("a=2&b=4&c=5"); echo $a."-----"; echo $b; 输出结果为:2-----4 parse_str(string str,array arr):将解析到的字符串存储到arr数组中,例如 parse_str(&qu

获取联系人【自己定义布局文件与主布局文件相连,数据库内容查找并显示】

一.自己定义布局文件list_item_users.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_

js中使用eval()方法将字符串转换成日期格式、并获取指定时间的日期

1.在js中eval()方法将字符串格式数据转换成日期格式 function getDate(strDate) {         //strDate为需要转换成日期格式的字符串         var date = eval('new Date(' + strDate.replace(/\d+(?=-[^-]+$)/,                 function (a) { return parseInt(a, 10) - 1; }).match(/\d+/g) + ')');    

Android中怎样做到自己定义的广播仅仅能有指定的app接收

今天没吊事.又去面试了,详细哪家公司就不说了,由于我在之前的blog中注明了那些家公司的名字,结果人家给我私信说我泄露他们的题目.好吧,我错了... 事实上当我们已经在工作的时候.我们能够在空暇的时间去面一面,由于面试有非常多优点的: 第一点:你知道这个公司的详细地址了,以后和朋友说的时候也是有话题的 第二点:这点非常重要.看看其它公司的面试题(如今有的公司还在採用笔试题这个环节.真心无语了.题目全是从网上找的,非常没有意思.所以我仅仅要见到有笔试题的一律pass,个人感觉面到如今,阿里和滴滴还

图说:为什么Java中的字符串被定义为不可变的

8张图,看懂Java字符串的不变性 字符串,想必大家最熟悉不过了,通常我们在代码中有几种方式可以创建字符串,比如:String s = "Hollis";这时,其实会在堆内存中创建一个字符串对象,其中保存了一个字符数组,该数组中保存了字符串的内容. 上面的箭头可以理解为"存储他的引用". 当我们在代码中连续创建两个相同的字符串的时候,其实会指向同一个对象.因为当一个字符串被被创建的时候,首先会去这个字符串池中查找,如果找到,直接返回对该字符串的引用. 但是,如果在程

php字符串的定义方式及区别

单引号.双引号.heredoc.newdoc 1 //1.单引号不能解析变量,转义字符.只能解析单引号和反斜杠本身,可以用.来连接.单引号效率更高 2 $a=123; 3 $str1 = 'abcdef$ag';//abcdef$ag 4 //2.双引号可以解析变量,变量可以使用特殊字符和{}包含.双引号可以解析所有转义字符,也可以用.来连接 5 $str2 = "abcdef{$a}g";//abcdef123g $str3 = "abcdef'{$a}'g";/

[1]字符串按中文符占3位进行指定长度剪切[2]Double类型截取指定长度(指定长度=整数位+小数位)

1 /** 将中文字符串剪切为在当前db2(编码GBK)中所占用的长度*/ 2 public String cutStringForDb2(String src,Integer size) { 3 int len = src.length(); 4 int res_len = 0; 5 StringBuilder res_b = new StringBuilder(); 6 for (int i = 0 ; i < len; i++) { 7 if (isChinese(src.charAt(i

Spring 通过注解定义Bean以及自动扫描注解定义的bean ComponentScan 自动扫描组件&amp;指定扫描规则

不管是xml还是注解,他们都是表达bean定义的载体,其实质都是为Spring容器提供Bean定义的信息,在表现形式上都是讲xml定义的内容通过类注解进行描述. Spring容器成功启动的三大要件分别为:bean定义信息,bean实现类,spring本身. 如果采用基于xml的配置,则bean定义信息和bean实现类本身是分离的:而如果采用基于注解的配置文件,则bean定义信息通过在bean实现类上标注注解实现. @Controller:用于对Controller实现类进行标注 @Reposit