String类
-
字符串是常量,创建之后不可改变。
-
字符串字面值存储在字符串池中,可以共享。
-
String s = "Hello";// 产生一个对象,字符串池中存储。 String s = new String("Hello"); // 产生两个对象,堆、池各存储一个。
package String; public class Test01 { public static void main(String[] args) { String name = "Hello";// “Hello”常量存储在字符串常量池中 name = "zhangsan";// 把“zhangsan”赋值给name,给字符串赋值时,并没有修改数据,而是重新开辟空间。 String name2 = "zhangsan"; // 字符串的另一种创建方式 String str = new String("java");// 创建了两个对象 String str1 = new String("java");// 创建了两个对象 System.out.println(str == str1);// 输出false System.out.println(str.equals(str1));// 比较的是数据,输出true } }
常用方法
-
public int length(); // 返回字符串的长度。
-
public char charAt(int index);// 根据下标获取字符
-
public boolean contains(String str);// 判断当前字符串中是否包含str。
-
package String; public class Test01 { public static void main(String[] args) { String content = "java好"; System.out.println(content.length());// 结果为:5 System.out.println(content.charAt(3));// 结果为:a System.out.println(content.contains("java"));// 结果为:true System.out.println(content.contains("php"));// 结果为:false } }
-
-
public char[] toCharArray();// 将字符串转换为数组
-
public int indexOf(String str);//查找str首次出现的下标,存在,则返回该下标;不存在,则返回—1.
-
public int lastIndexOf(String str);// 查找字符串中最后一次出现的下标索引。
-
package String; import java.util.Arrays; public class Test01 { public static void main(String[] args) { String content = "java好啊!,java真香"; // 字符串方法的使用 //4.toCharArray();// 将字符串转换为数组 //5.indexOf(); 返回子字符串中首次出现的位置 //6.lastIndexOf();返回字符串最后一次出现的位置 System.out.println(Arrays.toString(content.toCharArray())); System.out.println(content.indexOf("java",4)); System.out.println(content.lastIndexOf("java")); } }
-
-
public String trim();// 去掉字符串前后的空格
-
public String toUpperCase();// 将小写转成大写。
-
public boolean endWith(String str);// 判断字符串是否以str结尾
package String; import java.util.Arrays; public class Test01 { public static void main(String[] args) { //7.trim();去掉字符串前后的空格 //8.toUpperCase();把小写转成大写,//toLowerCase();把大写转成小写 //9.endWith(str);判断是否以str结尾,startWith(str);判断是否以str开头 String content2 = " Hello World "; System.out.println(content2.trim());// 输出结果为:Hello World System.out.println(content2.toUpperCase());//输出结果为: HELLO WORLD System.out.println(content2.toLowerCase());//输出结果为: hello world String filename = "hello.java"; System.out.println(filename.endsWith(".java"));//输出结果为:true System.out.println(filename.startsWith("hello"));//输出结果为:true } }
案例演示
-
需求:
-
已知:
String str = "this is a text";
- 将str中的单词提取出来
- 将str中的text替换为practice
- 在text前面插入一个easy
- 将每个单词的首字母改为大写
-
package String; public class Case { public static void main(String[] args) { String str = "this is a text"; //1.将str中的单词提取出来 String[] arr = str.split(" "); // for (int i = 0; i <arr.length ; i++) { // System.out.println(arr[i]); // } // 遍 历 for (String s : arr) { System.out.println(s); } //2.将str中的text替换为practice String str2 = str.replace("text","pratice"); System.out.println(str2); // 3.在text前面插入一个easy String str3 = str.replace("text","easy text"); System.out.println(str3); // 4.将每个单词的首字母改为大写 for (int i = 0; i <arr.length ; i++) { char first = arr[i].charAt(0); // 把第一个字符转成大写 char upperfirst = Character.toUpperCase(first); String news = upperfirst+arr[i].substring(1); System.out.println(news); } } }
-
可变字符串
-
StringBuffer:可变长字符串,JDK1.0提供,运行效率缓慢、线程安全。
-
StringBuilder:可变长字符串,JDK5.0提供,运行效率快、线程不安全。
-
package String; /* StringBuffer和StringBuilder的使用 与String区别:1.效率比String高 2.比String节省内存 */ public class Test02 { public static void main(String[] args) { StringBuffer sb = new StringBuffer(); //1.append();追 加 sb.append("Java世界第一"); System.out.println(sb.toString());//ava世界第一 sb.append("java真香"); System.out.println(sb.toString());//Java世界第一java真香 sb.append("java真不错"); System.out.println(sb.toString());//Java世界第一java真香ava真不错 // 2.insert(); 添加 sb.insert(0,"我在最前面"); System.out.println(sb.toString());//我在最前面Java世界第一java真香java真不错 //3.replace();//能指定位置的替换 sb.replace(0,5,"Hello"); System.out.println(sb.toString());//HelloJava世界第一java真香java真不错 //4.delete(); 删除 sb.delete(0,5); System.out.println(sb.toString());//Java世界第一java真香java真不错 // 清空 sb.delete(3,sb.length()); System.out.println(sb.toString());//jav sb.delete(0,sb.length());//清空 System.out.println(sb.toString()); } }
案例:
package String; /* 验证StringBuilder效率高于String */ public class Test03 { public static void main(String[] args) { // 开始时间 long start = System.currentTimeMillis(); // String string = ""; // for(int i = 0;i<99999;i++) { // string += i; // } // System.out.println(string); // long end = System.currentTimeMillis(); // System.out.println("用时:"+(end-start));//String 用时4964 // StringBuilder sb = new StringBuilder(); for (int i = 0; i <99999 ; i++) { sb.append(i); } System.out.println(sb.toString()); long end = System.currentTimeMillis(); System.out.println("用时:"+(end-start));//StringBuilder用时53 } }
-