String 对象的几种创建方法和它的特殊性

/**
 * Created by Dale on 2017/5/27.
 * 字符串创建的几种方式
 * 1.字面值常量
 * 2.String()    空参构造:创建一个空的字符串对象
 * 3.public String(String original) 使用给定的字符串常量创建一个字符串对象
 * 4.public String(byte[] bytes) 给定一个字节数组,根据字节数组的内容翻译成字符串
 * 5.public String(char[] value) 给定一个字符数组,将数组翻译成字符串
 *
 */
public class Demo {

    public static void main(String[] args){
        //1.
        String s = "abc";
        System.out.println(s);

        //2.
        String s2 = new String();
        System.out.println(s2);

        //3.
        String s3 = new String("123");
        System.out.println(s3);

        //4.
        byte[] bytes = new byte[]{100,99,98,97};
        String s4 = new String(bytes);
        System.out.println(s4);
    }

}



package com.xyf.string;

/**
 * Created by Dale on 2017/5/27.
 * 字符串为常量,字符串值一旦初始化便不可以修改,即字符串对象内容不变,字符串的引用可以指向其他对象
 *
 */
public class Demo2 {
    public  static void main(String args[]){
        String s = "abc";
        s="bcd";
        System.out.println(s);

//        Person p = new Person("嬴渠梁");
//        p.setName("嬴驷");
//        p = new Person("赢荡");
//        System.out.println(p);


        //面试题:问比较的结果是多少
        String str = "abc";
        String str2 = new String("abc");
        String str3  = "abc";
        System.out.println(str==str2);   //false
        System.out.println(str==str3);   //true

        //比较的是字面量
        System.out.println(str.equals(str2));  //true
        System.out.println(str.equals(str3));  //true


    }
}
String string2 = new String("abc");实际上是"abc"本身就是常量池中的一个对象,在运行 new String()时,把常量池中的字符串"abc"复制到堆中,并把这个对象的引用交给string2 。所以创建了两个String对象,一个在常量池中,一个在堆中。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值