- 浏览: 218312 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (110)
- java (111)
- c# winform tablelayoutpanel学习 合并行的布局及动态增加删除内部控件 (1)
- javascript常用正则 (1)
- 认识Java程序 (1)
- UniqTask for android (1)
- JAX-RS 从傻逼到牛叉 2:开发一个简单的服务 (1)
- Spring MVC 数据绑定的扩展 (1)
- 手机分辨率 (1)
- tomcat的favicon.ico的用法 (1)
- Cookie读写demo (1)
- hive相关操作文档收集 (1)
- 测试开发工程师的发展 (1)
- JSF入门十(自定义转换器) (1)
- 《你能行:微软精英的职场心里话》 (1)
- JNI程序如何检测C代码的内存泄漏 (1)
- 做了几天的调研工作 (1)
- 使用Microsoft Web Application Stress进行压力测试 (1)
- 在线共享音乐吧(Online Share Music Bar)解决方案 (1)
- 如何二次压缩RM和RMVB格式文件 (1)
- 突然想起了红色联盟 就去看了看 (1)
- 推荐两个关于DB2认证的站点 (1)
- 安装Microsoft .NET Framework SDK 快速入门、教程和示例 (1)
- 去掉C/C++程序代码中的注释 (1)
- 数据结构之kmp模式匹配 (1)
- JS跨域 (1)
- SP2-0734: 未知的命令开头 "exp test/t..." - 忽略了剩余的行 解决办法 (1)
- Android开发之fedora13下编译Android源码 (1)
- Android开发之Linkify (1)
- json学习之三:JSONArray的应用 (1)
- js 数组操作代码集锦 (1)
- jquery跨域调用json数据 (1)
- qtdemo浅析 (1)
最新评论
-
songshuang:
最近怎么都盗我的文
做个小调查,程序员们都是什么星座的?
我们都应该知道,new出来的对象会放在堆中分配空间,string 也是一样:string s = new string("s");
而string直接引用的值都放在常量池中,但对string类型的“+”运算值得弄清楚:
jvm对字符串常量的"+"运算,在编译期完成。在常量池中的值赋给各个变量的引用!在编译期即把字符串常量的值确定下来!
jvm对字符串引用的“+”运算,如果有字符串引用的存在,在编译期无法确定引用的值指向。只有在程序运行期通过动态分配并将链接后的地址赋予。 如果string a = "a" 换成 final string a = "a"那么返回的就是true。有了final修饰后,它在编译时被解析为常量值的一个本地拷贝存储到自己的常量池中或嵌入到它的字节码流中,所以和"a" + "b"是相同的效果!
注意 只有在编译期确定下来相同的值后方能 == 。这里的操作都在常量池中进行!不同于new出来的string !
而string直接引用的值都放在常量池中,但对string类型的“+”运算值得弄清楚:
public static void test1() { string s = "ab"; string a = "a" + "b"; system.out.println(s == a);//这里 true。 }
jvm对字符串常量的"+"运算,在编译期完成。在常量池中的值赋给各个变量的引用!在编译期即把字符串常量的值确定下来!
public static void test2() { string s = "ab"; string a = "a"; string b = a + "b"; system.out.println(s == b);//这里 false; }
jvm对字符串引用的“+”运算,如果有字符串引用的存在,在编译期无法确定引用的值指向。只有在程序运行期通过动态分配并将链接后的地址赋予。 如果string a = "a" 换成 final string a = "a"那么返回的就是true。有了final修饰后,它在编译时被解析为常量值的一个本地拷贝存储到自己的常量池中或嵌入到它的字节码流中,所以和"a" + "b"是相同的效果!
注意 只有在编译期确定下来相同的值后方能 == 。这里的操作都在常量池中进行!不同于new出来的string !
发表评论
-
qtdemo浅析
2012-02-07 16:14 1585[size=x-small;]? ? <span ... -
jquery跨域调用json数据
2012-02-03 11:39 1435? <script type="te ... -
js 数组操作代码集锦
2012-02-03 10:59 1144[size=small;]这段时间做的一个项目,用到数 ... -
json学习之三:JSONArray的应用
2012-02-02 15:29 71524从json数组中得到 ... -
Android开发之Linkify
2012-01-31 13:33 2211<h1>Android开发之Linkify ... -
Android开发之fedora13下编译Android源码
2012-01-11 16:04 1153<h1>Android开发之fedora1 ... -
SP2-0734: 未知的命令开头 "exp test/t..." - 忽略了剩余的行 解决办法
2011-12-28 14:13 3870<span style="font-f ... -
JS跨域
2011-12-21 16:43 2638原帖地址:http://itgeeker.com/ma ... -
数据结构之kmp模式匹配
2011-12-21 10:04 1185KMP字符串模式匹配详解 KMP字符串模式匹配通俗点说 ... -
去掉C/C++程序代码中的注释
2011-12-20 16:49 3060程序员面试宝典上面的题目有很多是很经典的问题,可供我 ... -
安装Microsoft .NET Framework SDK 快速入门、教程和示例
2011-12-19 10:09 2054Microsoft .NET Framework SD ... -
推荐两个关于DB2认证的站点
2011-12-19 09:59 848关于DB2认证的在线中文教程<br>htt ... -
突然想起了红色联盟 就去看了看
2011-12-17 10:54 1181突然想起了红色联盟,于是就偷偷的爬上红盟站点,看了看红 ... -
如何二次压缩RM和RMVB格式文件
2011-12-16 17:12 1121对RM/RMVB格式文件进行二次压缩,可以用一个软件E ... -
在线共享音乐吧(Online Share Music Bar)解决方案
2011-12-14 19:54 998</span></font>& ... -
使用Microsoft Web Application Stress进行压力测试
2011-12-14 18:33 879<font size="2" ... -
做了几天的调研工作
2011-12-14 17:29 1017</span></span> ... -
JNI程序如何检测C代码的内存泄漏
2011-12-13 14:59 1449Java调用C的JNI程序很容易出现内存泄漏问题,因为 ... -
《你能行:微软精英的职场心里话》
2011-12-12 14:39 961<p class="MsoNorm ... -
JSF入门十(自定义转换器)
2011-12-09 11:00 975本文参考 http://www.javaworld.c ...
相关推荐
5. 注意事项:尽管`intern()`可以优化内存,但过度使用可能会增加方法区的压力,导致性能下降或`OutOfMemoryError`。因此,明智地使用`intern()`是很重要的。 6. 静态字符串池:在Java 8之后,字符串常量池被移到了...
intern 方法的注意事项 intern 方法也有一些需要注意的事项: * intern 方法只能用于字符串对象,不能用于其他类型的对象。 * intern 方法只能将字符串对象添加到字符串常量池中,不能将其他类型的对象添加到常量...
在Java编程过程中,掌握一些关键的注意事项至关重要,这不仅能提高代码质量,还能避免常见的编程陷阱。以下是一些关于"JAVA注意事项"的详细说明: 1. **命名规范**:Java有严格的命名规则,类名应使用驼峰式命名,...
### 架构设计-性能篇:性能设计注意事项 在架构设计的过程中,性能设计是一个至关重要的环节,但往往容易被忽视。良好的性能设计不仅能够确保系统的高效运行,还能够在一定程度上减少后期维护的成本与复杂度。以下...
### Java基础复习笔记03:我们不会注意的陷阱 ...以上就是Java编程中一些常见的陷阱及注意事项,这些细节往往在面试或笔试中容易被忽视。通过对这些知识点的理解和掌握,可以有效避免实际开发中的潜在问题。
- String常量池:Java为了优化性能,字符串字面量(直接量)会存储在常量池中。如果多个地方引用相同的字符串直接量,它们会共享同一个对象。例如,`String s1 = "Hello"; String s2 = "Hello";`,这里的s1和s2都...
String类的使用注意事项: * 不建议使用new关键字,因为使用new会创建两个对象。 * 如果多个字符串进行拼接,将会形成多个对象,这样可能会造成内存溢出,会给垃圾回收带来工作量。 String类的常用方法: * ...
- **注意事项**: `new String()`创建的对象不会放入常量池中。 **34. String和StringBuffer的区别** - **知识点**: `String`是不可变的,而`StringBuffer`是可变的。 - **注意事项**: `StringBuffer`更适合在多...
使用 String 的注意事项 - **初始化与赋值**:在类成员变量的初始化时,最好直接赋值而不是使用 `new` 关键字。这样做可以利用字符串常量池的优点,提高性能。例如: ```java public class Demo { private ...
在构建Web应用程序并连接到数据库时,需要注意一系列关键点,以确保数据的稳定访问和安全性。以下是关于这个主题的一些重要知识点: 1. **数据库表名的大小写敏感性**: 在PostgreSQL中,表名默认是不区分大小写的...
关于内存管理和字符串常量池,`"abc" + "def"`会直接在常量池中合并为一个字符串,而`new String(s1)`则在堆上创建新的对象,所以`s1 == s2`为`false`,但`s1.equals(s2)`为`true`。 在内存占用方面,题目中提到了...
- **注意事项**:由于 `String` 是不可变的,频繁进行字符串拼接可能导致内存浪费。应考虑使用 `StringBuilder` 或 `StringBuffer`。 #### StringBuffer 和 StringBuilder - **StringBuffer**:类似于 `String` 的...
- **重写注意事项**:重写 `equals` 方法时应确保遵循以下原则: - 自反性:`x.equals(x)` 必须返回 `true`。 - 对称性:`x.equals(y)` 与 `y.equals(x)` 必须返回相同的值。 - 传递性:如果 `x.equals(y)` 和 `y...
- `ldc`、`ldc_w`、`ldc2_w`:用于将常量池中的int、float或String型常量值,以及long或double型常量值推送到栈顶。 #### 局部变量加载指令 ##### load系列指令 - `iload`系列:加载int型本地变量至栈顶。 - `...
- **字符串常量池**:通过直接赋值方式创建的字符串会被放入常量池中,提高效率和减少内存消耗。 **2. 构造器** - **常见构造器**: - `public String()`:创建一个空字符串。 - `public String(byte[] bytes)...
`String str="i"`会将字符串常量放入常量池,而`new String("i")`会在堆中创建一个新的对象,即使内容相同,也是两个不同的对象。 7. **字符串反转**: 使用`StringBuilder`或`StringBuffer`的`reverse()`方法...
- **注意事项**: - 断言默认是禁用的,可以通过 `-ea` 或 `-enableassertions` 命令行参数启用。 - 断言主要用于调试阶段,一般不在生产环境中启用。 ### 4. String 类型的理解 - **String 对象的创建**: ```...
2. **`new String()`与字符串字面量**:使用`new String("xyz")`创建的对象位于堆内存中,并且不会直接放入字符串常量池中;而直接使用`String str = "xyz";`则会将字符串放入常量池。 3. **`String`构造函数**:`...
5. **注意事项**: - JNDI名称(`JNDI`常量)需要根据实际环境中数据源的配置进行调整。 - `wlfullclient.jar`的版本应与WebLogic Server版本匹配,以避免兼容性问题。 - 配置环境变量时需确保WebLogic服务器可...
这通常是项目说明文件,可能包含了`StringDemo2`程序的目的、使用方法、注意事项或者作者的信息。 以上就是对`StringDemo2`可能涉及的Java字符串处理相关知识点的详细解释。在实际的代码示例中,`StringDemo2`可能...