String 的常用函数
1.构造函数:
1 //(1)public String() : 空参构造函数 2 3 String s = new String(); 4 s = "helloworld"; 5 6 //(2)public String(byte[] bytes) : 把给定的字节数组 转换成字符串 7 8 byte[] bys = {'a',98,99,100,101}; 9 String s = new String(bys); 10 11 System.out.println(s); 12 13 //(3)public String(byte[] bytes,int startIndex,int length) : 把给定的字节数组的一部分,转换成字符串 14 15 byte[] bys = {'a',98,99,100,101}; 16 17 String s = new String(bys, 1, 2); 18 19 System.out.println(s); 20 21 22 //(4)public String(char[] value) : 把给定的字符数组 转换成字符串 23 24 char[] chs = {97,'b','c','d','e'}; 25 String s = new String(chs); 26 27 System.out.println(s); 28 29 30 //(5)public String(char[] value,int startIndex,int length) :把给定的字符数组的一部分, 转换成字符串 31 32 char[] chs = {97,'b','c','d','e'}; 33 34 String s = new String(chs, 1, 2); 35 System.out.println(s); 36 37 38 //(6)public String(String original) : 把字符串 转换成 字符串 39 40 String s = new String("hello");
2.判断函数

1 //(1)boolean equals(Object obj) : 把给定的字符串与该字符串比较 2 //(2)boolean equalsIgnoreCase(String str) : 比较两个字符串是否一致(忽略大小写) 3 //(3)boolean contains(String str) : 该字符串中 是否包含 给定的字符串 4 //(4)boolean startsWith(String str) : 判断该字符串是否以 给定的字符串开始 5 //(5)boolean endsWith(String str) : 判断该字符串是否以 给定的字符串结束 6 //(6)boolean isEmpty() : 判断字符串是否为空 ("")
3.获取函数

1 //int length() : 获取字符串的长度 2 //char charAt(int index) : 获取该字符串中指定位置对应的字符 3 //int indexOf(int ch) : 获取给定的字符在该字符串中第一次出现的位置 4 //int indexOf(String str) : 获取给定的字符串在该字符串中第一次出现的位置 5 //int indexOf(int ch,int fromIndex): 从指定位置开始, 获取给定的字符在该字符串中第一次出现的位置 6 //int indexOf(String str,int fromIndex) : 从指定的位置开始, 获取给定的字符串在该字符串中第一次出现的位置 7 //String substring(int start) : 从指定位置开始, 截取该字符串, 返回一个新的字符串 (包含start位置的元素) 8 //String substring(int start,int end) : 从指定位置开始, 到指定位置结束,获取该字符串, 返回一个新的字符串(包左不包右)
4.转换函数

1 //byte[] getBytes() : 把该字符串 转换成 字节数组 2 3 //String s = "abcde"; 4 //char[] toCharArray() : 把该字符串转换成 字符数组 5 //static String copyValueOf(char[] chs) : 把字符数组 转换成 字符串 6 7 //static String valueOf(char[] chs) : 把字符数组 转换成 字符串 8 9 //static String valueOf(int i)基本类型 : 把int数据类型的数据 转换成字符串 10 //String toLowerCase() : 把该字符串 转换成 小写字母 11 //String toUpperCase() : 把该字符串转换成 大写字母 12 //String concat(String str) : 把该字符串与给定的字符串连接起来, 返回一个新的字符串 (给定的字符串在后面)
替换函数

1 //String replace(char old,char new) : 在该字符串中,使用新的字符 替代老的字符 2 //String replace(String old,String new) : 在该字符串中, 使用新的字符串 替代 老的字符串
截取函数

1 //String[] split(String regex)
去除字符串两端空格

//String trim()
按字典顺序比较两个字符串

1 //int compareTo(String str) 2 //int compareToIgnoreCase(String str)
Scanner :获取 键盘输入的数据的 封装类
常用方法:
String: 获取字符串数据
public String nextLine()
int: 获取int数据
public int nextInt()

1 Scanner sc = new Scanner(System.in); 2 String s1 = sc.nextLine(); 3 String s2 = sc.nextLine(); 4 int s3 = sc.nextInt(); 5 int s4 = sc.nextInt(); 6 System.out.println(s1); 7 System.out.println(s2); 8 System.out.println(s3); 9 System.out.println(s4);
结论:
一个Scanner对象
先获取String再获取String可行,先获取String再获取int可行,先获取int再获取int可行
先获取int再获取String不可行 , 如果要先获取int,再获取String ,可以创建多个Scanner对象来完成操作--代码如下:

1 Scanner sc = new Scanner(System.in); 2 int num = sc.nextInt(); 3 Scanner sc2 = new Scanner(System.in); 4 String str = sc2.nextLine(); 5 System.out.println(num); 6 System.out.println(str);
先获取int再获取String不可行--代码如下:

1 Scanner sc = new Scanner(System.in); 2 int num = sc.nextInt(); 3 String str = sc.nextLine(); 4 System.out.println(num); 5 System.out.println(str);
练习题:
1. String s1 = new String(“abc”);
String s2 = “abc”;
有区别吗? 请说出理由
有
s1创建的时候,在内存中 创建了2个对象
s2创建的时候,在内存中 创建了1个对象
2. 请写出程序的运行结果

1 String s1 = new String("hello"); 2 String s2 = new String("hello"); 3 String s3 = s1; 4 5 System.out.println(s1 == s2); // false 6 System.out.println(s1.equals(s2)); // true 7 8 System.out.println(s1 == s3); // true 9 System.out.println(s1.equals(s3)); // true 10 11 String s4 = "hello"; 12 String s5 = "hello"; 13 14 System.out.println(s4 == s5); // true 15 System.out.println(s4.equals(s5));// true
3. 请写出程序的结果

String s6 = "hello"; String s7 = "world"; String s8 = "helloworld"; String s9 = s6+s7; String s10 = "hello" + "world"; System.out.println(s8 == s9); // false System.out.println(s8.equals(s9));//true System.out.println(s8 == s10); // true System.out.println(s8.equals(s10)); //true
如果操作的常量,先看常量池中有没有,有,直接使用,没有,构建出来
如果操作的变量,不看常量池有没有, 直接构建
练习 代码仅供参考
// 遍历获取字符串中的每一个字符

1 Scanner sc=new Scanner(System.in); 2 System.out.println("请输入要遍历的字符串"); 3 String str=sc.nextLine(); 4 for (int i = 0; i < str.length(); i++) { 5 System.out.println(str.charAt(i)); 6 }
练习(统计大写小写数字的个数)

1 Scanner sc = new Scanner(System.in); 2 System.out.println("请输入要统计的字符串"); 3 String str=sc.nextLine(); 4 int big=0; 5 int small=0; 6 int num=0; 7 char[] chs=str.toCharArray(); 8 for (int i = 0; i < chs.length; i++) { 9 int x=chs[i]; 10 if(x>='A'&&x<='Z'){ 11 big++; 12 }else if(x>='a'&&x<='z'){ 13 small++; 14 }else if(x>='0'&&x<='9'){ 15 num++; 16 } 17 } 18 System.out.println("大写:"+big+",小写:"+small+",数字:"+num);
练习(把字符串的首字母转成大写,其余为小写)

1 Scanner sc=new Scanner(System.in ); 2 3 System.out.println("请输入一个字符串"); 4 String str=sc.nextLine(); 5 6 String start=str.substring(0, 1); 7 String end=str.substring(1); 8 9 str=start.toUpperCase()+end.toLowerCase(); 10 11 System.out.println(str);
练习(获取一个字符串中指定子串出的次数)

1 //输入原始字符串 2 Scanner sc=new Scanner(System.in); 3 System.out.println("请输入字符串"); 4 String originalStr=sc.nextLine(); 5 6 //输入指定字符串(分割字符串) 7 System.out.println("请输入字指定符串"); 8 String spliStr=sc.nextLine(); 9 int count=0; 10 //数组长度 11 int length=originalStr.split(spliStr).length; 12 13 if(originalStr.equals(spliStr)){ 14 count=1; 15 }else if(originalStr.endsWith(spliStr)){ 16 count=length; 17 }else { 18 count=length-1; 19 } 20 System.out.println(originalStr+"中有:"+count+"个"+spliStr);
练习(对字符串中字符进行自然顺序排序)"basckd" – 结果"abcdks"

1 //String str="才的饿爱吧"; 2 //String str="cbdaef"; 3 String str="54321"; 4 char[] chs=str.toCharArray(); 5 Arrays.sort(chs); 6 7 str=String.valueOf(chs); 8 System.out.println(str);
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)