Java string类构造方法和特点

             string 在java.lang包内,所以实现的时候不需要导包

定义:
             string类代表字符串,Java程序中的所以的字符串文字(例如”abc“)都被实现为此类的实例也就是说,java程序中的所有的双引号字符串,都是string的对象
字符串的特点:
             1.字符串不可变,他们的值在创建后不可更改!也就是说为字符串分配一个地址后,地址中的内容不可改变,对字符串变量重新赋值相当于指向了新的内存空间)
             2.虽然string的值是不可改变的,但是他们可以共享
             3.字符串效果上相当于字符数组(char[]),但是底层原理是(byte[])
 

string的构造方法


         public String();         创建一个空字符串对象,没有内容
         public String(char[]);   根据字符数组的内容,来创建字符串对象
         public String(byte[]);   根据字节数组的内容,来创建字符串对象
         String s ="abc";         直接赋值的方式来创建字符串对象,内容就是abc
         
         推荐直接使用赋值的方式得到字符串对象,联系来说,int char 之类的是不是也是如此,待实验

public static void main(String[] args) {
		//public String();创建一个空字符串对象,没有内容
		String s1 = new String();
		System.out.println("s1:"+s1);
		
		//public String(char[]);   根据字符数组的内容,来创建字符串对象
		char[] chs = {'a','b','c'};
		String s2 = new String(chs);
		System.out.println("s2:"+s2);
		
		//public String(byte[]);   根据字节数组的内容,来创建字符串对象
		byte[] bys = {105,98,99};  //97,98,99 在底层对应的就是abc ,105对应的就是i,已经固定写好的东西,拿来用就好
		String s3 = new String(bys);
		System.out.println("s3:"+s3);
		
		//String s ="abc";         直接赋值的方式来创建字符串对象,内容就是abc
		String s4 = new String("abc");
		System.out.println("s4:"+s4);
	}

string对象的特点


     1.通过new来创建字符串对象,每一次new都会申请一次内存空间,虽然内容相同,但是地址不同。
          示例       char[] chs = {'a','b','c'};
                        String s1 = new String(chs);
                        String s2 = new String(chs);
上述代码中,jvm(Java虚拟机)会首先创建一个字符数组,然后每一次new的时候,都会分配一个新的地址,只不过值是相同的。


     2.以""方式来创建的字符串,只要字符序列相同(顺序和大小写),无论程序代码出现了几次,jvm都只会创建一个String对象,并在字符串池中维护
         示例        String s1 ="abc";
                        String s2 ="abc";
上述代码中,针对第一行代码,jvm会创建一个String对象,并放在字符串池中,并给s1参考;
       在第二行代码中则让s2直接参考字符串池中的string对象,也就是说它们本质上是一个对象,地址也是一样的。

 特点的示例:

public static void main(String[] args) {
		char[] chs = new char[]{'a','b','c'};
		String s1 = new String(chs);
		String s2 = new String(chs);
		String s3 ="abc";
		String s4 ="abc";
		//比较s1于s2的地址是否相同
		System.out.println(s1==s2);
		System.out.println(s1.equals(s2));
		//比较s1于s3的地址是否相同
		System.out.println(s1==s3);
		//比较s3于s4的地址是否相同
		System.out.println(s3==s4);
		
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想给世界留下 1bite 的印象

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值