【Java笔记分享】String类的常用常见方法

笔记中涉及到 21条 ,共 22个 常用常见方法,还有第九条上的一个问题:

我使用 GB 2312 编码,而JVM用 UTF-8 编码。为什么重新编码后仍输出中文乱码?

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

public class StringMethods {
	public static void main(String[] args) throws UnsupportedEncodingException {
		String s = "number";//用于测试的字符串对象
		String str = "u";//用于替换的字符
		int count = 1;//只是用来计数的防止找不到运行结果
		
		/* 1 */
		System.out.println(count ++);
		//char	//把指定下标的元素转变为char
		System.out.println(s.charAt(0));
		System.out.println();
		
		/* 2 */
		System.out.println(count ++);
		//boolean	//比较两个字符串是否相等
		System.out.println(s.equals("number"));
		System.out.println(s.equals("Number"));
		System.out.println();
		
		/* 3 */
		System.out.println(count ++);
		//int	//比较两个字符串是否相等并显示大小(引用 - 参数)
		System.out.println(s.compareTo("nUmber"));
		System.out.println();
		
		/* 4 */
		System.out.println(count ++);
		//boolean	//判断指定字符串是否包含某个字符串
		System.out.println(s.contains("u"));
		System.out.println(s.contains("f"));
		System.out.println();
		
		/* 5 */
		System.out.println(count ++);
		//boolean	//判断指定字符串是否以某个字符串开始
		System.out.println(s.startsWith("n"));
		System.out.println(s.startsWith("f"));
		System.out.println();
		
		/* 6 */
		System.out.println(count ++);
		//boolean	//判断指定字符串是否以某个字符串结尾
		System.out.println(s.endsWith("r"));
		System.out.println(s.endsWith("s"));
		System.out.println();
		
		/* 7 */
		System.out.println(count ++);
		//boolean	//忽略字符串大小写比较两个字符串是否相同
		System.out.println(s.equalsIgnoreCase("NUmbER"));
		System.out.println();
		
		/* 8 */
		System.out.println(count ++);
		//byte[]	//将字符串中的每个字符翻译成ASCII码的十进制数字并生成byte类型的数组
		byte[] b = s.getBytes();
		for(int j = 0; j < b.length; j++) {
			System.out.print(b[j]);
			System.out.print('\t');
		}
		System.out.println();
		
		//char[]	//将字符串中的每个字符单独分解并按顺序组成一个char类型的数组
		char[] c = s.toCharArray();
		for(int j = 0; j < c.length; j++) {
			System.out.print(c[j]);
			System.out.print('\t');
		}
		System.out.println();
		System.out.println();
		
		/* 9 */
		System.out.println(count ++);
		//int	//查找某个字符串在指定字符串中第一次出现时的下标(-1表示没有,建议配合三元运算符使用)
		//提问:我使用GB 2312编码,而JVM用UTF-8编码。为什么重新编码后仍输出中文乱码?
		String whenTrue = "第一次出现时的下标是";
		String whenFalse = "字符串中没有该元素";
		System.out.println(s.indexOf(str) != -1 ? URLDecoder.decode(whenTrue, "UTF-8") + s.indexOf(str) : URLDecoder.decode(whenFalse, "UTF-8"));
		System.out.println();
		
		/* 10 */
		System.out.println(count ++);
		//boolean	//判断字符串长度是否为0
		System.out.println(s.isEmpty());
		System.out.println();
		
		/* 11 */
		System.out.println(count ++);
		//int	//输出字符串的长度
		System.out.println(s.length());
		System.out.println();
		
		/* 12 */
		System.out.println(count ++);
		//String	//把指定字符串中的某个字符替换成另一个字符
		System.out.println(s.replace('f', 'F'));
		System.out.println();
		
		/* 13 */
		System.out.println(count ++);
		//String	//把指定字符串中的某个字符串或整个字符串替换成另一个字符串
		System.out.println(s.replace("k", str));//String implements CharSequence(字符列表)
		System.out.println();
		
		/* 14 */
		System.out.println(count ++);
		//int	//判断指定字符串中某个字符串最后一次出现时的下标
		System.out.println(s.lastIndexOf('e'));
		System.out.println();
		
		/* 15 */
		System.out.println(count ++);
		//String[]	//去掉指定的字符串并以它为间隔拆分字符串
		String[] s1 = s.split(str);
		for(int j = 0; j < s1.length; j++) {
			System.out.print(s1[j]);
			System.out.print('\t');
		}
		System.out.println();
		
		/* 16 */
		System.out.println(count ++);
		//String	//以某个下标为开始在指定字符串中截取下标及其后面的字符串[beginIndex, s.length)
		System.out.println(s.substring(2));
		System.out.println();
		
		/* 17 */
		System.out.println(count ++);
		//String	//以某个下标为开始,以另一个下标为结束在指定字符串中截取字符串[beginIndex, endIndex)
		System.out.println(s.substring(1, 3));
		System.out.println();
		
		/* 18 */
		System.out.println(count ++);
		//String	//将字符串中的大写全转换为小写
		System.out.println("Number".toLowerCase());
		System.out.println();
		
		/* 19 */
		System.out.println(count ++);
		//String	//将字符串中的小写全转换为大写
		System.out.println("Number".toUpperCase());
		System.out.println();
		
		/* 20 */
		System.out.println(count ++);
		//String	//去掉字符串前后的空白
		System.out.println("         nu   mber       ".trim());
		System.out.println();
		
		/* 21 */
		System.out.println(count ++);
		//static
		//String	//将非字符串转换为字符串
		System.out.println(String.valueOf(1234));//1234
		System.out.println(1234);//1234
		//println和print自带valueOf
		//print括号内不能为空
	}
}
java
108 views
Comments
登录后评论
Sign In
·

兄弟,你这个代码加注释的文章看起来太费劲了,你应该放到代码仓库里汇总起来最后贴个链接,然后各个知识点和方法介绍按markdown的语法穿插代码段讲解知识点

然后你这个String字符集的问题用个URLDecoder不太明白意思是什么,你给的也不是URL参数呀

编码转换应该考虑使用getBytes()new String(byte[], decode)

然后部分的方法注释有点问题,比如14,你描述的是字符串,但传入的是一个字符

·

我用python也遇到过这种情况,看样子是输出到控制台,也就是系统的cmd或power shell,系统默认的编码应该是GB的,utf-8类型输出就会输出中文的乱码