String s = “abc”;s 是一个类类型变量,”abc”是一个对象; 字符串最大特点:一旦被初始化就不可以被改变,是一个常量; class StringDemo{ public static void main(String[] args) { String s1 = "abc"; String s2 =newString("abc"); System.out.println(s1 ==s2); //false System.out.println(s1.equals(s2)); //true //Stirng类复写了Object类中equals方法,重写后用于判断字符串是否相同; } } S1 和s2有什么区别? S1在内存中有一个对象, S2有2个对象,一个是通过new创建的,存在于堆内存中,另一个是”abc”存在于字符串缓冲区中; String 类适用于描述字符串事物,那么它就提供了多个方法对字符串进行操作 常见的操作: ***1,获取. String str = "abcdef"; 1.1 字符串中的包含的字符数,也就是字符串的长度 int length(); 获取长度 System.out.println(str.length()); 1.2 根据位置获取位置上某个字符 char charAt(int index) System.out.println(str.charAt(2)); 1.3根据字符获取该字符在字符串中位置: Int indexOf(int ch) 返回的是ch在字符串中第一次出现的位置 System.out.println(str.indexOf('a')); Int indexOf(int ch,intfromIndex) : 从fromIndex指定位置开始,获取ch在字符串中出现的位置 int indexOf(String str): 返回的是str在字符串中第一次出现的位置 System.out.println(str.indexOf('c',2)); int indexOf(String str,intfromIndex): 从fromIndex指定位置开始,获取ch在字符串中出现的位置 int lastindexOf(int ch) ;获取字符在字符串中最后出现的索引位置; System.out.println(str.lastIndexOf('a')); 2.判断: 2.1 字符串中是否包含某一个子串 boolean contains(); indexOf(str):可以索引str第一次出现位置,如果返回-1表示该str不在字符串中存在,所以,也可以用于对指定字符串的判断是否包含 例: if(str.indexOf(‘a’) != -1) 该方法既可以判断是否包含,也可以获取出现的位置; 2.2 字符中是否有内容 boolean isEmpty():原理就是判断长度是否为0; 2.3 字符串是否是以指定内容开头 boolean startsWith(str); 2.4 字符串是否是以指定内容结尾; boolean endsWith(str); 2.5 判断字符串内容是否相同;复写了object类equals的方法; boolean equals(str); 2.6 判断内容是否相同,并忽略大小写; boolean equalsIgnoreCase(); 3.转换; 3.1 将字符数组转成字符串; 构造函数: String(char[]) String(char[],offset,count):将字符数组中的一部分转成字符串,其中:offset:索引起始位,count:需要转换的个数; 静态函数: staticStringcopyValueOf(char[]); staticStringcopyValueOf(char[] date, int offset, int count); **3.2 将字符串转成字符数组; char[] toCharArray(); 3.3 将字节数组转成字符串; String(char[]) String(char[],offset,count):将字节数组中的一部分转成字符串, 3.4 将字符串转成字节数组; byte[]getBytes(); 特殊:字符串和字节数组在转换过程中,是可以指定编码表的 3.5 将基本数据类型转成字符串; static String valueOf(int) 3+”” == String.valueOf(3); 4.替换 Stringreplace(oldchar,newchar); public static voidmethod_replace() { String s="hello java"; //替换字符,如果要替换的字符不存在,返回的还是原字符 String s1 =s.replace(‘a’,’e’); } 5.切割 String split(regex); public static voidmethod_split() { String s="abc,def,ghi"; //在有逗号的位置把字符串分割 String[] arr=s.split(","); 遍历打印新的数组; for(int x=0;x<arr.length;x++){ sop(arr[x]); } } 6.子串.获取字符串中的一部分 String substring(begin) Stringsubstring(begin,end) 练习: class StringDemo { public static voidmain(String[] args){ method_get(); Method_trans(); String str="StudentDemo.java"; //判断文件名称是否以"Student"开头 sop(str.startsWith("Student")); //判断文件是否是java文件 sop(str.endsWith(".java"); //判断文件名称是否包含"Demo."; sop(str.contains("Demo."); } public static voidmethod_get() { String str ="abcdabcdefg"; //长度; sop(str.length()); //根据索引获取字符; //当访问到字符串中不存在角标时,会发生角标越界异常; sop(str.charAt(4)); //根据字符获取索引 //没有找到指定的字符,返回-1; sop(str.indexOf('b',2)); //反向索引一个字符串的位置; sop(str.lastIndexOf("a")); } public static voidsop(Object obj) { //jvm1.5以后新特性,可以打印数组,也可以打印字符串; System.out.println(obj); } public static voidmethod_trans() { char[] arr ={'a','b','c','d','e'}; String str = newString(arr); String str1 = newString(arr,1,4); sop(str); sop(str1); } } 7.转换,去除空格,比较; 7.1 将字符串转成大写或则小写。 String toUpperCase(); String toLowerCase(); 7.2 将字符串两端的多个空格去除。 String trim(); 7.3 对两个字符串进行自然顺序的比较。 intcompareTo(string);
|