005 String s = "Hello";s = s + " world!";执行这两行代码执行后,原始的 String 对象中的内容到底变了没有?
原始的String对象中的内容没有改变成“Hello world”.
1、原因
因为在Java中String类被设计成不可改变的类,所以String类的所有对象都是不可变的。第一句代码中,s(存储在栈区)引用了堆中的一个内存区域
(记为a1),a1堆内存区域存储的内容是“Hello”。执行第二句代码后,s不在引用a1区域,而是重新引用了堆中的另外内存区域(记为a2),且a2中的内容是“Hello world”。s并没有对原始的a1堆内存中的内容进行改变,而是重新指向了新的堆内存区域。
2、启发
在程序中,如果需要多次对字符串进行修改的时候,不建议使用String类型定义字符串对象,因为这会频繁的在堆中开辟内存创建新的String对象,造成低效和内存浪费。可以使用StringBuffer。
005 String s = "Hello";s = s + " world!";执行这两行代码执行后,原始的 String 对象中的内容到底变了没有?的更多相关文章
- 【Java面试题】15 String s="Hello"; s=s+“world!”;这两行代码执行后,原始的String对象中的内容到底变了没有?String与StringBuffer的超详细讲解!!!!!
1.Java中哪些类是不能被继承的? 不能被继承的是那些用final关键字修饰的类.一般比较基本的类型或防止扩展类无意间破坏原来方法的实现的类型都应该是final的,在java中,System,Str ...
- String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有?
没有.因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象.在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行 ...
- 在try...catch语句中执行Response.End()后如何停止执行catch语句中的内容
在调用Response.End()时,会执行Thread.CurrentThread.Abort()操作. 如果将Response.End()放在try...catch中,catch会捕捉Thread ...
- 解决python执行linux查看文件命令后,因为^@特殊符号导致部分内容不显示的问题
问题现象 文件a的内容如下: 查看第3行到第5行的内容:sed -n '3,5p' /tmp/test/a 可见在命令行执行,是没有问题的. 在python中使用paramiko模块执行linux命令 ...
- Entity Framework 6 Recipes 2nd Edition(12-1)译 -> 当SaveChanges( ) 被调用时执行你的代码
第12章定制EF 在本章的小节里,定制实体对象和EF处理的一些功能.这些小节将涵盖很多”幕后”的事情,能让你的代码更加统一解决一些事情,比如用一个业务规则中心统一地为实体执行验证. 本章开始的小节,将 ...
- ECShop 2.x 3.0代码执行漏洞分析
0×00 前言 ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店.2.x版本跟3.0版本存在代码执行漏洞. 0×01 漏洞原理 ECShop 没有对 $GLOBAL[‘_SE ...
- Java基础(31):String的大小写转换、分离成数组、==与equals()的区别(String类)
继续来看 String 类常用的方法,如下代码所示: 运行结果: 那么,“==” 和 equals() 有什么区别呢? ==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象 eq ...
- mysql之代码执行结构
本文内容: 什么是代码执行结构 顺序结构 分支结构 循环结构 首发日期:2018-04-18 什么是代码执行结构: 这里所说的代码执行结构就是多条sql语句的执行顺序. 代码执行结构主要用于触发器.存 ...
- 关于Discuz! X系列远程代码执行漏洞
一.漏洞起源 突然有同事反馈,无法注册 看到这里不了解的同行估计一年懵逼,这里也是常用的漏洞攻击,可以肯定的是 badwords.php文件被修改了 ,可以查看这个文件内容 <?php $_C ...
随机推荐
- laravel C层 (控制器)
<?php namespace App\Http\Controllers; use App\Index; use App\Http\Controllers\Controller; class I ...
- TRANSFORM_TEX
Shader "Custom/Exam1" { Properties { _MainTex ("Texture", 2D) = "white" ...
- 洛谷P4869 albus就是要第一个出场(线性基)
传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 线性基居然有这性质我还不知道orz 假设$n$个数的线性基中有$k$个数,那么显然共有$2^k$个不同的异或和,而其中每一个异或和的出现次数都是$2 ...
- P3803 【模板】多项式乘法(NTT)
传送门 NTT好像是比FFT快了不少 然而感觉不是很看得懂……主要是点值转化为系数表示那里…… upd:大概已经搞明白是个什么玩意儿了……吧…… //minamoto #include<bits ...
- centos 7.3 安装vmtools,解决无法编译共享文件夹模块
环境说明: vmware 12.5.0 build-4352439 centos 7.3.1611 64位,内核版本:Linux version 3.10.0-514.16.1.el7.x86_6 ...
- 分布式集群环境下,如何实现session共享五(spring-session+redis 实现session共享)
这是分布式集群环境下,如何实现session共享系列的第五篇.在上一篇:分布式集群环境下,如何实现session共享四(部署项目测试)中,针对nginx不同的负载均衡策略:轮询.ip_hash方式,测 ...
- JQuery基础知识梳理篇
这周没事,优化线上项目,因为前端都在赶项目,我又若菜.于是前端数据展示也要自己来.看javascript看到吐,决定梳理一下Jquery基础知识.敲黑板) 闲扯结束,进入正题. 选择器 介绍 jque ...
- 【bzoj3033】太鼓达人
3033: 太鼓达人 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 521 Solved: 399[Submit][Status][Discuss] ...
- AKOJ-1695-找素数
题意: 给定区间L,R. 计算区间中素数个数. 2 <= L,R <= 2147483647, R-L <= 1000000. 思路: 素数区间筛 先筛(2-sqrt(r)). 再用 ...
- 修正 FreeBSD 字体锯齿问题
如果你给 FreeBSD 安装完图形界面,一登录就被满屏幕不论中英全是锯齿且残缺不堪入目的文字吓了一跳,那一定是安装了文泉驿字体.先不必急着卸载文泉驿,只需简单修改相关配置即可恢复正常显示.这是因为文 ...