Java String API

时间:2020-8-27 作者:admin


1、String是由final修饰的,是不可以改变的,JVM对其做了一个优化,在内存中开辟了一段区域作为常量池,凡是通过”字面量”形式创建的字符串对象都会缓存并重用。

package string;

public class StringDemo {
	public static void main(String[] args) {
		String str = "123";
		String s1 = "123";
		String s2 = "123";
		System.out.println(str == s1);//true
		System.out.println(str == s2);//true
		//修改内容会创建并引用新对象
		str = str + "!";
		System.out.println(str);	 //123!
		//s1 和 s2不受影响
		System.out.println(s1 == s2);//true
		
		String s4 = new String("123!");
		System.out.println(str == s4);//false
		
		/*
		 * 编译器有一个优化措施,当编译源代码时发现一个计算表达式
		 * 所有参数都是字面量时,会直接进行计算,并将结果编译到class
		 * 文件中,所以,下面的代码在class文件中为:
		 * String s5 = "123!";
		 */
		String s5 = "12" + "3";
		System.out.println(s1 == s5);//true
		
		/*
		 * 计算表达式一方为变量,那么会在运行期拼接,
		 * 那么会创建新对象
		 */
		String s = "12";
		String s6 = s + "3";
		System.out.println(s1 == s6);//false
	}
}

2、IndexOf:

int indexOf(String str) 返回给定字符串在当前字符串中的位置,若当前字符串不包含该内容则返回值为-1。

package string;

public class indexOf {
	public static void main(String[] args) {
		
		String str = "thinking in java";
		
		int index = str.indexOf("in");
		System.out.println(index);
		
		//可以从指定位置开始查找
		index = str.indexOf("in", 3);
		System.out.println(index);
		
		//查找最后一次出现的位置
		index = str.lastIndexOf("in");
		System.out.println(index);
	}
}

3、substring:

String substring(int start,int end) 截取指定范围内的字符串,两个参数为开始到结束的下标。

注:java api有一个特点,通常用两个数字表示范围时都是”含头不含尾”的。

package string;

public class substring {
	public static void main(String[] args) {
		String host = "www.baidu.com";
		
		String sub = host.substring(4,9);
		System.out.println(sub);	//baidu
		
		//一个参数为截取到末尾
		sub = host.substring(4);
		System.out.println(sub);	//baidu.com
	}
}

4、length:

int length() 返回当前字符串长度(字符个数)

public static void main(String[] args){
	String str = "i love java";
	System.out.println(str.length());
}

5、trim:

String trim() 清除字符串两边的空格

public static void main(String[] args){
	String str = "  hello			";
	System.out.println(str);	//  hello			
	String trim = str.trim();
	System.out.println(trim);	//hello
}

6、charAt:

char charAt(int index) 获取当前字符串中指定位置处对应的字符串

public class CharAtDemo {
	public static void main(String[] args) {
		//            0123456789012345
		String str = "thinking in java";
		char c = str.charAt(9);
		System.out.println(c);	//i
	}
}

7、startWith:

boolean startWith(String str)
boolean endWith(String str)

判断当前字符串是否是以给定字符串开始或结尾的。

public class StartsWithDemo {
	public static void main(String[] args) {
		String str = "thinking in java";
		
		boolean starts = str.startsWith("thi");
		System.out.println("starts:"+starts);
		
		boolean ends = str.endsWith("va");
		System.out.println("ends:"+ends);
	}
}

8、String toUpperCase:

String toUpperCase()
String toLowerCase()

将当前字符串中的英文部分转换为全大写或者全小写

package string;

public class ToUpperCase {
	public static void main(String[] args) {
		
		String str = "我爱java";
		
		String up = str.toUpperCase();
		System.out.println(up);		//我爱JAVA
		
		String low = str.toLowerCase();
		System.out.println(low);	//我爱java
	}
}

9、ValueOf:

String提供了一个静态方法:valueOf,可以将给定的内容转换为字符串。

package string;

public class ValueOf {
	public static void main(String[] args) {
		int d = 1;
		String str = String.valueOf(d);
		System.out.println(str);
		
		double dou = 1.1;
		str = String.valueOf(dou);
		System.out.println(str);
		
		str = d + "";
	}
}

10、matches:

String支持正则表达式方式一:

boolean matches(String regex)用给定的正则表达式验证当前字符串是否符合其格式要求。

package string;

public class Matches {
	public static void main(String[] args) {
		String email = "fancq@tedu.cn";
		/*
		 * 验证email格式的正则表达式
		 * \w+@\w+(\.[a-zA-Z]+)+
		 */
		String regex = "\\w+@\\w+(\\.[a-zA-Z]+)+";
		/*
		 * 注意:matches方法指定的正则表达式就算不指定
		 * 边界匹配符,也是做全匹配验证的。
		 */
		boolean match = email.matches(regex);
		if(match) {
			System.out.println("是邮箱");
		}else {
			System.out.println("不是邮箱");
		}
	}
}

11、split:

String[] split(String regex)

使用给定的正则表达式来拆分当前字符串。并将拆分后的内容以字符串数组形式返回。

package string;

import java.util.Arrays;

public class Split {
	public static void main(String[] args) {
		String str = "afa123fgf456dklg789jsl123gsf456dgs456df";
		String regex = "[0-9]+";
		String[] array = str.split(regex);
		System.out.println(array.length);
		System.out.println(Arrays.toString(array));
	}
}

12、replaceAll:

String replaceAll(String regex,String str)

将当前字符串中符合正则表达式要求的部分替换为给定内容。

package string;

public class ReplaceAll {
	public static void main(String[] args) {
		String str = "abc123afdsf456qga789";
		/*
		 * 将数字部分替换为"#NUMBER#";
		 */
		String regex = "[0-9]+";
		str = str.replaceAll(regex, "#NUMBER#");
		System.out.println(str);
	}
}
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。