String 类下面的方法
通过官方的API手册进行学习
学习技巧:
- 方法的功能,这个方法具体是干嘛的
- 方法的参数
- 方法的返回值
接口 | 接口 | 接口 | 父类 |
Serializable | Comparable | CharSequence | Object |
- 实现Serializable接口,说明String对象可以串行化(串行化:数据可以进行网络的传输)
- 实现Comparable接口,说明String可以进行比较
注:字符串常量是一个具体的值,"jack"其实就是字符串常量,是用双引号引起来的字符序列
- 字符串本质就是一个字符的数组(char[])
- 字符串的字符使用Unicode编码
- String类有很多的构造器,构造器的重载
- String类是final类,不能被其他的类继承
String有属性,private final char value[]; 用于存放字符串的内容
value是final类型,赋值后不可修改(修改的是其地址,但是其字符内容可以进行更改)
方法功能
package com.jzj_string;
public class method01 {
public static void main(String[] args) {
String string = "hello";
String string2 ="Hello";
System.out.println(string.equals(string2));//false
//equals比较内容是否相同,区分大小写的
String name = "tom";
String name2 = "Tom";
if (name.equalsIgnoreCase(name2)) {//success
System.out.println("success");
} else {
System.out.println("failure");
}
//euqalsIgnoreCase是忽略大小写,判断内容是否相等
System.out.println(string.length());//hello==》5
//获取字符的个数,字符串的长度
String S1 = "Hi@World@Hello@word";
int index = S1.indexOf('@');
System.out.println(index);//2
int index1 = S1.indexOf('A');
System.out.println(index1);//-1
int index3 = S1.indexOf("or");
System.out.println(index3);//4
//indexOf获取字符在字符串对象中第一次出现的索引,索引从零开始,找不到输出-1
int lastindex = S1.lastIndexOf('H');
System.out.println(lastindex);//9
int lastindex2 = S1.lastIndexOf('A');
System.out.println(lastindex2);//-1
//lastIndexOf是获取字符在字符串中最后一次出现的索引,索引从零开始,找不到输出-1
String text = "乘风破浪会有时,直挂云帆济沧海";
System.out.println(text.substring(5));
//substring(5)指的是,从索引为5(包括5 )的位置截取字符串text后面内容
System.out.println(text.substring(2, 8));
//从索引为2的位置开始截取(包括2),到索引为8的位置结束(但是不包括8这个位置)
String string3 = "lollipop-water";
boolean end = string3.endsWith("er");
System.out.println(end);//true
//endsWith返回值是一个boolean类型,用来测试该字符串是否以指定的后缀结尾.
System.out.println("".isEmpty());//是空即为true
System.out.println(" ".isEmpty());//不是空即为false
//判断字符串是否为空
System.out.println("举杯消愁愁更愁".contains("消愁"));//true
System.out.println("举杯消愁愁更愁".contains("交杯"));//false
//判断一个字符串中是否包含有某个字符或字符串,有的话返回true,没有返回false
}
}
package com.jzj_string;
import java.util.Arrays;
public class Method02 {
public static void main(String[] args) {
String s = "hello , world";
String s1 = "HELLO , WORLD";
System.out.println(s.toUpperCase());//输出:HELLO , WORLD
//toUpperCase是将字符串转成大写的字符串
System.out.println(s1.toLowerCase());//hello , world
//toLowCase是将字符串转成小写的字符串
String s2 = "Hi,XiaoJiang";
System.out.println(s2.toLowerCase());//hi,xiaojiang
System.out.println(s2.toUpperCase());//HI,XIAOJIANG
String S = s1.concat(s2).concat(s);
System.out.println(S);
String xiaojiang = "chongjiawang".concat(",bipo").concat(",jiangzijun").concat(",shengsangehaizi");
System.out.println(xiaojiang);
//concat用于拼接字符串 string1.concat(string2).concat(string3).....
String R ="chongzijun";
R = R.replace("chong", "jiang");
System.out.println(R);//输出jiangzijun
//replace用于替换字符串 变量.replace(oldString,newString)
String rep = "宝玉 and 林黛玉 林黛玉 林黛玉 林黛玉";
rep = rep.replace("林黛玉", "薛宝钗");
System.out.println(rep);
String poem = "床前明月光,疑是地上霜,举头望明月,低头思故乡,";
//含义是在","处将poem进行分割
String[] split = poem.split(",");
for (int i = 0; i < split.length; i++) {
System.out.println(split[i]);
}
String poem1 = "song:\\Twinkle\\Twinkle\\Little\\Star";
String[] split1 = poem1.split("\\\\");
for (int i = 0; i < split1.length; i++) {
System.out.println(split1[i]);
}
//split分割字符串,如果有特殊字符,需要加入转义字符\
String string = "hello,world";
char[] ch = string.toCharArray();
System.out.println(Arrays.toString(ch));//直接打印整个数组
for (int i = 0; i < ch.length; i++) {
System.out.println(ch[i]);//对字符数组分别进行一一取值
}
String a = "chong";
String b = "jiang";
System.out.println(a.compareTo(b));//-7
String a1 = "Chong";
System.out.println(a.compareTo(a1));//32
String a3 = "chongA";
System.out.println(a.compareTo(a3));//-1
//当str1!= str2时,但当前面的字符都相等的时候,
//这时比较的是str1.length-str2.length
String a4 = "chon";
System.out.println(a.compareTo(a4));//1
String a5 = "chong";//当str1和str2的字符都一致时,返回0
System.out.println(a.compareTo(a5));//0
// string1.compareTo(string2)
// string1对比string2的话,返回的是一个整数(负数和正数)
// 当string1的第一个字符等于string2的第一个字符时,比较string1和string2
// 的第二个字符是否一致,如果一致继续往下对比,如果不一样
// 就用string1的字符减string2的字符(ASCII码表),得到的数值若为正,即string1>string2,
// 若得到的数值若为负,即string1<string2,输出的值都为string1 - string2 的数值
String name = "小王";
int age = 16;
char sex = '男';
double weight = 80.5;
String info = String.format("我的名字是%s 年龄是%d 性别是%c 体重是%f",name,age,sex,weight);
System.out.println(info);
}
}
开发时要用的方法(重点)
1. valueOf方法(重点)
该方法的重载很多,该方法的作用是将其它类型的数据转换为字符串类型。需要注意的是,基本数据和字符串对象之间不能使用以前的强制类型转换的语法进行转换。
另外,由于该方法是static方法,所以不用创建String类型的对象即可。例如:
int n = 10;
String s = String.valueOf(n);
则字符串s的值是”10”。虽然对于程序员来说,没有发生什么变化,但是对于程序来说,数据的类型却发生了变化。
2. trim方法
该方法的作用是去掉字符串开始和结尾的所有空格,然后形成一个新的字符串。该方法不去掉字符串中间的空格。例如:
String s = “ abc abc 123 “;
String s1 = s.trim();
则字符串s1的值为:” abc abc 123”。字符串s的值不变。
String replace(char oldChar, char newChar);在字符串中用新的字符替换老的字符
String[] split(String regex); 以指定的字符串进行切割
String subString(int beginIndex);从指定的位置开始截取字符串
String subString(int beginIndex,int endIndex);从指定的位置开始截取字符串到指定的位置结束
String toUpperCase();将小写字符转为大写的
String toLowerCase();将小写字符转为大写的
String trim();去掉首尾空格
练习题
1.字符串“打劫!我有枪”,“枪”是敏感词汇,替换为“*”,并输出打印
package com.string_test;
//字符串“打劫!我有枪”,“枪”是敏感词汇,替换为“*”,并输出打印
public class Demo1 {
public static void main(String[] args) {
String string = "打劫!我有枪";
System.out.println(string.replace("枪", "*"));
}
}
2.字符串“北京欢迎你”,替换字符为“郑州欢迎你们”,并输出打印
package com.string_test;
//2.字符串“北京欢迎你”,替换字符为“郑州欢迎你们”,并输出打印
public class Demo2 {
public static void main(String[] args) {
String string = "北京欢迎你".replace("北京", "郑州");
String string2 = string.replace("你", "你们");
System.out.println(string2);
}
}
3.字符串“面向对象是以对象为核心..编程思想”,获取并第一个下标和最后一个下标的字符,并输出打印
package com.string_test;
//3.字符串“面向对象是以对象为核心..编程思想”,获取并第一个下标和最后一个下标的字符,并输出打印
public class Demo3 {
public static void main(String[] args) {
String string = "面向对象是以对象为核心..编程思想";
char[] chs1 = string.toCharArray();
System.out.println(chs1[0]);
System.out.println(chs1[chs1.length-1]);
}
}
4.将double类型的数据3.1415926转为字符串
package com.string_test;
/*将double类型的数据3.1415926转为字符串*/
public class Demo4 {
public static void main(String[] args) {
double b1 = 3.1415926;
String string = String.valueOf(b1);
System.out.println(string);
// System.out.println(String.valueOf(99.16));
}
}
5.判断一个字符串是否为空,如果为空,对其赋值,如果不为空,获取字符的个数并打印第一个字符
package com.string_test;
//判断一个字符串是否为空,如果为空,对其赋值,如果不为空,获取字符的个数并打印第一个字符
public class Demo5 {
public static void main(String[] args) {
String string = "";
if (string.isEmpty()) {
System.out.println("hello");
} else {
char[] ch1 = string.toCharArray();
System.out.println(ch1.length);
System.out.println(ch1[0]);
}
}
}
6.判断a在字符串abca中的位置,如果第一次出现的位置和最后一次出现的位置相同,则替换为* fabcdaj
package com.string_test;
import java.util.Arrays;
//判断a在字符串abca中的位置,如果第一次出现的位置和最后一次出现的位置相同,则替换为*
public class Demo6 {
public static void main(String[] args) {
String string = "abca";
int a = string.indexOf('a');
//System.out.println(string.indexOf('a'));
char[] ch = string.toCharArray();
for (int i = 0,j = ch.length-1; i <= j; i++,j--) {
char temp = ch[i];
ch[i] = ch[j];
ch[j] = temp;
}
System.out.println(Arrays.toString(ch));
String string2 = String.valueOf(ch);
int b = string2.indexOf('a');
//System.out.println(string2.indexOf('a'));
if (a == b) {
System.out.println(string.replace('a', '*'));
}
}
}
7.字符串"abcdef" 输出字符串"fedcba"
package com.string_test;
import java.util.Scanner;
//字符串"abcdef" 输出字符串"fedcba"
public class Demo7 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String string = scanner.nextLine();
char[] ch = string.toCharArray();
for (int i = 0,j = ch.length-1; i <= j; i++,j--) {
char temp = ch[i];
ch[i] = ch[j];
ch[j] = temp;
}
String string2 = String.valueOf(ch);
System.out.println(string2);
}
}
8.判断一个字符串是否对称 abcba
package com.string_test;
import java.util.Scanner;
//判断一个字符串是否对称
//abcba
public class Demo8 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String string = scanner.nextLine();
char[] ch = string.toCharArray();
for (int i = 0,j = ch.length-1; i <= j; i++,j--) {
if (ch[i] == ch[j]) {
System.out.println("是对称数组");
break;
} else {
System.out.println("不是对称数组");
}
}
}
}