午间学习笔记-20160623-Java String
2016-07-01 14:03
316 查看
一、内存分配
1、栈:存放基本数据类型及对象变量的引用,对象本身不存放于栈中而是存放在堆中
2、堆:创建的对象和数组,在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理
3、静态域:static定义的静态变量成员
4、常量池:存放常量
二、Java String
String不是基本数据类型,是final类,不可被继承,代表不可变的字符序列,为不可变对象。
String一旦被创建,就不能修改它的值。
对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。
String类的本质是字符数组char[],并且其值不可改变。
String类对象有个特殊的创建方式,就是直接指定比如
“abc”就表示一个字符串对象,而str是“abc”对象的地址,也叫做“abc”对象的引用。
Java运行时会维护一个String Pool(String池),String池用来存放运行时产生的各种字符串,并且池中的字符串的内容不重复。而一般的对象不存在这个缓冲池,并且创建的对象仅仅存在于方法的堆栈区。
创建String的方式
1、使用new关键字创建字符串
2、直接指定
String对象的创建特性
① 当使用任何方式来创建一个字符串对象str时,Java运行时(运行时JVM)会拿着这个字符串的内容在String池中查找是否存在内容相同的字符串对象,如果不存在,则在池中创建一个字符串s,否则,不在池中添加
② Java中,只要使用new关键字来创建对象,则一定会(在堆或栈)创建一个新的对象
③ 使用直接指定,使用纯字符串串联或者在编译期间可以确定结果的变量表达式来创建字符串对象,则仅仅会检查维护String池中的字符串, 池中没有就在池中创建一个,有则罢了。但绝对不会在堆栈区再去创建一个String对象。
④ String的intern()方法
该方法是一个本地方法,定义为public native String intern();
intern()方法的价值在于让开发者能将注意力集中到String池上。当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用
1、栈:存放基本数据类型及对象变量的引用,对象本身不存放于栈中而是存放在堆中
2、堆:创建的对象和数组,在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理
3、静态域:static定义的静态变量成员
4、常量池:存放常量
二、Java String
String不是基本数据类型,是final类,不可被继承,代表不可变的字符序列,为不可变对象。
String一旦被创建,就不能修改它的值。
对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。
String类的本质是字符数组char[],并且其值不可改变。
private final char value[];
String类对象有个特殊的创建方式,就是直接指定比如
String str = "abc";
“abc”就表示一个字符串对象,而str是“abc”对象的地址,也叫做“abc”对象的引用。
Java运行时会维护一个String Pool(String池),String池用来存放运行时产生的各种字符串,并且池中的字符串的内容不重复。而一般的对象不存在这个缓冲池,并且创建的对象仅仅存在于方法的堆栈区。
创建String的方式
1、使用new关键字创建字符串
String str = new String("abc");
2、直接指定
String str = "abc";
String对象的创建特性
① 当使用任何方式来创建一个字符串对象str时,Java运行时(运行时JVM)会拿着这个字符串的内容在String池中查找是否存在内容相同的字符串对象,如果不存在,则在池中创建一个字符串s,否则,不在池中添加
② Java中,只要使用new关键字来创建对象,则一定会(在堆或栈)创建一个新的对象
③ 使用直接指定,使用纯字符串串联或者在编译期间可以确定结果的变量表达式来创建字符串对象,则仅仅会检查维护String池中的字符串, 池中没有就在池中创建一个,有则罢了。但绝对不会在堆栈区再去创建一个String对象。
④ String的intern()方法
该方法是一个本地方法,定义为public native String intern();
intern()方法的价值在于让开发者能将注意力集中到String池上。当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用
相关文章推荐
- JAVA读取网页里超链接资源到本地
- Spring中@Transactional用法深度分析
- spring bean生命周期管理--转
- Spring 事务传播行为
- IntelliJ IDEA常用快捷键——基于Eclipse
- Spring面试题
- JAVA MAIL发送邮件实例
- Java中的值传递和引用传递
- Android无源码调试APK(使用ApkTool和Eclipse ADT)
- java中怎样将JSON字符串还原成MAP
- struts2 excel导入
- Java基础加密之SHA加密
- 1.搭建Java+Selenium+WebDriver测试环境
- How to trace a java-program
- RCP编程技巧:Eclipse rcp运行时报错java.lang.RuntimeException: 问题的解决
- RCP编程技巧:Eclipse rcp应用发布后运行时报错java.lang.RuntimeException: 问题的解决
- 配置eclipse运行环境
- trace openjdk from systemtap
- [改善Java代码]在switch的default代码块中增加AssertionError错误
- SQLSERVER表查询字段自动生成JavaBean类