1.Scanner类
说明:用Scanner类的方法可以完成接收键盘录入的数据
package daigua7;
import java.util.Scanner;
public class Scanner1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一串字符:");
System.out.println(sc.nextLine());
sc.close();
}
}
2.String类
2.1构造方式
package daigua7;
public class StringDemo {
public static void main(String[] args) {
// 直接赋值
String s1 = "hello world!";
System.out.println(s1);
// 使用构造方法1
String s2 = new String("我是你爸爸!");
System.out.println(s2);
// 使用char数组
char[] s4 = {'我', '是', '天', '才'}; // 注意,这里要用单引号,双引号会默认为String类型
System.out.println(s4);
// 使用构造方法2,使用字符数组的一部分,下标切片
String s3 = new String(s4, 1, 3);
System.out.println(s3);
}
}
内存中的区别:
2.2String类的方法
2.2.1判断方法
package daigua7;
/*
* Object:是类层次结构中的根类,所有的类都直接或者间接的继承自该类。
* 如果一个方法的形式参数是Object,那么这里我们就可以传递它的任意的子类对象。
*
* String类的判断功能:
* boolean equals(Object obj):比较字符串的内容是否相同
* boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
* boolean startsWith(String str):判断字符串对象是否以指定的str开头
* boolean endsWith(String str):判断字符串对象是否以指定的str结尾
*/
public class StringDemo1 {
public static void main(String[] args) {
//创建字符串对象
String s1 = "hello";
String s2 = "hello";
String s3 = "Hello";
//boolean equals(Object obj):比较字符串的内容是否相同
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println("-----------");
//boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.equalsIgnoreCase(s3));
System.out.println("-----------");
//boolean startsWith(String str):判断字符串对象是否以指定的str开头
System.out.println(s1.startsWith("he"));
System.out.println(s1.startsWith("ll"));
System.out.println("-----------");
//boolean endsWith(String str):判断字符串对象是否以指定的str结尾
System.out.println(s1.endsWith("lo"));
System.out.println(s1.endsWith("he"));
}
}
练习:
package daigua7;
import java.util.Scanner;
/*
* 模拟登录,给三次机会,并提示还有几次。
*
* 分析:
* A:定义两个字符串对象,用于存储已经存在的用户名和密码
* B:键盘录入用户名和密码
* C:拿键盘录入的用户名和密码和已经存在的用户名和密码进行比较
* 如果内容相同,提示登录成功
* 如果内容不同,提示登录失败,并提示还有几次机会
*/
public class StringTest1 {
public static void main(String[] args) {
//定义两个字符串对象,用于存储已经存在的用户名和密码
String username = "admin";
String password = "admin";
Scanner sc = new Scanner(System.in);
//给三次机会,用for循环实现
for(int x=0; x<3; x++) {
//键盘录入用户名和密码
System.out.println("请输入用户名:");
String name = sc.nextLine();
System.out.println("请输入密码:");
String pwd = sc.nextLine();
//拿键盘录入的用户名和密码和已经存在的用户名和密码进行比较
if(username.equals(name) && password.equals(pwd)) {
System.out.println("登录成功");
break;
}else {
if((2-x) ==0) {
System.out.println("用户名和密码被锁定,请与管理员联系");
}else {
System.out.println("登录失败,你还有"+(2-x)+"次机会"); //2,1,0
}
}
}
sc.close();
}
}
2.2.2 获取方法
package daigua7;
/*
* String类的获取功能:
* int length():获取字符串的长度,其实也就是字符个数
* char charAt(int index):获取指定索引处的字符
* int indexOf(String str):获取str在字符串对象中第一次出现的索引
* String substring(int start):从start开始截取字符串
* String substring(int start,int end):从start开始,到end结束截取字符串。包括start,不包括end
*/
public class StringDemo2 {
public static void main(String[] args) {
String s = new String("我是你爸爸,傻儿子!");
System.out.println("字符串的长度为:" + s.length());
System.out.println("字符串第三个字符是:" + s.charAt(2));
System.out.println("字符'爸'第一次出现的下标:" + s.indexOf('爸'));
// 子字符串是 左闭右开的
System.out.println("从下标3开始截取:" + s.substring(3));
System.out.println("从下标3开始截取,下标5结束:" + s.substring(3,5));
}
}
练习:
package daigua7;
import java.util.Scanner;
/*
* 统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
*
* 分析:
* A:键盘录入一个字符串数据
* B:定义三个统计变量,初始化值都是0
* C:遍历字符串,得到每一个字符
* D:拿字符进行判断
* 假如ch是一个字符。
* 大写:ch>='A' && ch<='Z'
* 小写:ch>='a' && ch<='z'
* 数字:ch>='0' && ch<='9'
* E:输出结果
*/
public class StringTest2 {
public static void main(String[] args) {
//键盘录入一个字符串数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串数据:");
String s = sc.nextLine();
//定义三个统计变量,初始化值都是0
int bigCount = 0;
int smallCount = 0;
int numberCount = 0;
//遍历字符串,得到每一个字符
for(int x=0; x<s.length(); x++) {
char ch = s.charAt(x);
//拿字符进行判断
if(ch>='A' && ch<='Z') {
bigCount++;
}else if(ch>='a' && ch<='z') {
smallCount++;
}else if(ch>='0' && ch<='9') {
numberCount++;
}else {
System.out.println("该字符"+ch+"非法");
}
}
//输出结果
System.out.println("大写字符:"+bigCount+"个");
System.out.println("小写字符:"+smallCount+"个");
System.out.println("数字字符:"+numberCount+"个");
}
}
2.2.3 字符串的转换
package daigua7;
/*
* String类的转换功能:
* char[] toCharArray():把字符串转换为字符数组
* String toLowerCase():把字符串转换为小写字符串
* String toUpperCase():把字符串转换为大写字符串
*
* 字符串的遍历:
* A:length()加上charAt()
* B:把字符串转换为字符数组,然后遍历数组
*/
public class StringDemo3 {
public static void main(String[] args) {
String s = "I'm your father, my foolish son";
char[] c = {'1','2','3'};
System.out.println(c); // 字符串数组可以直接print输出内容
System.out.println(s.toCharArray());
System.out.println(s.toLowerCase());
System.out.println(s.toUpperCase());
}
}
练习:
package daigua7;
import java.util.Scanner;
/*
* 键盘录入一个字符串,把该字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
*
* 分析:
* A:键盘录入一个字符串
* B:截取首字母
* C:截取除了首字母以外的字符串
* D:B转大写+C转小写
* E:输出即可
*/
public class StringTest3 {
public static void main(String[] args) {
//键盘录入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = sc.nextLine();
//截取首字母
String s1 = s.substring(0, 1);
//截取除了首字母以外的字符串
String s2 = s.substring(1);
//B转大写+C转小写
String s3 = s1.toUpperCase()+s2.toLowerCase();
//输出即可
System.out.println("s3:"+s3);
sc.close();
}
}
2.2.4 其它方法
String trim()
String[] split(String str)
package daigua7;
/*
* 去除字符串两端空格
* String trim()
* 按照指定符号分割字符串
* String[] split(String str)
*/
public class StringDemo4 {
public static void main(String[] args) {
String s = " ahsd alkhsd ahdka ";
System.out.println(s);
System.out.println(s.trim());
String[] s1 = s.split("a");
for (int i = 0; i < s1.length; i++) {
System.out.println(s1[i]);
}
}
}
3.StringBuilder类
说明:是一个可变的字符串。字符串缓冲区类
3.1 常用方法
package daigua7;
/*
* StringBuilder:是一个可变的字符串。字符串缓冲区类。
*
* String和StringBuilder的区别:
* String的内容是固定的。
* StringBuilder的内容是可变的。
*
* 构造方法:
* StringBuilder()
*
* 成员方法:
* public int capacity():返回当前容量
* public int length():返回长度(字符数)
*
* 容量:理论值
* 长度:实际值
*
* 添加功能
* public StringBuilder append(任意类型):添加数据,并返回自身对象
* 反转功能
* public StringBuilder reverse()
*/
public class StringDemo5 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
System.out.println(sb.capacity());
System.out.println(sb.length());
// 添加
sb.append("hello ");
sb.append("world");
sb.append(true);
sb.append(100);
System.out.println(sb);
// 反转
System.out.println(sb.reverse());
}
}