六 字符串
6.1 String字符串
1、String类对象创建
定义String类对象格式:**
1)String 字符串变量名=“字符串常量”;
2)String 字符串变量名=new String(字符串常量);
3)String 字符串变量名;
字符串变量名=“字符串常量”;
public class StringDemo {
public static void main(String[] args) {
String s1="java is beautiful";//字符串变量
String s2=new String("hello java!");
String s3;
s3="JAVA";
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
2、String类对象的常用基本方法
字符串变量通过点“.”方式调用,即字符串变量.方法名()
1、获取字符串长度方法
length()
2、字符串拼接
concat()
3、字符串比较
equals()
4、字符串代替
replace()
5、去掉字符串首尾空格,返回字符串
trim()
6、返回字符串对象
toString()
7、返回字符串中所有字符转变为大写的新字符串
toUpperCase()
8、获取给定的index处字符串
charAt()
public class StringDemo {
public static void main(String[] args) {
String s1="java is beautiful";//字符串变量
String s2=new String("hello java!");
String s3;
s3="JAVA";
String s4 =" java and python ";
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println("========================");
//获取字符串的长度
System.out.println("s1的长度为:"+s1.length());
//字符串拼接
System.out.println(s1.concat(s2));//s2拼接到s1中
//字符串比较
System.out.println("JAVA".equals(s3));
//两个字符串比较,忽略大小写
System.out.println("java".equalsIgnoreCase(s3));
//字符串代替 replace
System.out.println(s1.replace("java", "JAVA"));
//去掉字符串首尾空格,返回字符串
System.out.println(s4.trim());
//返回字符串对象
System.out.println(s4.toString());
//返回字符串中所有字符转变为大写的新字符串
System.out.println(s4.toUpperCase());
//获取给定的index处字符串
System.out.println(s4.charAt(1));
}
}
运行结果:
java is beautiful
hello java!
JAVA
========================
s1的长度为:17
java is beautifulhello java!
true
true
JAVA is beautiful
java and python
java and python
JAVA AND PYTHON
j
3、遍历字符串中的所有字符,并打印
public class BianliDemo {
public static void main(String[] args) {
String s1="java is beautiful";
for(int i=0;i<s1.length();i++) {
System.out.print(s1.charAt(i));
}
}
}
运行结果:
java is beautiful
4、单词计数案例
方法一:
import java.util.Scanner;
// 统计单词的个数。
class CountWords {
public static void main(String[] args) {
// 输入
Scanner sc = new Scanner(System.in);
// 输入一行(可以接收一行的数据)
String str = sc.nextLine();
// 默认有0个单词
int wordcount=0;
// 从第一个到最后一个字符
for(int i=0;i<str.length();i++)
{
// 如果遇到了空格表示一个单词的结束。
if(str.charAt(i)==' ')
{
// 累加
wordcount++;
}
}
// 输出字符串
System.out.println(str);
// 输出单词的个数。
System.out.println(wordcount+1);
}
}
方法二:
import java.util.Scanner;
public class WordCount {
public static void main(String[] args) {
//计数器
int count = 0 ;
System.out.println("输入一系列以空格隔开的字符串");
Scanner sc = new Scanner(System.in);
//忽略字符串头尾的空白
String str = sc.nextLine().trim();
String[] words = str.split(" ");
for(int i = 0 ; i < words.length; i++) {
if(!words[i].equals("")) {
//不为空格时才计数(即只计算单词数)
count++;
}
}
System.out.println("一共有"+count+"个单词");
sc.close();
}
}
6.2 StringBuffer类
当String类字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题线程安全的可变字符序列。
1、StringBuffer类对象创建
定义StringBuffer类对象格式:
1)StringBuffer 字符串变量名 =new StringBuffer();//默认长度16字符
2)StringBuffer 字符串变量名 =new StringBuffer(缓冲区长度);
3)StringBuffer 字符串变量名 =new StringBuffer(“字符串常量”);
public class StringBufferDemo {
public static void main(String[] args) {
StringBuffer s2 =new StringBuffer();//默认长度16字符
StringBuffer s3 =new StringBuffer(50);//长度为50
StringBuffer s4 =new StringBuffer("i like java");
System.out.println("s2="+s2);
System.out.println("s3="+s3);
System.out.println("s4="+s4);
}
}
public class StringBufferDemo {
public static void main(String[] args) {
StringBuffer s1 =new StringBuffer();//默认长度16字符
System.out.println("s1的缓冲区长度:"+s1.capacity());//查看对象缓冲区长度
System.out.println("s1的长度:"+s1.length());
StringBuffer s2 =new StringBuffer(50);//缓冲区长度为50
System.out.println("s2的缓冲区长度:"+s2.capacity());//查看对象缓冲区长度
System.out.println("s2的长度:"+s2.length());
StringBuffer s3 =new StringBuffer("i like java python");
System.out.println("s3的缓冲区长度:"+s3.capacity());//查看对象缓冲区长度 16+11=27
System.out.println("s3的长度:"+s3.length());
}
}
运行结果:
s1的缓冲区长度:16
s1的长度:0
s2的缓冲区长度:50
s2的长度:0
s3的缓冲区长度:34//16+18
s3的长度:18
2、StringBuffer类成员方法
1)append():添加、增加
public class ChengYuanWay {
public static void main(String[] args) {
//append:添加
StringBuffer S1 =new StringBuffer("i like java");
System.out.println("原来的S1:"+S1);
//append() :S1.append()
S1.append(",html,web");
System.out.println("添加后的S1:"+S1);
}
}
注意:该方法多次重写
public class ChengYuanWay {
public static void main(String[] args) {
//append:添加
StringBuffer S1 =new StringBuffer("i like java");
System.out.println("原来的S1:"+S1);
//append() :S1.append()
S1.append(",html,web").append(",python").append(",php");
System.out.println("添加后的S1:"+S1);
}
}
public class ChengYuanWay {
public static void main(String[] args) {
//append:添加
StringBuffer S1 =new StringBuffer("i like java");
System.out.println("原来的S1:"+S1);
//append() :S1.append()
S1.append(",html,web").append(",python").append(",php语言").append(12.67);
System.out.println("添加后的S1:"+S1);
}
}
2)insert():在指定的索引上,插入字符串
public class InsertDemo {
public static void main(String[] args) {
StringBuffer S=new StringBuffer("abcd 祖国 ");
System.out.println("原来的S:"+S);
//insert添加元素 1)找到位置? 找到位置之后在这个位置添加我们要添加的元素
S.insert(0, "F").insert(3, "G");//a索引0:0就是它的位置
System.out.println("添加元素后的S:"+S);
}
}
append()和insert()区别:
a、append()只能在字符串的结尾添加,而insert()在指定的索引上,插入字符串
b、insert()两个参数,第一个参数索引(位置),第二参数你要添加什么值 通过索引值找到位置才能添加
3)deleteCharAt(int index):删除指定索引的值
4)delete(int start,int end)删除此序列的子字符串中的字符,子串开始于指定start并延伸到字符索引end - 1
5)replace:替换
6)reverse:反转
7)substring:截取
public class StringBufferDemo {
public static void main(String[] args) {
// replace:替换
StringBuffer s =new StringBuffer();
s.append("hello java");
System.out.println(s);
System.out.println(s.length());
s.replace(6, 10, "html");
System.out.println("替换之后的s:"+s);
//反转:reverse()
StringBuffer s1=new StringBuffer();
s1.append("我爱你");
System.out.println(s1);
s1.reverse();
System.out.println("反转之后的s1:"+s1);
//截取:substring
StringBuffer s2=new StringBuffer();
s2.append("java").append(" html").append(" php").append(" web").append("python");
System.out.println(s2);
String s3= s2.substring(4, 10);
System.out.println(s3);
}
}
3、统计大、小写以及数字出现次数案例
案例:键盘输入字符串(absDGHS345;;;),统计该字符串中的大写字母、小写字母、数字字符出现的次数
import java.util.Scanner;
public class CountStringDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc =new Scanner(System.in);
System.out.println("请输入一串字符串:");
String str=sc.next();
int bigc=0;
int smallc=0;
int numc=0;
for(int i=0;i<str.length();i++) {
char c=str.charAt(i);
if(c>='a' &&c<='z') {
smallc++;
}
else if (c>='A' &&c<='Z') {
bigc++;
}
else if (c>='0' &&c<='9') {
numc++;
}
}
System.out.println("大写字母有"+bigc+"个");
System.out.println("小写字母有"+smallc+"个");
System.out.println("数字有"+numc+"个");
}
}