一、String类
1、字符串的特点
-
字符串是常量,创建后不会被修改
-
字符串可以显示任意文字的信息
-
在Java中,单引号扩起来的叫做字符,双引号扩起来的叫做字符串
2、声明字符串
字符串是常量,他可以显示任何形式的文字信息,字符串在创建之后就不能修改,在Java单引号中的内容表示字符,双引号中的内容则表示字符串。
“我是字符串”,“12345678”,“世界真美好 我想出去走走”
- 需要用java.lang.String这个类来创建可以保存字符串的变量。所以字符串变量是一个对象。
声明一个字符串变量a与声明两个字符串变量的方法
String a;
String a,b;
⚠️注意:在不给字符串变量赋值的情况下,其默认值为null,如果此时调用String的方法,则会发生空指针异常。
3、创建字符串
(1)引用字符串常量
直接使用赋值运算符将常量赋值给String类型变量
String a = "You are beautiful!";
String b = "You are so cute!",c = "You are clever!";
String str1,str2;
str1 = "We are students";
str2 = "We are students";
⚠️注意:当两个字符串对象引用想用的常量,就会具有相同的实体,在内存中的地址就是一致的。
(2)利用构造方法实例化
利用new关键字创建String对象:
String a = new String("You are beautiful!");
String b = new String(a);
(3)利用字符数组实例化
定义一个字符(char)数组,使用该字符数组创建一个字符串:
char[] charArray = {
"t","i","m","e"};
String a = new String(charArray);
(4)提取字符串数组中的一部分创建字符串对象
定义一个字符数组,提取字符数组中的元素创建一个字符串:
char[] charArray = {
"t","i","m","e","-","d","a","y"};
String a = new String(charArray,0,4); //从数组索引为0的位置开始提取4个字符,创建一个新的字符串
实例1:为字符串赋值
创建CreateString类,声明多个字符串变量,用不用的复制方法给这些字符串变量赋值并输出。
//import java.util.String;
public class CreateString {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*声明String类型,需要通java.util.String进行*/
// 通过引用字符串常量创建字符串
String a,b;
a = "锄禾日当午";
b = "汗滴禾下土";
// 利用构造方法实例化
String str1 = new String("谁知盘中餐");
//利用字符数组实例化
char charArray [] = {
'粒','粒','皆','辛','苦'};
String arrstr1 = new String(charArray);
//提取字符数组中的一部分创建字符串对象
String arrstr2 = new String(charArray,3,2);
System.out.println("a ="+a);
System.out.println("b ="+b);
System.out.println("str1 ="+str1);
System.out.println("arrstr1 ="+arrstr1);
System.out.println("arrstr2 ="+arrstr2);
}
}
Console:
a =锄禾日当午
b =汗滴禾下土
str1 =谁知盘中餐
arrstr1 =粒粒皆辛苦
arrstr2 =辛苦
二、字符串的属性和方法
对已经声明的字符串,可以对其进行相应的操作。包括进行字符串的连接、获取字符串的索引位置、截取部分字符、字符串比较、大小写转换、去除空白等操作。
1、字符串的常用方法
(1)获取字符串长度
str.length()
方法是返回字符串中字符的数量。并且返回的结果是包括字符串中空格长度的结果。
str.length();
例如,定义一个字符串num。使用length()
方法获取其长度:
String num = "12345 67890";
int size = num.length();
11
⚠️注意:数组length属性和和字符串的length()
方法虽然都是获取长度的,但是一个有括号一个没有括号,在编程当中,有括号调用的被称为方法,无括号被引用的是属性。
(2)字符串连接
连接字符串是比较简单的一种操作字符串的方法。连接字符串时,既可以实现多个字符串的串联,也可以实现字符串和其他数据类型的变量或者常量的连接。
1)串联符号实现字符串串连
Java中相连的字符串不可以直接分成两行:
System.out.println("I like
Java");
如果字符串很长需要换行编辑,我们可以用“+”号将两行字符串连接起来,在加号处换行就不会有问题了。
System.out.println("I like"+
"Java");
2)concat()方法实现字符串串联
我们除了可以使用符号“+”对字符串串联,我们还可以使用String自带的concat()
方法来实现将新字符串串联到原字符串结尾的功能。
a.concat(str);
- a:原字符串;
- str:需要连接的新字符串
由于字符串是常量,是不能修改的,所以在连接两个字符串之后,原先的字符串不会发生变化,而是在内存中生成一个新的字符串。下图就是字符串修改后内存的变化情况:
实例2:自我介绍
创建StringConcatenation类,使用”+“和”+=“将多个字符串连接成一个字符串,将自我介绍的内容链接成一句话。
public class StringConcatenation {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "我会Python编程语言";
String b = "我会Java编程语言";
String c = a+","+b;
String d = "下面是我会的编程语言:";
d += c;
System.out.println("a = "+a);
System.out.println("b = "+b);
System.out.println("c = "+c);
System.out.println("d = "+d);
// String自带的concat方法可以实现字符串的串联
System.out.println(d.concat(c));
}
}
Console:
a = 我会Python编程语言
b = 我会Java编程语言
c = 我会Python编程语言,我会Java编程语言
d = 下面是我会的编程语言:我会Python编程语言,我会Java编程语言
下面是我会的编程语言:我会Python编程语言,我会Java编程语言我会Python编程语言,我会Java编程语言
3)字符串与其他数据类型连接
字符串可以与其他数据类型进行连接,如果将其他数据类型与字符串连接,其他数据类型会被直接转换成字符串,然后实现字符串的串联。
实例3:将字符串与数组连接
创建Link类,在主方法中创建数值型变量,输出把字符串与整型、浮点型变量相连的结果。
public class Link {
public static void main(String[] args) {
// TODO Auto-generated method stub
int booktime = 4;
float practice = 2.5f;
System.out.println("Everyday,I coat " + booktime +
" hours read and "+(practice+booktime)+" hour practice java.");
}
}
Console:
Everyday,I coat 4 hours read and 6.5 hour practice java.
上述例子,实现的是字符串与整型变量和浮点型变量的连接过程与结果。因为booktime和practice都不是字符串,索引在连接时会使程序自发调用同 toString()方法,将其他数据类型转换成字符串,再进行连接。
⚠️注意:在没有括号的情况下,运算符“+”会自动将非字符串类型的变量或者常量转换成字符串,所有在字符串连接中间进行其他数值运算,需要注意运算符的优先级。例如:
System.out.println("Everyday,I coat " + booktime +
" hours read and "