关于Java中创建String的两种方式

目录

一:String的概念

二:String的两种构建方式

2.1:直接赋值

2.2:创建new关键字

2.2.1:public String()

2.2.2:public String(String original)

2.2.3:public String(char[] chs)

2.2.4: public String(byte[] chs)


一:String的概念

在Java中,String类位于java.lang包中,用于创建和处理文本字符串。String对象一旦创建,其内容就不能修改,它们通常是不可变的。这是因为String类被设计为final类,避免继承时可能出现的修改。(下图是API中String的解释)

二:String的两种构建方式

2.1:直接赋值

String 变量名="赋值";

String s="asadfsgsv";
System.out.println(s);
//运行结果: asadfsgsv

优点:此方法会节省内存空间并提升性能。

java存在一个常量池,可以用来存储字符串常量,称为字符串池(StringTable)。在编译期,JVM优先去字符串池(堆空间)中查找是否存在“asadfsgsv”。如果存在,就无需开辟新的内存空间,直接使用;如果不存在,就在常量池中开辟一个新的内存空间来储存储“asadfsgsv”;在栈内存中开辟一个名字为s的空间,来存储“asadfsgsv”在字符串池中的地址值。

缺点:赋值呆板。一经赋值,无法灵活更改,后期无法根据需求更改字符串的长度或者字符。

2.2:创建new关键字

2.2.1:public String()

1.public String() 创建空白字符串,不含任何内容

String s1=new String();
System.out.println(s1);
//运行结果为' '
//无单引号,只有一个空格。此处为表达出空格,特地添加

不推荐此方法赋值,此方法意义不大。

2.2.2:public String(String original)

public String(String original) 根据传入的字符串,创建字符串对象

String s2=new String("abc");
System.out.println(s2);
//运行结果为  abc

2.2.3:public String(char[] chs)

public String(char[] chs) 根据字符数组,创建字符串对象

char[] chs={'a','b','c'};
String s3=new String(chs);
System.out.println(s3);
//运行结果为: abc

此方法通过传递一个字符数组构建形成一个字符串,类似于将拼接在一起。创建过程看似十分笨拙,但使用方面十分灵活,可以通过修改数组,来进一步修改字符串的长度或者内容。解决了直接赋值一经赋值无法对字符串进行更改缺点。

2.2.4: public String(byte[] chs)

public String(byte[] chs) 根据字节数组,创建字符串对象

byte[] bytes={97,98,99,100};
String s4=new String(bytes);
System.out.println(s4);
//运行结果: abcd
//在ASCII码表中 97-a  98-b  99-c  100-d  将字节转换成字符,输出为abcd

此方法通过传递一个字节数组构建形成一个字符串,一般要将字节信息进行转换,转成字符串,使用此结构。创建过程看似更加笨拙,但以后网络中传输的数据其实都是字节信息,更够更加高效地满足修改需求。使用此方法时需注意48-57分别对于阿拉伯数字0-9。

创建new关键字方法缺点:每次创建变量都需要开辟一个新的空间,相比直接赋值,可能会造成地址滥用。比如之前创建s1,时间一长,忘记该变量,再创建相同用法的s2,s1与s2用法和赋值一样,但由于使用new关键词创建,则需开辟两块内存空间,但如果是直接赋值则一定程度上避免此浪费。

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值