【java基础】之String和new String()的区别
2015-03-25 21:30
453 查看
String s = "java基础",这种形式的赋值在java中被称之为直接量,它是存在于常量池中。
当我们程序启动后,程序会自动在JVM中开辟内存空间。当我们声明了这样一个字符串之后,JVM会首先常量池中查找这个值为“java基础”的对象。如果有,就把它赋给当前引用。
如果没有则在常量池中新建一个“java基础”对象。
而当我们用new String()时,就是在堆里面建立一个String类型的对象。无论他的值是否和其他对象的值相同。然后在栈里面引用这个对象。
如:
String s = "java"; // 生成一个对象。并且该对象在常量池中。
String s = new String("java"); //生成两个对象。一个是“java",一个是new String("java"); "java"本身来讲就是一个字符串对象。而new String("java")又返回一个字符串对象。
当我们程序启动后,程序会自动在JVM中开辟内存空间。当我们声明了这样一个字符串之后,JVM会首先常量池中查找这个值为“java基础”的对象。如果有,就把它赋给当前引用。
如果没有则在常量池中新建一个“java基础”对象。
而当我们用new String()时,就是在堆里面建立一个String类型的对象。无论他的值是否和其他对象的值相同。然后在栈里面引用这个对象。
如:
String s = "java"; // 生成一个对象。并且该对象在常量池中。
String s = new String("java"); //生成两个对象。一个是“java",一个是new String("java"); "java"本身来讲就是一个字符串对象。而new String("java")又返回一个字符串对象。
相关文章推荐
- 【Java基础】String,StringBuffer,StringBuilder之间的区别
- [java] "Hello"和new String("Hello")产生String对象的区别
- Java 基础之 String、StringBuilder、StringBuffer、CharSequence 区别
- Java基础之String、StringBuffer与StringBuilder的区别及应用场景
- java基础知识(三)-- String使用equals和==比较的区别
- Java中String直接赋字符串和new String的区别
- Java String = "" 和 new String()区别
- 【Java基础之String、StringBuilder、StringBuffer】Java中的String、StringBuilder以及StringBuffer的区别
- java基础面试题:String和StringBuffer的区别
- java基础 equals与==区别,String的hashcode
- Java基础----StringBuffer与String的区别
- Java基础之String、StringBuffer、StringBuilder的区别
- Java基础:String 和StringBuffer的区别
- Java语言基础之String及StringBuffer之一(区别)
- Java基础6(String str;与String str=null的区别)
- java基础知识回顾之---java StringBuffer,Stringbuilder与String的区别
- java 中堆和栈的区别 已经String和new String()的区别
- Java中String直接赋字符串和new String的区别
- 【java基础】String中的equal与==的区别
- 2015年11月26日 Java基础系列(一)之String与StringBuffer与StringBuilder的区别