Java入门 了解String

package hello;

/*
 * 在Eclipse中生成可执行jar文件,只需要通过
 * File->Export->选择Runable jar file然后一步一步导出即可
 * 对于控制台程序,直接双击执行是看不到执行结果的
 * cmd打开控制台,然后执行java -jar jarfilepath
 * 就可以看到控制台的执行结果了
 * */

public class World {
	
	public static void main(String[] args) {
		System.out.println("Hello java");

		// String的基本操作
		String str = "Hello world";
		int worIndex = str.indexOf("wor");
		System.out.println(String.format("worIndex is %1d", worIndex));
		String world = str.substring(worIndex);
		System.out.println(world);
		// 包括startIndex,但是不包括endIndex
		String wor = str.substring(worIndex, worIndex + 3);
		System.out.println(wor);

		String plus = "Hello " + "world";
		System.out.println(plus);

		// 大写转换
		String upperCase = plus.toUpperCase();
		System.out.println(upperCase);

		// 使用concat
		String a = "A";
		a = a.concat("bc");
		System.out.println(a);

		// char
		for (int i = 0; i < a.length(); i++) {
			System.out.print(a.charAt(i));
		}

		for (char c : a.toCharArray()) {
			System.out.print(c);
		}
		System.out.println();
		// split
		String toSplit = "Hello James Bond";
		String[] words = toSplit.split(" ");
		for (String word : words) {
			System.out.println(word);
		}

		// compare
		String str1 = "abc";
		String str2 = "def";
		int compareResult = str1.compareTo(str2);
		System.out.println(compareResult);

		// startsWith,endsWith
		boolean isStartsWitha = str1.startsWith("a");
		System.out.println(isStartsWitha);
		System.out.println(isStartsWitha);

		// StringBuffer考虑了线程同步,而StringBuilder没有考虑
		// StringBuffer性能稍微差与StringBuilder在单线程情况下要使用StringBuilder
		StringBuffer sb = new StringBuffer();
		sb.append("Hello");
		sb.append(" ");
		sb.append("World");
		String strValue = sb.toString();
		System.out.println(strValue);

		StringBuilder sbr = new StringBuilder();
		sbr.append("Hello ");
		sbr.append("Java");
		System.out.println(sbr.toString());

		// 数字格式化处理
		studyFormatInteger();

		// 格式浮点数
		studyFormatFloat();

		// 格式化中如果需要输入%,需要用两个来做转义
		String formated = String.format("今日涨跌%1$.2f%%", 3.145);
		System.out.println(formated);

	}

	static void studyFormatFloat() {
		// 浮点数格式化
		// %[index$][标识][最少宽度][.精度]转换方式
		// 和整数的格式化基本相同,精度和转换方式不同
		String[] formats = {
				// - 在最小宽度内左对齐,不可以与“用0填充”同时使用,保留两位小数
				"%1$-6.2f",
				// +标识表示总是有一个符号,不省略+
				"%1$+6.3f",
				// 标识表示正数前加空格,负数前加-号
				"%1$ 6.3f",
				// 科学计数法表示数字
				"%1$ 6.3e",
				// g或者G表示根据实际情况自动选择科学计数法还是普通方式
				// 这个从输出结果看忽略了最少宽度为6和保留3位小数.3的设置
				"%1$ 6.3g", "%1$g",
				// 'a', 'A' -- 结果被格式化为带有效位数和指数的十六进制浮点数
				"%1$a" };

		for (String format : formats) {
			float num = 3.14159f;
			String formated = String.format(format, num);
			System.out.println(formated);
		}
	}

	static void studyFormatInteger() {
		// 字符串的格式化
		// java的字符串格式化更像c的printf,而不像c#的string.Format
		// 下面的博客很全面
		// http://blog.csdn.net/andycpp/article/details/1749700
		// 整形数字的格式化
		// 对整数进行格式化:%[index$][标识][最小宽度]转换方式
		// index下标从1开始
		String strFormatInteger = String.format("%1$+5d;%2$ 5d", 99, 888);
		System.out.println(strFormatInteger);

		String[] formats = { "%1$-9d", "%1$#5X", "%1$+9d", "%1$09d", "%1$,9d",
				"%1$(9d" };

		// java中没有foreach关键字,但可以用for (type varname : iterable)实现foreach
		for (String format : formats) {
			int num = -9999999;
			String formated = String.format(format, num);
			// System.out.println(formated);
			String output = String.format(
					"String.format(\"%1$s\",%2$d) == \"%3$s\"", format, num,
					formated);
			System.out.println(output);
		}
	}
}
 

你可能感兴趣的:(java,String)