Java基础API
API
API概述
键盘录入字符串
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入整数:");
int num = sc.nextInt(); // 10 + 回车换行
System.out.println("请输入字符串:");
String s = sc.nextLine();
System.out.println(num);
System.out.println(s);
}
String类
String概述
String类的构造方法
public String() : 创建一个空白字符串对象,不含有任何内容 String s1 = new String();
public String(char[] chs) : 根据字符数组的内容,来创建字符串对象
char[] chs = {\'a\',\'b\',\'c\'}; String s2 = new String(chs);
public String(String original) : 根据传入的字符串内容,来创建字符串对象 String s3 = new String("123");
String s = “abc”; 直接赋值的方式创建字符串对象,内容就是abc
创建字符串对象的区别对比
String s1="abc";
String s2="ab";
String s3=s2+"c";
System.out.println(s3==s1) //false
String s1="abc";
String s2="a"+"b"+"c";
System.out.println(s1==s2) //true
字符串变量与字符串变量或者字符串变量与字符串常量用”+“串联时,系统底层会自动创建一个StringBuilder对象,再调用append方法完成拼接,最后调用toString方法转换为String类型。
字符串常量之间做拼接时:java存在常量优化机制,会将”a”+”b”+”c”转换为”abc”
字符串的比较
String s1 = "abc";
String s2 = "ABC";
String s3 = "abc";
System.out.println(s1.equals(s2)); //false
System.out.println(s1.equals(s3)); //true
System.out.println(s1.equalsIgnoreCase(s2)); //true
遍历字符串
public static void main(String[] args) { // 1. 键盘录入一个字符串,用 Scanner 实现 Scanner sc = new Scanner(System.in); System.out.println("请输入:"); String s = sc.nextLine(); // 2. 遍历字符串,首先要能够获取到字符串中的每一个字符 for(int i = 0; i < s.length(); i++){ // i : 字符串的每一个索引 char c = s.charAt(i); System.out.println(c); } }
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入:");
String s = sc.nextLine();
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
System.out.println(chars[i]);
}
}
字符串截取
String substring(int index) 从index开始截取字符串到结尾,返回String
String substring(int start,int end) 从start开始截取字符串到end(包含头,不包含尾),返回String
// 1. 键盘录入一个字符串,用 Scanner 实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入手机号:");
String telString = sc.nextLine();
// 2. 截取字符串前三位
String start = telString.substring(0,3);
// 3. 截取字符串后四位
String end = telString.substring(7);
// 4. 将截取后的两个字符串,中间加上****进行拼接,输出结果
System.out.println(start + "****" + end);
字符串替换
String replace(CharSequence target, CharSequence replacement) 将当前targ的内容替换为replacement的内容
// 1. 键盘录入一个字符串,用 Scanner 实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入:");
String s = sc.nextLine();
// 2. 替换敏感词
String result = s.replace("TMD","***");
// 3. 输出结果
System.out.println(result);
切割字符串
String[] split(String regex, int limit) 根据传入字符串作为规则进行切割,regex是正则表达式分隔符,并将切割的字符串存入字符串数组,最后将字符串数组返回,limit是分割份数
// 键盘录入一个字符串,用 Scanner 实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生信息:");
String stuInfo = sc.nextLine();
// stuInfo = "张三,23";
// 根据逗号切割字符串,得到(张三)(23)
String[] sArr = stuInfo.split(",");
// System.out.println(sArr[0]);
// System.out.println(sArr[1]);
注意: . 、 $、 | 和 * 等转义字符,必须得加 \\。
注意:多个分隔符,可以用 | 作为连字符。
public class Test {
public static void main(String args[]) {
String str = new String("Welcome-to-Runoob");
System.out.println("- 分隔符返回值 :" );
for (String retval: str.split("-")){
System.out.println(retval);
}
System.out.println("");
System.out.println("- 分隔符设置分割份数返回值 :" );
for (String retval: str.split("-", 2)){
System.out.println(retval);
}
System.out.println("");
String str2 = new String("www.runoob.com");
System.out.println("转义字符返回值 :" );
for (String retval: str2.split("\\.", 3)){
System.out.println(retval);
}
System.out.println("");
String str3 = new String("acount=? and uu =? or n=?");
System.out.println("多个分隔符返回值 :" );
for (String retval: str3.split("and|or")){
System.out.println(retval);
}
}
}
- 分隔符返回值 :
Welcome
to
Runoob
- 分隔符设置分割份数返回值 :
Welcome
to-Runoob
转义字符返回值 :
www
runoob
com
多个分隔符返回值 :
acount=?
uu =?
n=?
StringBuilder类
StringBuilder类概述
构造方法
public StringBuilder() 创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str) 根据字符串的内容,来创建可变字符串对象
StringBuilder sb = new StringBuilder();
StringBuilder sb2 = new StringBuilder("hello");
StringBuilder常用的成员方法
append / reverse
public StringBuilder append(任意类型) 添加数据,并返回对象本身
public StringBuilder reverse() 返回相反的字符序列
sb.append("hello").append("world").append("java").append(100);可链式编程
sb.reverse();
append返回对象本身(类似C++的引用),可以链式编程,也可以用多个StringBuilder对象控制同一个对象
StringBuilder sb=StringBuilder("hello");
StringBuilder s=sb.append(" world");
System.out.println(s); //hello world
toString()
public String toString() //通过 toString() 就可以实现把 StringBuilder 转换为 String
public StringBuilder(String s) //通过构造方法就可以实现把 String 转换为 StringBuilder
StringBuilder sb=new StringBuilder("hello");
String s = sb.toString(); //StringBuilder-->String
StringBuilder sb = new StringBuilder(s); //String-->StringBuilder
StringBuilder提高效率原理
String拼接:
StringBuilder拼接:
案例1:判断回文字
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s1=sc.nextLine();
StringBuilder sb1= new StringBuilder(s1);
sb1.reverse();
String sb=sb1.toString();
if(sb.equals(s1)){
System.out.println("是回文字");
}else{
System.out.println("不是回文字");
}
}
案例2:StringBuilder拼接字符串
public static void main(String[] args) {
int[] a={1,2,3};
String s=toArryString(a);
System.out.println(s);
}
public static String toArryString(int[] a){
StringBuilder sb=new StringBuilder();
sb.append("[");
for (int i = 0; i < a.length; i++) {
if(i==a.length-1){
sb.append(a[i]).append("]");
}else{
sb.append(a[i]).append(",");
}
}
String s=sb.toString();
return s;
}