java 字符串操作详解

package com.String;

public class Damo3 {
	static void m1() {
		int i = 5;
		// 基本类型转换成封装类型
		Integer it = new Integer(i);
		// 封装类型转换成基本类型
		int i2 = it.intValue();
	}

	// 数字转字符串
	static void m2() {
//		方法1: 使用String类的静态方法valueOf 
//		方法2: 先把基本类型装箱为对象,然后调用对象的toString
		int i = 5;
		// 方法1
		String str = String.valueOf(i);
		// 方法2
		Integer it = i;
		String str2 = it.toString();
		System.out.println(str);
		System.out.println(str2);
	}

	// 字符串转数字
	static void m3() {
		// 调用Integer的静态方法parseInt
		String str = "999";
		int i = Integer.parseInt(str);
		System.out.println(i);
		// 字符串转浮点数
		double dd = Double.parseDouble(str);

		double pp = i;
		System.out.println(i);

	}

	// 数学方法
	static void m4() {
		float f1 = 5.4f;
		float f2 = 5.5f;
		// 5.4四舍五入即5
		System.out.println(Math.round(f1));
		// 5.5四舍五入即6
		System.out.println(Math.round(f2));

		// 得到一个0-1之间的随机浮点数(取不到1)
		System.out.println(Math.random());

		// 得到一个0-10之间的随机整数 (取不到10)
		System.out.println((int) (Math.random() * 10));
		// 开方
		System.out.println(Math.sqrt(9));
		// 次方(2的4次方)
		System.out.println(Math.pow(2, 4));

		// π
		System.out.println(Math.PI);

		// 自然常数
		System.out.println(Math.E);
	}

	// 格式化输出
	static void m5() {
//		%s 表示字符串
//		%d 表示数字
//		%n 表示换行
		String name = "盖伦";
		int kill = 8;
		String title = "超神";

		// 直接使用+进行字符串连接,编码感觉会比较繁琐,并且维护性差,易读性差
		String sentence = name + " 在进行了连续 " + kill + " 次击杀后,获得了 " + title + " 的称号";

		System.out.println(sentence);

		// 使用格式化输出
		// %s表示字符串,%d表示数字,%n表示换行
		String sentenceFormat = "%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n";
		System.out.printf(sentenceFormat, name, kill, title);
	}

	// printf和formatf格式化输出
	static void m6() {
		String name = "盖伦";
		int kill = 8;
		String title = "超神";

		String sentenceFormat = "%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n";
		// 使用printf格式化输出
		System.out.printf(sentenceFormat, name, kill, title);
		// 使用format格式化输出
		System.out.format(sentenceFormat, name, kill, title);
	}

	// char对应的封装类
	static void m7() {
		char c1 = 'a';
		Character c = c1; // 自动装箱
		c1 = c;// 自动拆箱
		// Character常见方法
		System.out.println(Character.isLetter('a'));// 判断是否为字母
		System.out.println(Character.isDigit('a')); // 判断是否为数字
		System.out.println(Character.isWhitespace(' ')); // 是否是空白
		System.out.println(Character.isUpperCase('a')); // 是否是大写
		System.out.println(Character.isLowerCase('a')); // 是否是小写

		System.out.println(Character.toUpperCase('a')); // 转换为大写
		System.out.println(Character.toLowerCase('A')); // 转换为小写

		// String a = 'a'; // 不能够直接把一个字符转换成字符串
		String a2 = Character.toString('a'); // 转换为字符串

	}

	static void m8() {
		System.out.println("使用空格无法达到对齐的效果");
		System.out.println("abc def");
		System.out.println("ab def");
		System.out.println("a def");

		System.out.println("使用\\t制表符可以达到对齐的效果");
		System.out.println("abc\tdef");
		System.out.println("ab\tdef");
		System.out.println("a\tdef");

		System.out.println("一个\\t制表符长度是8");
		System.out.println("12345678def");

		System.out.println("换行符 \\n");
		System.out.println("abc\ndef");

		System.out.println("单引号 \\'");
		System.out.println("abc\'def");
		System.out.println("双引号 \\\"");
		System.out.println("abc\"def");
		System.out.println("反斜杠本身 \\");
		System.out.println("abc\\def");

	}

	// 创建字符串
	static void m9() {
		String garen = "盖伦"; // 字面值,虚拟机碰到字面值就会创建一个字符串对象
		String teemo = new String("提莫"); // 创建了两个字符串对象
		char[] cs = new char[] { '崔', '斯', '特' };
		String hero = new String(cs);// 通过字符数组创建一个字符串对象
		String hero3 = garen + teemo;// 通过+加号进行字符串拼接
	}

	// 获取字符串
	// charAt(int index)获取指定位置的字符
	static void m10() {
		String sentence = "盖伦,在进行了连续8次击杀后,获得了 超神 的称号";
		char c = sentence.charAt(0);
		System.out.println(c);

	}

	// 获取对应的字符数组,toCharArray(),获取对应的字符数组
	static void m11() {
		String sentence = "盖伦,在进行了连续8次击杀后,获得了超神 的称号";
		char[] cs = sentence.toCharArray(); // 获取对应的字符数组
		System.out.println(sentence.length() == cs.length);
	}

	// 截取子字符串,subString 截取子字符串
	static void m12() {
		String sentence = "盖伦,在进行了连续8次击杀后,获得了 超神 的称号";

		// 截取从第3个开始的字符串 (基0)
		String subString1 = sentence.substring(3);

		System.out.println(subString1);

		// 截取从第3个开始的字符串 (基0)
		// 到5-1的位置的字符串
		// 左闭右开
		String subString2 = sentence.substring(3, 5);

		System.out.println(subString2);

	}

	// 分割split
	static void m13() {
		String sentence = "盖伦,在进行了连续8次击杀后,获得了 超神 的称号";
		// 根据,进行分割,得到3个子字符串
		String subSentences[] = sentence.split(",");
		for (String sub : subSentences) {
			System.out.println(sub);
		}

	}

	// 大小写
	// toLowerCase 全部变成小写
//	toUpperCase 全部变成大写
	static void m14() {

		String sentence = "Garen";

		// 全部变成小写
		System.out.println(sentence.toLowerCase());
		// 全部变成大写
		System.out.println(sentence.toUpperCase());

	}

	// 定位
	// indexOf 判断字符或者子字符串出现的位置
	// contains 是否包含子字符串
	static void m15() {
		String sentence = "盖伦,在进行了连续8次击杀后,获得了超神 的称号";

		System.out.println(sentence.indexOf('8')); // 字符第一次出现的位置

		System.out.println(sentence.indexOf("超神")); // 字符串第一次出现的位置

		System.out.println(sentence.lastIndexOf("了")); // 字符串最后出现的位置

		System.out.println(sentence.indexOf(',', 5)); // 从位置5开始,出现的第一次,的位置

		System.out.println(sentence.contains("击杀")); // 是否包含字符串"击杀"

	}

	// 替换
//	replaceAll 替换所有的 
//	replaceFirst 只替换第一个
	static void m16() {
		String sentence = "盖伦,在进行了连续8次击杀后,获得了超神 的称号";

		String temp = sentence.replaceAll("击杀", "被击杀"); // 替换所有的

		temp = temp.replaceAll("超神", "超鬼");

		System.out.println(temp);

		temp = sentence.replaceFirst(",", "");// 只替换第一个

		System.out.println(temp);

	}

	// 判断字符串是否是同一个字符串对象
	static void m17() {
		String str1 = "the light";

		String str2 = new String(str1);

		// ==用于判断是否是同一个字符串对象
		System.out.println(str1 == str2);// 返回的true或者false

		String str4 = "the light";
		String str3 = "the light";
		System.out.println(str4 == str3);
	}

	// 内容是否相同
//	使用equals进行字符串内容的比较,必须大小写一致 
//	equalsIgnoreCase,忽略大小写判断内容是否一致
	static void m18() {
		String str1 = "the light";

		String str2 = new String(str1);

		String str3 = str1.toUpperCase();

		// ==用于判断是否是同一个字符串对象
		System.out.println(str1 == str2);

		System.out.println(str1.equals(str2));// 完全一样返回true

		System.out.println(str1.equals(str3));// 大小写不一样,返回false
		System.out.println(str1.equalsIgnoreCase(str3));// 忽略大小写的比较,返回true

	}

	// 是否以子字符串开始或者结束
//	startsWith //以...开始
//	endsWith //以...结束
	static void m19() {
		String str1 = "the light";

		String start = "the1";
		String end = "Ight";

		System.out.println(str1.startsWith(start));// 以...开始
		System.out.println(str1.endsWith(end));// 以...结束

	}

	// StringBuffer
	static void m20() {
		String str1 = "let there ";

		StringBuffer sb = new StringBuffer(str1); // 根据str1创建一个StringBuffer对象
		sb.append("be light"); // 在最后追加

		System.out.println(sb);

		sb.delete(4, 10);// 删除4-10之间的字符

		System.out.println(sb);

		sb.insert(4, "there ");// 在4这个位置插入 there

		System.out.println(sb);

		sb.reverse(); // 反转

		System.out.println(sb);

	}

	/*
	 * 比如说new StringBuffer("the"),其内部的字符数组的长度,是19,而不是3,这样调用插入和追加,在现成的数组的基础上就可以完成了。
	 * 如果追加的长度超过了19,就会分配一个新的数组,长度比原来多一些,把原来的数据复制到新的数组中,看上去 数组长度就变长了
	 * 
	 */
	static void m21() {
		String str1 = "the";

		StringBuffer sb = new StringBuffer(str1);

		System.out.println(sb.length()); // 内容长度

		System.out.println(sb.capacity());// 总空间

	}

	public static void main(String[] args) {
		m21();
	}

}

你可能感兴趣的:(java 字符串操作详解)