(1)自己实现的版本
public class MyString { public static void main(String[] args) { String str1 = "HelloWorld"; String str2 = "HelloWorlds"; System.out.println(isEqueals(str1 , str2)); } public static boolean isEqueals(String str1 , String str2){ char[] arr1 = str1.toCharArray();//将字符串转为字符数组 char[] arr2 = str2.toCharArray(); //字符串长度相等时,进入循环,比较对应字符是否相等 while(arr1.length == arr2.length){ for(int i = 0; i < arr1.length;i++){ //在循环内的对应字符有不相等的直接返回false if(arr1[i] != arr2[i]){ return false; } } //长度相等时,对应字符没有不同的,则说明字符串是相等的,返回true return true; } //字符串长度不相等时,跳出循环,并返回false return false; } } (2)String类自带*equals()* ```java public class MyString { public static void main(String[] args) { String str1 = "HelloWorld"; String str2 = "helloWorld"; System.out.println(str1.equals(str2)); } }运行结果: 不区分大小写的比较
public class MyString { public static void main(String[] args) { String str1 = "HelloWorld"; String str2 = "helloWorld"; System.out.println(str1.equalsIgnoreCase(str2)); }(1)自己实现的版本
public static int myCompareTo(String str1 , String str2){ if(str1 == null || str2 == null){//参数校验 return -100; //有一个字符串为空时,则返回错误码-100 } char[] arr1 = str1.toCharArray(); char[] arr2 = str2.toCharArray(); for(int i = 0; i < arr1.length && i <arr2.length;i++){ if(arr1[i] < arr2[i]){ return -1; } else if(arr1[i] > arr2[i]){ return 1; } else return 0; } return 0; }测试:
public static void main(String[] args) { String str1 = "helloWorld"; String str2 = "HelloWorld"; System.out.println(myCompareTo(str1 , str2)); } public static void main(String[] args) { String str1 = "HelloWorld"; String str2 = "HelloWorld"; System.out.println(myCompareTo(str1 , str2)); } public static void main(String[] args) { String str1 = "HelloWorld"; String str2 = "helloWorld"; System.out.println(myCompareTo(str1 , str2)); } public static void main(String[] args) { String str1 = null; String str2 = "helloWorld"; System.out.println(myCompareTo(str1 , str2)); }(2)String类自带版本compareTo()
public static void main(String[] args) { String str1 = null; String str2 = "helloWorld"; System.out.println(str1.compareTo(str2)); }上面自己实现的字符串比较大小遇到空字符串返回-100,而在String类自带的compareTo()方法中,遇到空字符串直接抛出异常。
public static void main(String[] args) { String str1 = null; String str2 = "helloWorld"; System.out.println("A".compareTo("a")); }将字符串转为字符数组 在以上两个方法中,皆有对toCharArray()的使用。
contains() 存在返回true,不存在返回false
public static void main(String[] args) { String str1 = "this is a simple love long"; String str2 = "love"; String str3 = "world"; System.out.println(str1.contains(str2)); System.out.println(str1.contains(str3)); }indexOf(String str,int fromIndex) 存在返回该子字符串的首元素的索引,不存在返回-1 第一个参数为子字符串,第二个参数为开始检索的位置
public static void main(String[] args) { String str1 = "this is a simple love song"; String str2 = "love"; String str3 = "world"; System.out.println(str1.indexOf(str2)); System.out.println(str1.indexOf(str3)); } public static void main(String[] args) { String str1 = "this is a simple love song"; String str2 = "love"; String str3 = "world"; System.out.println(str1.indexOf(str2,7)); System.out.println(str1.indexOf(str2,20)); }replace(char oldChar,char newChar)
public static void main(String[] args) { String str1 = "this is a simple love song"; System.out.println(str1.replace(" ","--"));replaceAll(String regex,String replacement) 将regex全部替换掉
String str2 = "ccaccbeatifulccworld"; System.out.println(str2.replaceAll("c"," "));replaceFirst(String regex,String replacement) 只替换掉第一个出现的regex
String str2 = "ccaccbeatifulccworld"; System.out.println(str2.replaceFirst("c"," "));split(String regex) regex正则表达式 在这里可以理解为,按照哪个字符进行拆分
String str4 = "name=Lily&age=18" ; String[] rel = str4.split("&"); for(int i = 0;i < rel.length;i++){ String[] temp = rel[i].split("="); System.out.println(temp[0] + ":" + temp[1]); }split(String regex,int limit) 第二个参数表示,将字符串最多拆分为几部分
String str1 = "this is a simple love song"; String[] rel = str1.split(" ",3); for(String x:rel){ System.out.println(x); }substring(int begainIndex) 从指定的位置开始截取至最后一个元素
String str1 = "this is a simple love song"; System.out.println(str1.substring(22));substring(int begainIndex,int endIndex) 截取指定区间的字符串(前闭后开区间)
String str1 = "this is a simple love song"; // System.out.println(str1.substring(22)); System.out.println(str1.substring(10,16));1.trim() 删除掉字符串两端的空格
String str1 = " this is a simple love song "; System.out.print("[" + str1 + "]"); System.out.println(); System.out.println("[" + str1.trim() + "]");*2.isEmpty()*判断字符串是否为空字符串
String str2 = ""; System.out.println(str2.isEmpty()); String str3 = " "; System.out.println(str3.isEmpty()); String str4 = null; System.out.println(str4.isEmpty());可以看出,当字符串为null是,会抛出异常
*l3.length()*求字符串的长度 ps: 字符数组求长度的表达式为str.length(这里的length指属性),而字符串长度的表达式是调用一个方法length()
String str1 = " this is a simple love song "; System.out.println(str1.length());