前言:
看书过程中,对String 的一些总结
public class StringDemo {
public static void main(String args[]) {
String site = "www.runoob.com";
int len = site.length();
System.out.println( "菜鸟教程网址长度 : " + len );
}
}
public class StringDemo{
public static void main(String args[]){
char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'}; //!注意!
String helloString = new String(helloArray);
System.out.println( helloString );
}
}
3.下面代码创建了几个String对象?
public class Str {
public static void main(String args[]) {
String s1 = new String("s1") ;
String s2 = new String("s1") ;
System.out.println(s1==s2); //这两个是不同的对象 但是有相同的值 //!注意!
System.out.println(s1.equals(s2));
String s11 = "abc";
String s22= "abc";
System.out.println(s11==s22); //true 这两个是相等的,他们指向同一个变量,所以地址是相同的
}
}
// false
// true
// 3个,编译期在常量池中创建1个,即“s1”常量对象;运行期堆中创建2个,即s1和s2对象。
String s1="abc";
String s2="abc";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
/*output:
true
true
*/
5.初始化区别
String s = null;
String s = “abc”;
StringBuffer s = new StringBuffer();//StringBuffer对象是一个空的对象
StringBuffer s = new StringBuffer(“abc”);//创建带有内容的StringBuffer对象,对象的内容就是字符串”abc”
//String效率是远要比StringBuffer快的:
String S1 = “This is only a” + “ simple” + “ test”;
StringBuffer Sb = new StringBuilder(“This is only a”).append(“simple”).append(“ test”);
“ String s1=new String(“abc”)”语句创建了几个对象?
该语句首先String s1是声明,new String(“abc”)先在常量池中查找,若没有则创建“abc”,而后通过new在堆内存中创建对象,把“abc”拷贝赋值。String 定义为初始化一个新创建的 String 对象,表示一个与该参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的一个副本。故创建常量池和堆内存中两个对象,两个对象的地址值不一样。
String s1=new String("abc");
String s2="abc";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
/*output:
false
true
*/
8.String的连接很方便
String s1 = "abc";
String s2 = new String("s1") ;
s1=s1+"abcd";
String s2 = "abcd";
s1=s1+s2;
System.out.println(s1);
9.String 常见的两种 初始化
String s1="abc"; 这是将静态变量的地址 赋给了String
String s1= new String ("abc"); 这是在堆上 创建一个对象,然后将abc的值拷贝进去。