System.out.println(s.indexOf(‘e’,1)); // 1
System.out.println(s.indexOf(‘h’,1)); //不存在,返回-1
System.out.println(“=============”);
//int indexOf(String str,int fromIndex)
//返回指定字符串第一次出现的索引,以指定的索引开始搜索
System.out.println(s.indexOf(“owo”,2)); // 4
System.out.println(s.indexOf(“owo”,8)); //不存在,返回-1
System.out.println(“=============”);
//public String substring(int beginIndex) 截取一段字符串
// 子字符串以指定索引处的字符开头,包括指定索引处,并扩展到该字符串的末尾。
System.out.println(s.substring(3)); // loworld
// 索引超出范围,返回空字符串
String ss = s.substring(10);
System.out.println(ss.equals(“”)); // true
System.out.println(“=============”);
//public String substring(int beginIndex,int endIndex)
//子串截取范围左闭右开,开始于指定beginIndex并延伸到字符索引endIndex-1
System.out.println(s.substring(1,3)); // el
//System.out.println(s.substring(1,12)); //数组下标越界异常
}
}
String类的转化方法
String类实现转换功能的方法有
byte[] getBytes() —— 转换为字节数组
char[] toCharArray() —— 转换为字符数组
static String valueOf(char[] chs) —— 字符数组转换为字符串
static String valueOf(int i) —— int值转换为字符串
String toLowerCase() —— 字符串全部小写
String toUpperCase() —— 字符串全部大写
String concat(String str) —— 将指定字符串连接到原字符串的后面
package test.StringDemo;
import java.util.Arrays;
public class demo7 {
public static void main(String[] args) {
String s = “helloWORLD”;
//public byte[] getBytes()
// 使用平台的默认字符集将此String编码为字节序列,将结果存储到新的字节数组中。
byte[] b = s.getBytes();
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
}
//也可以像下面这样打印,只需要一行
//[104, 101, 108, 108, 111, 87, 79, 82, 76, 68]
System.out.println(Arrays.toString(b));
System.out.println(“===============”);
//char[] toCharArray()将此字符串转换为新的字符数组。
//由原先的字符串变成字符数组
char[] chars = s.toCharArray();
for(char c:chars){
System.out.println©;
}
//[h, e, l, l, o, W, O, R, L, D]
System.out.println(Arrays.toString(chars));
System.out.println(“===============”);
//将字符数组转换为字符串
//static String valueOf(char[] chs)
System.out.println(String.valueOf(chars)); //helloWORLD
//同理这里也可以将int类型的数据转换为字符串类型
String ss = String.valueOf(20);
System.out.println(ss); //20
System.out.println(“===============”);
//String toLowerCase() 将字符串内容全部转化成小写
System.out.println(s.toLowerCase()); //helloworld
// String toUpperCase(),将字符串内容全部转大写
System.out.println(s.toUpperCase()); //HELLOWORLD
System.out.println(s); //helloWORLD,s自身的值并没有被改变
System.out.println(“===============”);
//public String concat(String str)将指定的字符串连接到该字符串的末尾
System.out.println(s.concat(“java”)); //helloWORLDjava
//这里同样需要注意的是
String s2 = null;
//这里会报空指针异常的错误
//System.out.println(s2.concat(“nothing”));
}
}
字符串的替换方法
实现替换功能的方法
String replace(char old,char new)
String replace(String old,String new)
package test.StringDemo;
public class demo10 {
public static void main(String[] args) {
String s = “helloworld”;
//String replace(char old,char new)替换字符
//将字符串中所有的l替换成a,返回一个新的字符串
String s1 = s.replace(‘l’,‘a’);
System.out.println(s1); //heaaoworad
//String replace(String old,String new)替换字符串
String s2 = s.replace(“owo”,“ovo”);
System.out.println(s2); //hellovorld
//如果被替换的字符串不存在,返回原来的字符串
String s3 = s.replace(“abc”,“efg”);
System.out.println(s3); //helloworld
}
}
去除字符串两边的空格
String trim()
package test.StringDemo;
public class demo11 {
public static void main(String[] args) {
//去除字符串两边的空格
String s = " hello ";
System.out.println(s);
System.out.println(s.trim());
}
}
按字典顺序比较两个字符串
int compareTo(String str) —— 按位置比较字符串
int compareToIgnoreCase(String str) ——按位置比较字符串,忽略大小写
package test.StringDemo;
public class demo12 {
public static void main(String[] args) {
//当前面的字符不相同时
String s1 = “hello”; //h的ASCII码值为104
String s2 = “hello”;
String s3 = “java”; //j的ASCII码值为106
String s4 = “apache”; //a的ASCII码值为97
System.out.println(s1.compareTo(s2)); //0
System.out.println(s1.compareTo(s3)); //-2
System.out.println(s1.compareTo(s4)); //7
//当前面的字符相同时
String ss1 = “hel”;
String ss2 = “helloworld”;
System.out.println(s1.compareTo(ss1)); //2
System.out.println(s1.compareTo(ss2)); //-5
//忽略大小写
String s5 = “Hello”; //H的ASCII码值为72
System.out.println(s1.compareTo(s5)); //32
System.out.println(s1.compareToIgnoreCase(s5)); //0
}
}
这里可以来看一下compareTo的源码
public int compareTo(String anotherString) {
int len1 = value.length;
int len2 = anotherString.value.length;
int lim = Math.min(len1, len2);
char v1[] = value;
char v2[] = anotherString.value;
int k = 0;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) {
return c1 - c2;
}
k++;
}
return len1 - len2;
}
这里可以简单的总结为,
当对应位置的字符不相同时,返回的值是ASCII码值相减的结果。
当对应位置的字符都相同,但是字符个数不相同时,返回的是字符串长度相减的结果。
练习用的题目
题目一:统计一个字符串中大写字母,小写字母,数字出现的次数
package test.StringDemo;
public class demo8 {
public static void main(String[] args) {
String s = “helloHello123World”;
char[] chars = s.toCharArray();
int Bigcount = 0;
int Smallcount = 0;
int Numcount = 0;
for(char c:chars){
if(c>=‘A’&&c<=‘Z’){
Bigcount++;
}
else if(c>=‘a’&&c<=‘z’){
Smallcount++;
}
//这里注意一下,不能用(int)c的方式,因为字符’1’对应的int值是49
else if(c>=‘0’&&c<=‘9’){
Numcount++;
}
}
System.out.println(“大写字母个数”+Bigcount
+“小写字母个数”+Smallcount
+“数字个数”+Numcount);
}
}
题目二:把一个字符串的首字母转成大写,其余的都是小写
package test.StringDemo;
public class demo9 {
public static void main(String[] args) {
String s = “helloWORLD”;
String sHead = s.substring(0,1);
System.out.println(sHead);
String sTail = s.substring(1);
System.out.println(sTail);
String sLower = sTail.toLowerCase();
String sUpper = sHead.toUpperCase();
String sWhole = sUpper+sLower;
System.out.println(sWhole);
//也可以合成进一步里面写
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://i-blog.csdnimg.cn/blog_migrate/34dc7d4d86a8347339a6a620231c07b2.jpeg)
最后
码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到
又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考
以下是部分内容截图
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://i-blog.csdnimg.cn/blog_migrate/34dc7d4d86a8347339a6a620231c07b2.jpeg)
最后
码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到
又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考
以下是部分内容截图
[外链图片转存中…(img-0XCArHD3-1712630770242)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!