一、String类
字符数组转为字符串、判断字符串是否为空库函数、判断两个字符串是否相等库函数
String str=new String("hello1");
String str1="hello2";
char[] value={'a','b','l','l'};
String str3=new String(value);//数组转字符串
System.out.println(str3);
System.out.println(str3.isEmpty());//判断字符串是否为空
System.out.println(str.equals(str1));//判断str字符串是否等于str1字符串
二、比较长度compareTo函数
字符相等,返回两个字符串相减的差值,字符不相等,返回两个字符相减的差值(ASCII相加减)
String str1=new String("prokect");
String str2=new String("Prokectasdad");
System.out.println(str1.compareTo(str2));//按照字典序比较,大于返回正数,小于返回负数
System.out.println(str1.compareToIgnoreCase(str2));//忽略大小写比较长度
三、获取字符串某个字符
System.out.println(str1.charAt(0));//拿到下标为0的字符
int ch=str2.indexOf('a');//返回第一次出现a的字符下标
System.out.println(str2.indexOf('a',2));//从2下标开始搜索字符a,返回下标
System.out.println(str2.indexOf("kect"));//在主串中查找子串返回k的下标
System.out.println(str2.lastIndexOf('s'));//从后往前搜索字符s
四、字符串和数字之间相互转换、用子字符串替换主字符串中部分字符串
public static void main3(String[] args) {
String str1=String.valueOf(123);//将整型转变为字符串
String str2=String.valueOf(12.122);//浮点数转变字符
System.out.println("_______________");
String str3="1999";
//字符转数字
int data=Integer.parseInt(str3);
System.out.println(data);
//变大写
String str4=new String("alert");
System.out.println(str4.toUpperCase());
//变小写
String str5="MAINtain";
System.out.println(str5.toLowerCase());
//字符串转数组
char[] array=str5.toCharArray();
//替换字符
String str6=new String("QuesTion");
String ret=str6.replace('Q','R');
//在字符中用R替换q,区分大小写
System.out.println(ret);
//替换子串
String str7=new String("Commitment");
String ret2=str7.replace("Com","Cat");
System.out.println(ret2);
}
五、分割字符以及注意使用两个转义字符使特殊符号被识别,如 '.'
public static void main4(String[] args) {
String str="He is vigorously";
String[] ret=str.split(" ",2);//以空格为分隔符
// 将字符串分割成2个字符串,用字符串数组接收
for (int i = 0; i < ret.length; i++) {
System.out.println(ret[i]);
}
String str1="192.168.0.1";
String[] ret2=str1.split("\\.",4);//需要用两个转义字符转义'.'
for (int i = 0; i < ret2.length; i++) {
System.out.println(ret2[i]);
}
}
六、字符串截取
public static void main5(String[] args) {
String str="abcdefg982";
//返回从2位置开始截取的所有字符
String s=str.substring(2);
System.out.println(s);
//截取从下标2开始到下标6的字符串,左闭右开
String s1=str.substring(2,6);//[2,6)
System.out.println(s1);
}
public static void main(String[] args) {
String str1="abcd";
String str2="abcd";
System.out.println(str1==str2 );//比较时两个字符串在字符串常量池搜寻,结果返回true
String str3="hello";
//新创建一个对象,再把这个对象指向字符串常量池
String str4=new String("hello");
System.out.println(str3==str4);//结果返回false
}
七、字符串拼接
//字符串拼接
public static void main7(String[] args) {
String str=new String("abcdef");
str +="ghf";
System.out.println(str);
}
java中StringBuffer和StringBuild
StringBuffer和StringBuild都是在原来的对象上进行修改,而String是在新一个对象上进行修改然后返回这个对象给String类型的对象
//StringBuilder和StringBuffer
public static void main9(String[] args) {
//都在同一个对象修改
//StringBuffer和StringBuilder是可变的
StringBuilder stringBuilder=new StringBuilder("abc");
System.out.println(stringBuilder);
//逆置字符串
stringBuilder.reverse();
System.out.println(stringBuilder);
//添加字符
stringBuilder.append("123").append(99);
stringBuilder.append("19.9");
System.out.println(stringBuilder);//输出结果1239919.9,为字符串
//String变为StringBuilder
String ret=stringBuilder.toString();//使用toString方法转变
}
八、在字符串中寻找第一次出现的字母,返回它的下标
public int firstUniqChar2(String s) {
//小写字母ASCII值从97开始,26个字母长度为123
int[] count=new int[26];
//字符的ASCII值对应数组下标
for (int i = 0; i < s.length(); i++) {
char ch=s.charAt(i);//获取字符串s的每个元素
count[ch-'a']++;//字符的ASCII值++
}
//再次遍历,返回下标(索引)
for (int i = 0; i < s.length(); i++) {
//s字符串从下标0开始遍历
char ch=s.charAt(i);
if (count[ch-'a']==1){//count数组亦从字母的ASCII-'a'开始遍历
return i;//返回索引
}
}
//运行到此处说明没有进入if循环
return -1;
}
九、求字符串最后一个单词的长度
从后往前寻找空格,返回最后一个空格的下标,然后从该下标+1的位置截取后面字符,统计长度
public static int pursuitLen(){
Scanner in=new Scanner(System.in);
while(in.hasNextLine()){
String str=in.nextLine();
int index=str.lastIndexOf(' ');//获取最后一个空格的下标
String ret=str.substring(index+1);
System.out.println(ret.length());
return ret.length();
}
return -1;
}
十、判断字符串是否回文
//判断是否回文字符
public boolean isPalindrome(String s) {
s.toLowerCase();//全变小写
int left=0;
int right=s.length()-1;
while(left<right){
//不是字符就进入该循环
while (left<right&&!isvalue(s.charAt(left))){
left++;
}
//left为有效字符
while(left<right&&!isvalue(s.charAt(right))){
right--;
}
//right为有效字符
if (s.charAt(left)!=s.charAt(right)){//不相等返回false
return false;
}else {//相等左下标和右下标移动
left++;
right--;
}
}
//循环走完不进false,则返回true
return true;
}
public boolean isvalue(char ch){
return Character.isLetter(ch)||Character.isDigit(ch);//使用库函数检查字符是否为数字或字母
}