赞
踩
【Java核心技术】Java基本语法
【Java核心技术】Java面向对象编程
【Java核心技术】Java异常处理
【Java高级编程】Java多线程
【Java高级编程】Java常用类
【Java高级编程】Java枚举类&注解
【Java高级编程】Java集合
【Java高级编程】Java泛型
【Java高级编程】JavaIO流
【Java高级编程】Java网络编程
【Java高级编程】Java反射机制
【Java高级编程】Java8的新特性
/**
* String的实例化方式
* 方式一:通过字面量定义的方式
* 方式二:通过new + 构造器的方式
*
* 面试题:String s = new String("abc");方式创建对象,在内存中创建了几个对象?
* 答:两个:一个是堆空间中new结构,另一个是char[]对应的常量池中的数据:"abc"
*/
@Test
public void test() {
// 通过字面量定义的方式:此时的s1和s2的数据javaEE声明在方法区中的字符串常量池中。
String s1 = "javaEE";
String s2 = "javaEE";
// 通过new + 构造器的方式:此时的s3和s4保存的地址值,是数据在堆空间中开辟空间以后对应的地址值
String s3 = new String("javaEE");
String s4 = new String("javaEE");
System.out.println(s1 == s2);// true
System.out.println(s1 == s3);// false
System.out.println(s1 == s4);// false
System.out.println(s3 == s4);// false
};
String s1 = "hello";
String s2 = "world";
String s3 = "hello" + "world";
String s4 = s1 + "world";
String s5 = s1 + s2;
String s6 = (s1 + s2).intern();
final String s7 = "hello"; // 此时的s7是一个常量
String s8 = s7 + "world";
System.out.println(s3 == s4);// false
System.out.println(s3 == s5);// false
System.out.println(s4 == s5);// false
System.out.println(s3 == s6);// true
System.out.println(s3 == s8);// true
String str = new String(); // char[] value = new char[0];
String str1 = new String("abc"); // char[] value = new char[]{'a','c','c'};
StringBuffer sb1 = new StringBuffer(); // char[] value = new char[16];底层创建了一个长度是16的数组
System.out.println(sb1.length()); //0
sb1.append('a');//value[0] = 'a';
sb1.append('b');//value[1] = 'b';
StringBuffer sb2 = new StringBuffer("abc");//char[] value = new char["abc".length() + 16];
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。