Scanner类
-
概述:用于获取用户的键盘输入
Scanner的构造方法原理
Scanner(InputStream source)
System类下有一个静态的字段:
public static final InputStream in;标准的输入流,对应着键盘录入。
-
Scanner类的hasNextXxx()和nextXxx()方法
2.1 基本格式
hasNextXxx() 判断下一个是否是某种类型的元素,其中Xxx可以是Int,Double等
nextXxx() 获取下一个输入项,Xxx的含义和上个方法中的Xxx相同
2.2 Scanner获取不同类型值的方法
public int nexInt();获取一个int类型的值
public String nextLine();获取一个String类型的值
public String next();获取一个String类型的值
String类
-
概述:字符串是由多个字符组成的一串数据(字符序列),字符串可以看成是字符组
注意:字符串字面值“abc‘”也可以看成是一个字符串对象
字符串是常量,一旦被创建,就不能被改变
-
String类的构造方法
public String() 空构造
public String (byte[] bytes) 把字节数组转成字符串
public String(byte[] bytes,int index,int length) 把字节数组的一部分转成字符串(index:表示的是从第几个索引开始,length表示的是长度)
public String(char[] value) 把字符数组转成字符串public String(char[] value,int index,int count) 把字符数组的一部分转成字符串
public String(String original)把字符串常量值转成字符串 -
String s = new String(“hello”)和String s = “hello”;的区别。并画内存图解释。
-
==和equals()的区别
==是比较运算符,比较基本数据类型时,比较的是值是否相等,比较引用数据类型时,比较的是两个对象地址值是否相等
equals()是Object中的一个方法,默认比较的是两个对象的地址值是否相等,但是有写类会重写equals()方法,去比较他认为有意义的东西
-
看程序写结果
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2); //flase
System.out.println(s1.equals(s2));//true
String s3 = new String("hello");
String s4 = "hello";
System.out.println(s3 == s4);//false
System.out.println(s3.equals(s4));//true
String s5 = "hello";
String s6 = "hello";
System.out.println(s5 == s6);//true
System.out.println(s5.equals(s6));//true
-
String的判断功能
public boolean equals(Object obj) 比较字符串的内容是否相同,区分大小写
public boolean equalsIgnoreCase(String str) 比较字符串的内容是否相同,忽略大小写
public boolean contains(String str)判断字符串中是否包含传递进来的字符串
public boolean strartsWith(String str) 判断字符串是否以传递进来的字符串 开头
public boolean endsWith(String str) 判断字符串是否以传递进来的字符串结尾
public boolean isEmpty() 判断字符串是否为空串
-
模拟用户登录,给三次机会,并提示还有几次
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
String name="凯隐";
String password="123456";
for (int i = 1; i <=3; i++) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名");
String userName = sc.nextLine();
System.out.println("请输入密码");
String psd = sc.nextLine();
if (userName.equals(name)&&psd.equals(password)){
System.out.println("登录成功");
}else{
if (3-i==0){
System.out.println("请下次再试");
}else{
System.out.println("用户名或密码输入错误,请重试你还有"+(3-i)+"次机会");
}
}
}
}
}
-
String类的获取功能
public int length() 获取字符串的长度
public char charAt(int index) 获取指定索引位置的字符
public int indexO(int ch) 返回指定字符在此字符串中第一次出现的索引
public int indexOf(String str)返回指定字符串在此字符串中第一次出现的索引
public int indexOf(int ch,int fromIndex) 返回指定字符在此字符串中从指定位置后第一次出现处的索引
public int indexOf(String str,int fromIndex) 返回指定字符串在此字符串中从指定位置后第一次出现处的索引
public String substring(int start)从指定位置开始截取字符串,默认到末尾
public string substring (int start ,int end) 从指定位置开始到指定位置结束截取字符串
-
需求:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
int num=0;
int counta=0;
int countA=0;
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串");
String s = sc.nextLine();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c>'0'&&c<'9'){
num++;
}else if (c>'a'&&c<'z'){
counta++;
}
else if (c>'A'&&c<'Z'){
countA++;
}
}
System.out.println("有"+num+"个数字");
System.out.println("有"+counta+"个小写字母");
System.out.println("有"+countA+"个大写字母");
}
}
-
String类的转换功能
public byte[] getBytes() 把字符串转换为字节数组
public char[] toCharArray() 把字符串转换为字符数组
public static String valueOf(char[] chs) 把字符数组转成字符串
public static String valueOf(int i)把int类型的数据转成字符串
public String toLowerCase()把字符串转成小写
public String toUpperCase() 把字符串转成大写
public String concat(String Str)把字符串拼接
-
把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
public class Demo2 {
public static void main(String[] args) {
String str="jdlknfGHLDbjhhflkjhkjHjkgGGKJL";
String s = str.substring(0, 1).toUpperCase().concat(str.substring(1).toLowerCase());
System.out.println(s);
}
}
-
String类的替换功能
public String replace(char old ,char new)将指定的字符进行互换
public String replace(String old ,String new)将指定的字符串进行互换
-
String 的去除字符串两端空格
public String trim() 去除两端空格
-
需求:把数组中的数据按照指定个格式拼接成一个字符串
public class Demo3 {
public static void main(String[] args) {
int[] arr={1,2,3};
String str = "[";
for (int i = 0; i < arr.length; i++) {
if (i==arr.length-1){
str+=arr[i]+"]";
}else{
str+=arr[i]+",";
}
}
System.out.println(str);
}
}
- 案例演示 需求:键盘录入字符串传,把字符串反转
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串");
String s = sc.nextLine();
StringBuffer sb = new StringBuffer(s);
StringBuffer sb1 = sb.reverse();
System.out.println(sb1);
}
}
- 需求:统计大串中小串出现的次数
举例:“woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun” 中java出现了5次
public class Demo5 {
public static void main(String[] args) {
String s="woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
int index = s.indexOf("java");
int count=0;
while (index!=-1){
count++;
s = s.substring(index + 4);
index= s.indexOf("java");
}
System.out.println(count);
}
}
vagun";
int index = s.indexOf(“java”);
int count=0;
while (index!=-1){
count++;
s = s.substring(index + 4);
index= s.indexOf(“java”);
}
System.out.println(count);
}
}