java字符串

Java 字符串就是 Unicode 字符序列。

java没有内置的字符串类型,而是在标准java类库中提供了一个预定类,很自然的叫String。每个用双引号括起来的字符串都是String类的一个实例

//定义String类型
String e="";
String greeting="hello java";
子串

String类的substring方法可以从一个较大的字符串提取出一个子串。

String greeting="hello";
String s=greeting.substring(0,4);
//s获取的值为hell

substring中从 0 开始计数,直到 4为止, 但不包含 4。

拼接

java语言使用+拼接两个字符串。

String a="hello,";
String b="java";
String c=a+b;
//结果为hello,java

如果需要把多个字符串放在一起, 用一个定界符分隔,可以使用静态 join 方法:String all = String.join(" / ", “S”, “M”, “L”, “XL”);

不可变字符串

String 类没有提供用于修改字符串的方法。如果想修改字符串,在java中首先提取需要的字符, 然后再拼接上替换的字符串:

String greeting="help"
greeting=greeting.substring(0,3)+"p!"
//此操作等于重新为greeting赋值
//greeting等于:help!
检测字符串是否相等

使用equals方法检测两个字符串是否相等。表达式为:s.equals(a);
如果s等于a返回true,否则false。

比较两个字符串是否相等,不区分大小写则使用equalsIgnoreCase方法。
“hello”.equalsIgnoreCase(“Hello”);

空串与Null串

空串 “” 是长度为 0 的字符串。

空串是一个 Java 对象, 有自己的串长度( 0 ) 和内容(空)。不过, String 变量还可以存放一个特殊的值, 名为 null, 这表示目前没有任何对象与该变量关联

码点与代码单元

Java字符串由char值序列组成。char数据类型是一个采用UTF-16编码表示Unicode码点的代码单元。大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。
length方法返回采用UTF-16编码表示的给定字符串所需要的代码单元数量。例如:
String greeting = “Hello”;
int n = greeting.length();
要想得到实际的长度,即码点数量,可以调用:
int cpCount = greeting.codePointCount(0, greeting.length());
调用s.charAt(n)将返回位置n的代码单元,n介于 0 ~ s.length() - 1之间。
要想得到第i个码点,应该使用下列语句
int index = greeting.offsetByCodePoints(0,i);
int cp = greeting.codePointAt(index);

String API

详细的API查阅文档

常用的String Api
boolean equals(Object other)
如果字符串与other相等,返回true。
boolean startsWith(Strign prefix)
boolean endsWith(String suffix)
如果字符串以suffix开头或结尾,则返回true。
int indexOf(String str)
int length()
返回字符串长度。
String replace(CharSequence oldString,CharSequence newString)
返回一个新字符串。这个字符串用newString代替原始字符串中所有的oldString。可以用String或StringBuilder对象作为CharSequence参数。
String toLowerCase()
String toUpperCase()
返回一个新字符串。这个字符串将原始字符串中的大写字母改为小写,或者将原始字符串中的所有小写字母改成了大写字母。
String trim()返回一个新字符串。这个字符串将删除了原始字符串头部和尾部的空格。

输入输出

读取输入

读取 “标准输入流” System.in。要想通过控制台输入,首先要创建一个Scanner对象,并且与System.in流关联:
Scanner in=new Scanner(System.in);
现在就可以通过Scanner使用控制台输入了。

//创建Scanner对象
Scanner in=new Scanner(System.in);
System.out.println("what is your name?");
String 	name=in.nextLine();

1.使用 nextLine 方法是因为在输人行中有可能包含空格。
2.读取一个整数, 就调用 nextlnt 方法。
3.读取下一个浮点数, 就调用 nextDouble 方法。
记得程序最开始要引入:import java.util.*;
Scanner 类定义在java.util 包中。

例子:

improt java.util.*

public class InputTest{
	public static void main(String []args){
		//创建Scanner对象
		Scanner in=new Scanner(Ststem.in);
		
		//控制台获取输入姓名
		System.out.println("what is your name??");
		String name=in.nextLine();
			
		//控制台获取输入年龄	
		System.out.println("How old are you??");
		String old=in.nextInt();
		
		//打印姓名加年龄的字符串
		System.out.println("Hello"+name+". Next year,you be "+(old-1));
	}
}

应为Scanner类不适合控制台读取密码,所以在javaSE6引入了Console类实现此目的。

Console cons=System.console();
	String username=cons.readLine("User name:");
	char[] password=cons.readPassword("Password:");
格式化输出

Java SE 5.0 沿用了 C语言库函数中的 printf方法

System.out.printf("%8.2f",x);
可以用 8 个字符的宽度和小数点后两个字符的精度打印 x

每一个以 % 字符开始的格式说明符都用相应的参数替换

Java 定义字符串列表 java定义字符串输入_java


另外,还可以给出控制格式化输出的各种标志。

Java 定义字符串列表 java定义字符串输入_Java 定义字符串列表_02

文件输入与输出

在java中想读取一个文件,就需要一个用 File 对象构造一个 Scanner 对象

Scanner in=new Scanner(Paths.get(“myfile.txt”),“UTF-8”);
如果文件中包含反斜杠,就要记住在每个反斜杠之前再加一个额外的反斜杠:\\

想写入文件, 就需要构造一个 PrintWriter 对象。

PrintWriter out=new PrintWriter(“myfile.txt”,“UTF-8”);
如果文件不存在,创建该文件