一、前言
在java中,和C语言一样,也有关于字符串的定义,并且有他自己特有的功能,下面我们
一起来学习一下。
二、String类概述
string在软件包java.lang下,所以不需要导包。
String字符串是java中的重点,String 类表示字符串类 ,所有的字符串(如"adf")都属于
此类,也就是说有" "双引号括起来的都属于此类,
三、字符串的特点
字符串不可变,他们的值在创建之后不能被改变。
虽然String的值的不可变的,但是他们可以被共享。共享就是其他成员也可以拥有这个值,
字符串效果相当于数组(char[]),但是底层原理是字节数组(byte[])
jdk8以前是字符数组,jdk9以后是字节数组。
四、String 构造方法
public String() //创建一个空白字符串对象,不含有任何内容。
public String(char[] ch)//根据字符数组的内容来创建字符对象。
public String (byte[] b)//根据字节数组的内容来创建字节对象。
String s=“abc” //字节赋值的方式创建对象,内容就是abc。
图示:
代码演示:
public class StringDemo { public static void main(String[] args) { String s1=new String();//创建空的字符串,其中不包括任何内容 System.out.println("s1:"+s1); char[]chs={'a','b','c'}; String s2=new String(chs);//给chs创建对象 System.out.println("chs:"+s2);//输出ch:abc byte[]bys={97,98,99}; String s3=new String(bys); System.out.println("bys:"+s3);//输出bys:abc,他会 转化成对应的Ascll码值 String s4="abc"; System.out.println("s4:"+s4);//输出s4:abc } }
综上看,推荐使用直接赋值的方式得到字符串对象。
五、String类对象的特点
通过new创建的的字符串对象,每一次new都会申请一个内存空间,虽然内容一样,
但是地址不同
通过直接赋值的方式来创建对象,赋值相同的值,因为是常量在堆内存的常量池中,
进入常量池的规则是:如果常量池中没有这个常量,则在常量池中创建一个,如果有
,则把已经存在的常量地址赋值给他,所以创建不同的变量去接受相同的值,他的内容
是一样的,地址也是一样的 。