String的问题整理

前言:
看书过程中,对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的值拷贝进去。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值