1,字符串条件操作
1.1比较字符串内容是否相等
-
-
System.out.println(str.equals("hello"));
输出:true
1.2比较字符串内容是否相等(忽略大小写)
-
-
System.out.println(str.equals("Hello"));
-
System.out.println(str.equalsIgnoreCase("Hello"));
输出: falsetrue
1.3判断字符串是否等于给定的正则表达式
-
-
System.out.println(str.matches("\\w+"));
输出为:true此处应该注意,matches(String regex),参数必须是正则表达式
1.4判断字符串是否以指定的前缀开始,或者以后缀结束
指定后缀结束:
-
-
System.out.println(str.endsWith("o"));
-
System.out.println(str.endsWith("lo"));
-
System.out.println(str.endsWith("llo"));
-
System.out.println(str.endsWith("lla"));
结果为:
true
true
true
false
指定前缀开始:
-
-
System.out.println(str.startsWith("h"));
-
System.out.println(str.startsWith("he"));
-
System.out.println(str.startsWith("hel"));
-
System.out.println(str.startsWith("hol"));
结果为:
true
true
true
false
在指定索引处是否以指定前缀开始
-
-
System.out.println(str.startsWith("l",0));
-
System.out.println(str.startsWith("l",1));
-
System.out.println(str.startsWith("l",2));
-
System.out.println(str.startsWith("llo",2));
-
System.out.println(str.startsWith("llo",3));
结果为:false false true true false
1.5判断字符串长度,以及字符串是否为空
-
-
-
System.out.println(str1.length());
-
System.out.println(str2.length());
-
System.out.println(str1.isEmpty());
-
System.out.println(str2.isEmpty());
结果为:5 0 false true 需要注意的是,""和null代表的含义是完全不一样的.
String str=""在内存中是这样的:

String str=null在内存中是这样的

由于null根本没有对应的堆内存空间,所以如果调用lenth()和isEmpty()方法,会出现空指针错误:
Exception in thread "main" java.lang.NullPointerException
2,字符串切割(字符串数组),字符数组
2.1字符串切割成字符串数组形式
-
-
public static void main(String []args){
-
String str="hello everyone my name is simon";
-
String a[]=str.split(" ");
-
for(int i=0;i<a.length;i++)
-
System.out.println(a[i]);
-
-
结果为:hello everyone my name is simon 需要注意的是,split(String regex)参数必须是正则表达式!
2.2字符串拆分成字符数组形式
-
String str="hello everyone my name is simon";
-
char a[]=str.toCharArray();
-
for(int i=0;i<a.length;i++)
-
System.out.println(a[i]);
输出为: h e l l o e v e r y o n e m y n a m e i s s i m o n
一丶String类
String 类本身由于其命名规范的要求肯定是一个类,但是却发现,此类在使用上较为特殊,而且发现在 String 类的操作中依然可以使用“+”或“+=”进行字符串的连接,还可以发现,各个数据类型的数据只要是碰到了 String 类的内容,则都统一向 String 进行转换,所以 String 类的使用及特点就非常的重要。
1,String的比较,涉及的常用函数为
equals(),equalsIgnoreCase()-------->比较String内容
compareTo(),compareToIgnoreCase()---------->比较String大小
regionMatches()-------->匹配子串
-
public class StringTest {
-
public static void main(String[] args) {
-
-
-
-
// TODO Auto-generated method stub
-
System.out.println(a.equals(b));//字符串内容比较
-
System.out.println(a.equalsIgnoreCase(b));//字符串内容比较,忽略大小写
-
-
System.out.println(a.compareTo(b));//比较字符串大小
-
System.out.println(a.compareToIgnoreCase(b));//比较字符串大小,忽略大小写
-
-
* 下述两个方法用来比较两个字符串中指定区域的子串。入口参数中,用toffset和ooffset分别指出当前字符串中的子串起始位置和要与之
-
* 比较的字符串中的子串起始地址;len 指出比较长度。前一种方法可区分大写字母和小写字母,如果在 boolean ignoreCase处写 true,表示
-
* 将不区分大小写,写false则表示将区分大小写。而后一个方法认为大小写字母有区别。由此可见,实际上前一个方法隐含了后一个方法的功能。
-
-
* regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len);
-
regionMatches( int toffset,String other,int ooffset,int len);
-
-
System.out.println(c.regionMatches(0, a, 0, 3));//区分大小写
-
System.out.println(c.regionMatches(false,0, a, 0, 3));//同上
-
System.out.println(c.regionMatches(true,0,a, 0, 3));//不区分大小写
-
-
-
对应的输出应该是:
false
true-320falsefalsetrue2,String的截取,常用函数为
public String subString(int begin)---->返回一个新的字符串从begin开始 public String subString(int begin,int end)---->返回的字符串是从begin开始长度为end-begin的串
注意:比如有一个字符串abcdef,那么a位置是0,b位置是1,依次类推,f是5,该字符串长度为6.
-
public class StringTest {
-
public static void main(String[] args) {
-
-
-
-
System.out.println(a.substring(0));//结果ABC
-
System.out.println(a.substring(1));//结果BC
-
System.out.println(a.substring(2));//结果C
-
System.out.println(c.substring(0, 4));//结果abcd
-
System.out.println(c.substring(1, 4));//结果bcd
-
-
split()函数是一个常用函数,去掉特定字符串,其余字符串作为数组返回.
-
public class StringTest {
-
public static void main(String[] args) {
-
String c = "abkefksdfksfwekwww";
-
-
String []s1 = c.split("k");
-
for(int i=0;i<s1.length;i++)
-
System.out.println(s1[i]);
-
-
-
结果为:
ab ef sdf sfwe www
|