String类
一.String字符串
- 字符串是常量,创建之后不可改变
- 字符串字面值存储在字符串池中,可以共享
- String s = "hello",创建一个对象在字符串池当中
- String s = new String ("hello"),创建两个对象,分别在字符串池和堆中。
String s1 = "java";
s1 = "python";
String s2 = "java";
//new String()方法
String s3 = new String("zhangsan");
String s4 = new String("zhangsan");
System.out.println(s3 == s4);//比较引用,false
System.out.println(s3.equals(s4));//比较值,true
二.String类常用方法
- 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 String toLowerCase();将大写转换为小写
- public boolean endsWith(String str); 判断字符串是否以str结尾
- public boolean startsWith(String str); 判断字符串是否以str开头
- public String replace(char oldChar,char newChar); 将字符串中的oldChar用newChar来代替
- public String[] split(String str); 根据str做拆分
- equals(): 比较两个字符串值是否相等
- equalsIgnoreCase(): 不区分大小写比较值
- compareTo(): 第一个不同的字符在字典中的位置相减,若其中一个字符串是另一个字符串的子字符串,则比较位数(位数相减)
System.out.println("-----------字符串使用1--------------");
String content = "java是世界上最好的java编程语言,java";
System.out.println(content.length());
System.out.println(content.charAt(10));
System.out.println(content.contains("java"));
System.out.println(content.contains("php"));
System.out.println("-----------字符串使用2--------------");
System.out.println(Arrays.toString(content.toCharArray()));
System.out.println(content.indexOf("java"));//查找第一个java出现的位置
System.out.println(content.indexOf("java",4));//从下标为4开始查找第一个java出现的位置
System.out.println(content.lastIndexOf("java"));//查找java最后出现的位置
System.out.println("-----------字符串使用3--------------");
String content2 = " hello WORLD! ";
String content3 = "hello.java";
System.out.println(content2.trim());
System.out.println(content2.toUpperCase());
System.out.println(content2.toLowerCase());
System.out.println(content3.endsWith(".java"));
System.out.println(content3.startsWith("hello"));
System.out.println("-----------字符串使用4--------------");
System.out.println( content.replace("java","php"));
String say = "java is the best programming language,java";
String[] arr = say.split("[ ,]+");//[ ,]:根据空格和逗号来分割字符串,+:可允许多个空格或逗号一起出现
System.out.println(arr.length);
for (String str:arr) {
System.out.println(str);
}
//补充equals(),compareTo()
System.out.println("--------补充-----------");
String n1 = "hello";
String n2 = "HELLO";
System.out.println(n1.equals(n2));//直接比较值false
System.out.println(n1.equalsIgnoreCase(n2));//不区分大小写比较值true
String n3 = "abc";//97
String n4 = "xyz";//120
System.out.println(n3.compareTo(n4));//-23 第一个不同的字符在字典中的位置相减
String n5 = "abc";
String n6 = "abcdefg";
System.out.println(n5.compareTo(n6));//-4 若其中一个字符串是另一个字符串的子字符串,则比较位数(位数相减)
//输出结果:
-----------字符串使用1--------------
24
的
true
false
-----------字符串使用2--------------
[j, a, v, a, 是, 世, 界, 上, 最, 好, 的, j, a, v, a, 编, 程, 语, 言, ,, j, a, v, a]
0
11
20
-----------字符串使用3--------------
hello WORLD!
HELLO WORLD!
hello world!
true
true
-----------字符串使用4--------------
php是世界上最好的php编程语言,php
7
java
is
the
best
programming
language
java
--------补充-----------
false
true
-23
-4
三.一个String案例
- 需求:String str = ”this is a text“
- 1.把str中的单词单独取出来
- 2.把str中的text转换为practice
- 3.在text前面插入一个easy
- 4.把每个单词首字母转换为大写
String str = "this is a text";
System.out.println("1.把str中的单词单独取出来");
String[] str1 = str.split(" ");
for (String arr:str1) {
System.out.println(arr);
}
System.out.println("2.把str中的text转换为practice");
String str2 = str.replace("text","practice");
System.out.println(str2);
System.out.println("3.在text前面插入一个easy");
String str3 = str.replace("text","easy text");
System.out.println(str3);
System.out.println("4.把每个单词首字母转换为大写");
for (int i = 0; i <str1.length ; i++) {
char first = str1[i].charAt(0);//取每个字符的第一个字母
char upperfirst = Character.toUpperCase(first);//把每个字符的第一个字母转换为大写
String str4 = upperfirst + str1[i].substring(1);//拼接 substring(beginindex):从下标beginindex处开始截取字符串
System.out.println(str4);
//输出结果:
1.把str中的单词单独取出来
this
is
a
text
2.把str中的text转换为practice
this is a practice
3.在text前面插入一个easy
this is a easy text
4.把每个单词首字母转换为大写
This
Is
A
Text
四.StringBuffer和StringBuilder(可变长字符串)
- StringBuffer:可变长字符串,jdk1.0提供,运行效率慢,线程安全
- StringBuilder:可变长字符串,jdk5.0提供,运行效率快,线程不安全
//StringBuffer sb = new StringBuffer();
StringBuilder sb = new StringBuilder();//同样适用
//1.添加:append()
sb.append("java世界第一 ");
System.out.println(sb.toString());
sb.append("java好 ");
System.out.println(sb.toString());
//2.插入:insert()
sb.insert(0,"我在前面 ");//从下标索引为0的位置开始添加
System.out.println(sb.toString());
//3.替换:replace()
sb.replace(0,5,"hello");//把下标为0-4(含头不含尾)的字符替换为hello
System.out.println(sb.toString());
//4.删除:delete()
sb.delete(0,5);
System.out.println(sb.toString());
//清空
sb.delete(0,sb.length());
System.out.println(sb.toString());
//输出结果:
java世界第一
java世界第一 java好
我在前面 java世界第一 java好
hellojava世界第一 java好
java世界第一 java好
System.out.println("-----String效率------");
//开始时间
long start = System.currentTimeMillis();
String str = new String();
for (int i = 0; i <9999 ; i++) {
str += i;
}
//结束时间
long end = System.currentTimeMillis();
System.out.println("用时为:" + (end - start));
System.out.println("-----StringBuilder效率------");
//开始时间
long start2 = System.currentTimeMillis();
StringBuilder sb2 = new StringBuilder();
for (int i = 0; i <9999 ; i++) {
sb2.append(i);
}
//结束时间
long end2 = System.currentTimeMillis();
System.out.println("用时为:" + (end2 - start2));
//输出结果:
-----String效率------
313
-----StringBuilder效率------
0
标签:java,String,System,Day04,字符串,println,out
From: https://www.cnblogs.com/workplace-blog/p/16593715.html