05.【Java】字符串(String与StringBuffer)

本文详细介绍了Java中的String类和StringBuffer类。String是不可变的,适用于简单的字符串操作,而StringBuffer是可变的,适合在多线程环境中进行字符串拼接等操作。文章通过实例演示了字符串的创建、连接、截取、转换等方法,以及StringBuffer的append、setCharAt、insert和delete等方法,强调了在需要频繁修改字符串时使用StringBuffer能提高性能。
摘要由CSDN通过智能技术生成

一、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 "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值