字符串概念
字符串是字符的组合,它不是基本数据类型,字符char才是基本数据类型,在Java中,字符串是一个类,我们看到的字符串都是对象。
创建方式:
- 字面值创建:String str1 = “ab”;
- new的方式调用String的构造方法创建:String str2 = new String(“abc”);
- 通过+加号进行字符串拼接创建:String str3 = “my” + “name”;
public class TestString{
public static void main(String[] args){
String str1 = "ab";
String str2 = new String("abc");
String str3 = "my" + "name";
}
}
注意点:
- String类是由final修饰,所以不能被继承
- 字符串一旦创建,不可改变长度,不可插入删除修改字符,就像一个常量一样
- 字符串长度,可以用.length()方法获取
字符串格式化
public class StringFormat{
public static void main(String[] args){
String name = "委托单"
int number = 3;
String sentenceFormat = "%s数量已经达到上限【%d】条,需要推送消息%n"
String log = String.format(sentenceFormat, name, number);
System.out.println(log + "正在发送信息...");
}
}
委托单数量已经达到上限【3】条,需要推送消息
正在发送信息...
- %s表示字符串
- %d表示数字
- %n表示换行
- 格式化调用了String.format(format, args…)方法
包含的字符串对象个数
String str = new String("abc");
以上代码中,左侧String str
表示变量,其类型为String,中间的等号=
表示赋值,new String()
创建了一个对象,它调用了String的如下构造方法,其参数也是一个字符串对象,所以"abc"
也是一个对象,一共两个对象。
public String(String original) { //other code ... } ;
- Java虚拟机中,存在一个字符串池,其中保存很多String对象,可以被共享使用,从而提高效率。
"my" + "name"
这种方式创建的字符串新对象才会被加入到字符串池中,new String("my") + new String("name")
这种通过new方式拼接的字符串对象不会被加入到字符串池中String a = "name"; String b = "name"
这种情况,只有一个对象,虽然变量名不同,但字符串池中,只有一个"name"
字符串对象。
字面值
创建对象我们一般都是用new的方式,但给基本数据类型的变量赋值,不用new,可以直接写值,这种给基本数据类型赋值的方式就叫字面值。
int number = 3;
float f = 3.14f;
boolean b = false;