java学习笔记-String相关知识点
2016-10-14 13:27
369 查看
java的类成员变量,java会自动初始化,默认初始化类型的零值。局部变量必须显式初始化才能使用,否则编译器会报错。
java对String的”+”运算符提供了特别支持,使用的是StringBuilder或StringBuffer的append()方法
Arrays.copyOf(char []original,int newLength); 复制char数组的方法,复制original数组到一个新数组并返回新数组,newLength为新数组的长度,若newLength大于原数组长度,返回新数组多余部分填充空值,若小于则截断。
凡用字面量创建的字符串对象存储在虚拟机方法区的常量池中,如
java对String的”+”运算符提供了特别支持,使用的是StringBuilder或StringBuffer的append()方法
Arrays.copyOf(char []original,int newLength); 复制char数组的方法,复制original数组到一个新数组并返回新数组,newLength为新数组的长度,若newLength大于原数组长度,返回新数组多余部分填充空值,若小于则截断。
凡用字面量创建的字符串对象存储在虚拟机方法区的常量池中,如
String s = "abc"。而通过
new创建的对象储存在java堆中。
public class TestString { public static void main(String[] args) { String str = "abcd"; //字符串常量,在编译期就确定了 String s = "d"; String str1 = "abc"+"d"; //多个字符串常量连接,结果也为字符串常量,在编译期确定 System.out.println(str1==str); //true String str2 = "abc"+new String("s"); //后部分在编译期不能确定,str2为在java堆新创建的对象 System.out.println(str==str2); //false String str3 = "abc"+s; //s引用在编译期仍不能确定,str3为在java堆新创建的对象 System.out.println(str==str3); //false //str.intern() String的intern方法:当String实例调用intern方法时, // 到常量池查找是否有该实例的常量,若有返回常量引用,若无,创建该实例常量并返回其引用。 String str4 = str.intern(); System.out.println(str==str4); //true,str指向字面量,两者指向常量池同一内存。 System.out.println(str2==str4); //false ,str2的对象在java堆上,不在常量池 System.out.println(str3==str4); //false ,str3同样在java堆,不相等 //String类的不可变性带来的结果就是,每一次"+"连接操作都会生成一个String对象, // 具体在java堆生成还是常量池生成取决于是否能在编译期确定,如str在常量池生成,str2、str3在java堆中 String str5 = "welcome "+"to "+"java "+"world"; //除4个直接量对象和最终的str5对象,还生成了 //"welcomet to"、"welcome to java "2个临时对象。因此,存在多个字符串连接时使用StringBuilder //补充 //基本数据类型常量及经final修饰过的字段也能在编译期确定 String string = "abc1"; String str6 = "abc"+1; System.out.println(string==str6); //true,1为基本数据类型,可在编译期确定 final String d = "d"; String str7 = "abc"+d; System.out.println(str==str7); //true,final修饰的变量在编译期可确定 } }
相关文章推荐
- java学习笔记 反射reflection相关知识点小结
- 【Java学习笔记】String相关语句
- JNI学习笔记4——本地代码创建Java对象(包括javaString)
- 区别 String 类 和 StringBuffer 类 -Java 学习笔记 (19)
- Java nio 学习笔记(一) Buffer(缓冲区)与Channel(通道)的相关知识
- 【Java学习笔记】Day 3 String及StringBuilder及StringBuffer 【待整理】
- Java基础学习笔记之六(1)__常用类String
- java学习笔记7_StringBuffer, StringBuffer和String的区别
- JNI学习笔记4——本地代码创建Java对象(包括javaString)
- 我的JAVA学习笔记(记下一些容易忘记的知识点)持续更新
- 【Java学习笔记】Day 4-1 String、StringBuilder和StringBuffer后续
- 【Java学习笔记】由String str=”abc”引出的故事
- Java容器学习笔记(二) Set接口及其实现类的相关知识总结
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.2 相关Java基础知识 类装载器 反射机制
- java学习笔记1——JDK相关
- 【Java 学习笔记】 String.split使用心得
- JNI学习笔记:(1)开篇(2)本地代码访问Java代码 (3)本地方法取得Java属性/调用java方法 (4)本地代码创建Java对象(包括javaString) (5) 本地方法处理java数组
- 10 声明字符串"javascript学习笔记,String字符串相关!" ( 追加和替换这两种用法做不出)
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.2 相关Java基础知识 类装载器 反射机制
- java基础学习笔记(二)String、正则