第八节、轻松学Java_字符串

本文详细介绍了Java中创建字符串的五种方式,包括直接赋值、空字符串、new关键字、字符数组以及子数组构造。接着展示了常用字符串方法的调用,如length()、charAt()、indexOf()等,并通过示例演示了字符串的比较、解析、类型转换和格式化。还讲解了StringBuilder类的使用,包括append()、insert()、delete()、reverse()等操作。
摘要由CSDN通过智能技术生成

String类

字符串的创建

主要有以下5种创建方式:

package com.test;

public class Test {
	public static void main(String[] args) {
		//创建字符串的方式
		String s1="Hello World!";
		String s2="";
		String s3=new String("Hello World!!");
		char[] c1= {'j','a','v','a'};
		String s4=new String(c1);
		char[] c2= {'h','e' ,'l','l','o','j','a','v','a'};
		//第二个参数代表子数组的第一个字符的索引,第三个参数代表子数组的长度
		String s5=new String(c2,3,5);
		System.out.println(s1);
		System.out.println(s2);
		System.out.println(s3);
		System.out.println(s4);
		System.out.println(s5);
	}
}

输出:
Hello World!

Hello World!!
java
lojav

字符串相关方法的调用

package com.test;

public class Test {
	public static void main(String[] args) {
		String s1="Hello World!";
		System.out.println("字符串的长度:"+s1.length());
		System.out.println("字符串中的第一个字符:"+s1.charAt(0));
		System.out.println("字符l第一次出现的位置:"+s1.indexOf("l"));
		System.out.println("字符l最后一次出现的位置:"+s1.lastIndexOf("l"));
		System.out.println("将World替换为Java:"+s1.replace("World","Java"));
		System.out.println("从第六个字符截取到末尾:"+s1.substring(5));
		System.out.println("判断字符串是否以He开头:"+s1.startsWith("He"));
		System.out.println("判断字符串是否以ld结尾:"+s1.endsWith("ld"));
		System.out.println("判断字符串是否包含He:"+s1.contains("He"));
		System.out.println("判断字符串是否为空:"+s1.isEmpty());
		System.out.println("将字符串中的字母转换成大写:"+s1.toUpperCase());
		
		String s2="   Hello Java!   ";
		System.out.println("去掉字符串两端的空格:"+s1.trim());
		System.out.println("去掉字符串所有的空格:"+s1.replace(" ",""));
		System.out.println("判断字符串相同:"+s2.equals(s1));
		
		//字符串的连接操作
		String s3;
		s3=s1+s2;
		String s4=s1.concat(s2);
		System.out.println(s3);
		System.out.println(s4);
	}
}

输出:
字符串的长度:12
字符串中的第一个字符:H
字符l第一次出现的位置:2
字符l最后一次出现的位置:9
将World替换为Java:Hello Java!
从第六个字符截取到末尾: World!
判断字符串是否以He开头:true
判断字符串是否以ld结尾:false
判断字符串是否包含He:true
判断字符串是否为空:false
将字符串中的字母转换成大写:HELLO WORLD!
去掉字符串两端的空格:Hello World!
去掉字符串所有的空格:HelloWorld!
判断字符串相同:false
Hello World! Hello Java!
Hello World! Hello Java!

字符串的比较操作

compareTo()和compareToIgnoreCase()
compareTo()方法按字典顺序比较两个字符串。compareToIgnoreCase()方法是按字典顺序比较两个字符串,但不考虑大小写。
如果此字符串等于参数字符串,则返回0;如果此字符串按字典顺序小于参数字符串,则返回一个小于 0 的值;如果此字符串按字典顺序大于参数字符串,则返回一个大于 0 的值。

package com.test;

public class Test {
	public static void main(String[] args) {
		String s1="Hello World!";
		String s2="Hello Java!";
		String s3="HELLO JAVA!";
		int a1=s1.compareTo(s2);
		int a2=s3.compareToIgnoreCase(s2);
		//W-J=13
		System.out.println(a1);
		System.out.println(a2);
	}
}

输出:
13
0

字符串解析

在java.lang 包中有一个String.split()方法,可以将字符串解析为一个数组。

package com.test;

public class Test {
	public static void main(String[] args) {
		String ss = "one little,two little,three little.";
		String[] str = ss.split("[ ,.]");
		for (String s : str) {
			System.out.println(s);
		}
	}
}

输出:
one
little
two
little
three
little

正则表达式的模式是空格、英文逗号和英文句号。也就是按照这三个对字符串进行解析和分割。

正则表达式

在String 类中提供了matches()方法,用于检查字符串是否匹配给定的正则表达式。
在这里插入图片描述

package com.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
	public static void main(String[] args) {
		// 要验证的字符串
		String str = "xyz@abc.net";
		// 邮箱验证规则
		String regEx = "[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}";
		// 编译正则表达式
		Pattern pattern = Pattern.compile(regEx);
		// 忽略大小写的写法
		// Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
		Matcher matcher = pattern.matcher(str);
		// 字符串是否与正则表达式相匹配
		boolean rs = matcher.matches();
		System.out.println(rs);
	}
}

输出:
true

字符串的类型转换

toCharArray()方法,它将字符串转换为字符数组

package com.test;

public class Test {
	public static void main(String[] args) {
		// toCharArray()
		String str = "java develop,jsp develop,vb develop";
		char[] c = str.toCharArray();
		System.out.println("字符数组的长度:" + c.length);
		System.out.println("char 数组中的元素是:");
		for (int i = 0; i < str.length(); i++) {
			System.out.print(c[i] + " ");
		}
	}
}

输出:
字符数组的长度:35
char 数组中的元素是:
j a v a d e v e l o p , j s p d e v e l o p , v b d e v e l o p

valueOf()方法,作用是返回参数数据类型的字符串表示形式。指定要返回的字符串类型的数据类型,这里是布尔型、字符型、整型、长整型、浮点型、双精度浮点型、对象、字符数组和字符数组的子字符数组。

package com.test;

public class Test {
	public static void main(String[] args) {
		// valueOf 方法的使用
		boolean b = true;
		System.out.println("布尔类型=>字符串:");
		System.out.println(String.valueOf(b));
		int i = 34;
		System.out.println("整数类型=>字符串:");
		System.out.println(String.valueOf(i));
	}
}

输出:
布尔类型=>字符串:
true
整数类型=>字符串:
34

格式化字符串

在这里插入图片描述

package com.test;

public class Test {
	public static void main(String args[]) {
		String str1 = String.format("32 的八进制:%o", 32);
		System.out.println(str1);
		String str2 = String.format("字母G 的小写是:%c%n", 'g');
		System.out.print(str2);
		String str3 = String.format("12>8 的值:%b%n", 12 > 8);
		System.out.print(str3);
		String str4 = String.format("%1$d,%2$s,%3$f", 125, "ddd", 0.25);
		System.out.println(str4);
	}
}

输出:
32 的八进制:40
字母G 的小写是:g
12>8 的值:true
125,ddd,0.250000

StringBulder

对String、StringBuffer 和StringBuilder 这3 个类的选择总结如下:

  • 如果要操作少量的数据,建议使用String。
  • 在单线程操作字符串缓冲区的情况下操作大量数据,建议使用StringBuilder。
  • 在多线程操作字符串缓冲区的情况下操作大量数据,建议使用StringBuffer。
package com.test;

public class Test {
	public static void main(String args[]) {
		StringBuilder sb1=new StringBuilder();
		StringBuilder sb2=new StringBuilder("Hello World!");
		//追加
		sb1.append("Hello");
		sb1.append("World!");
		System.out.println(sb1);
		//插入
		sb1.insert(5, ',');
		System.out.println(sb1);
		//删除
		sb1.deleteCharAt(5);
		System.out.println(sb1);
		sb1.delete(5,7);
		System.out.println(sb1);
		//反转
		sb2.reverse();
		System.out.println(sb2);
		//替换字符串
		sb2.replace(1,5,"ELLO");
		System.out.println(sb2);
		//替换字符
		sb2.setCharAt(1, 'w');
		System.out.println(sb2);
	}
}

输出:
Hello,World!
HelloWorld!
Hellorld!
!dlroW olleH
!ELLOW olleH
!wLLOW olleH

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

身影王座

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值