Java的String类
-
字符串是常量,创建之后不可改变。
-
字符串字面值存储在字符串池中,可以共享。
-
String s = "hello"; 产生一个对象,存储在字符串池中。
-
但 String s = new String("hello"); 会产生两个对象,在堆和字符串池中各存储一个。
package com.qf.demo;
public class Demo3{
public static void main(String[] args){
String name = "hello"; //hello常量存储在字符串池中
name = "zhagnsan"; //"zhangsan"赋值给了name变量,给字符串赋值时,并未修改数据,而是重新在方法区里开辟空间写入张三,将原来对hello的指向改为指向张三,然后hello变成垃圾值。
String name2 = "zhangsan"; //程序在字符串池中找到张三,也把name2指向张三。
//演示字符串的另外一种创建方式:new String();
String str =new String("java是最好的编程语言");
String str2 = new String("java");
System.out.println(str == str2);
System.out.println(str.equals(str2)); //这里String重写了equals方法,不再比较地址而是比较存储值。
}
}
常用方法
-
public int length():返回字符串的长度。
-
public char charAt(int index):根据下标获取字符。
-
public boolean contains(String str):判断当前字符串中是否包含str。
-
public char[] toCharArray():将字符串转换成数组。
-
public int indexOf(String str):查找str首次出现的下标,存在则返回该下标,不存在则返回-1。
-
public int lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引。
-
public String trim():去掉字符串前\后的空格。
-
public String toUpperCase():将小写转换成大写。
-
public boolean endWith(String str):判断字符串是否以str结尾。
-
pulbic String replace(char oldChar, char newChar):将旧字符串替换成新字符串。
-
public String[] split(String str):根据str做拆分。
System.out.println("*****字符串方法的使用1*****");
//1.length();返回字符串的长度
//2.charAt(int index);返回某个位置的字符
//3.contains(String str);判断是否包含某个子字符串
String content = "java no.1, java is the best.";
System.out.println(content.length());
System.out.println(content.charAt(content.length() - 1));
System.out.println(content.contains("java"));
System.out.println(content.contains("php"));
System.out.println("*****字符串方法的使用2*****");
//4.toCharArray();返回字符串对应的字符
//5.indexOf();返回子字符串首次出现的位置
//6.lastIndexOf();返回字符串最后一次出现的位置
System.out.println(Arrays.toString(content.toCharArray())); //直接打印content.toCharArray();打印出来的是它的位置。
System.out.println(content.indexOf("java"));
System.out.println(content.indexOf("java", 4)); //4代表从第5个位置开始向后找。
System.out.println(content.lastIndexOf("java"));
System.out.println("*****字符串方法的使用3*****");
//7.trim();去掉字符串前后的空格。
//8.toUpperCase(); //把小写转成大写 → toLowerCase();把大写转成小写。
//9.endWith(String str);判断是否以str结尾。 → startWith(String str);判断是否以str开头。
String content2 = " Hello Word ";
System.out.println(content2.trim());
System.out.println(content2.toUpperCase());
System.out.println(content2.toLowerCase());
String filename = "hello.java";
System.out.println(filename.endWith(".java"));
System.out.println(filename.startWith("hello"));
System.out.println("*****字符串方法的使用4*****");
//10.replace(char old, char new);用新的字符/字符串替换旧的字符/字符串。
//11.split();对旧的字符串进行拆分。
System.out.println(content.replace("java", "php"));
String say = "java is the best programing language,java xiang";
String[] arr = say.split(" ");
//String[] arr = say.split("[ ,]"); //中括号表示选择字符,我可以用空格以及逗号。
//String[] arr = say.split("[ ,]+"); //额外增加个加号表示我的空格或者逗号可以出现一个或者多个。
System.out.println(arr.length());
for (String srt : arr){
System.out.println(srt);
}
System.out.println("*****字符串方法的补充*****");
//补充两个方法
//11.equals();
//12.compareTo(); 比较大小:取从左往右第一个相异的字母在字典(编码)表里的顺序差值。
String s1 = "hello";
String s2 = "Hello";
System.out.println(s1.equals(s2));
System.out.println(s1.equalsIgnoreCase(s2)); //忽略大小写的比较
String s3 = "abc"; //a:97
String s4 = "xyz"; //x:120