Scanner的概述和构造方法原理
- Scanner的概述: JDK5以后用于获取用户的键盘输入
- Scanner的构造方法原理:
Scanner(InputStream source)
System类下有一个静态的字段:
public static final InputStream in; 标准的输入流,对应着键盘录入。
Scanner类的hasNextXxx()和nextXxx()方法
- 1.hasNextXxx() 判断下一个是否是某种类型的元素,其中Xxx可以是Int,Double等。
如果需要判断是否包含下一个字符串,则可以省略Xxx
2.nextXxx() 获取下一个输入项。Xxx的含义和上个方法中的Xxx相同
public int nextInt():获取一个int类型的值
public String nextLine():获取一个String类型的值
public String next():获取一个String类型的值
String类的概述
- 什么是字符串:
字符串是由多个字符组成的一串数据(字符序列)
字符串可以看成是字符数组 - String类的概述 :
通过JDK提供的API,查看String类的说明
可以看到这样的两句话。
a:字符串字面值"abc"也可以看成是一个字符串对象。
b:字符串是常量,一旦被创建,就不能被改变。因为字符串的值是在方法区的常量池中划分空间 分配地址值的
String类的构造方法
- 常见构造方法:
1.public String():空构造
2.public String(byte[] bytes):把字节数组转成字符串
3.public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串(index:表示的是从第几个索引开始, length表示的是长度)
4.public String(char[] value):把字符数组转成字符串
5.public String(char[] value,int index,int count):把字符数组的一部分转成字符串
6.public String(String original):把字符串常量值转成字符串
String类的判断功能
- String类的判断功能:
1.public boolean equals(Object obj): 比较字符串的内容是否相同,区分大小写
2.public boolean equalsIgnoreCase(String str): 比较字符串的内容是否相同,忽略大小写
3.public boolean contains(String str): 判断字符串中是否包含传递进来的字符串
4.public boolean startsWith(String str): 判断字符串是否以传递进来的字符串开头
5.public boolean endsWith(String str): 判断字符串是否以传递进来的字符串结尾
6.public boolean isEmpty(): 判断字符串的内容是否为空串""。
模拟用户登录
package org.westos.demo;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
String name="胡桃夹子";
String code="123456";
for (int i = 1; i <= 5; i++) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名");
String line = scanner.nextLine();
Scanner scanner1 = new Scanner(System.in);
System.out.println("请输入用户名密码");
String line2 = scanner1.nextLine();
if(line.equals(name)&&line2.equals(code)){
System.out.println("登陆成功");
break;
}else{
if(i>=1&&i<5){
System.out.println("登陆失败,你还有"+(5-i)+"次机会");
}else{
System.out.println("您的银行卡已被冻结,请您抽空来银行解冻");
}
}
}
}
}
String类的获取功能
- String类的获取功能:
1.public int length(): 获取字符串的长度。
2.public char charAt(int index): 获取指定索引位置的字符
3.public int indexOf(int ch): 返回指定字符在此字符串中第一次出现处的索引。
4.public int indexOf(String str): 返回指定字符串在此字符串中第一次出现处的索引。
5.public int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
6.public int indexOf(String str,int fromIndex): 返回指定字符串在此字符串中从指定位置后第一次出现处的索引。可以顺带提一下lastIndexOf系列
7.public String substring(int start): 从指定位置开始截取字符串,默认到末尾。
8.public String substring(int start,int end): 从指定位置开始到指定位置结束截取字符串。
统计不同类型字符个数
package org.westos.demo;
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一段字符串");
String s = scanner.nextLine();
int Da=0;
int Xiao=0;
int ShuZi=0;
char ch[] = s.toCharArray();
for (int i = 0; i<ch.length; i++) {
if(ch[i]>='0'&&ch[i]<='9'){
ShuZi++;
}else if(ch[i]>='a'&&ch[i]<='z'){
Xiao++;
}else if(ch[i]>='A'&&ch[i]<='Z'){
Da++;
}
}
System.out.println("数字个数是:"+ShuZi);
System.out.println("大写字母个数是:"+Da);
System.out.println("小写字母个数是:"+Xiao);
}
}
字符串的反遍历
package org.westos.demo;
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一段字符串");
String s = scanner.nextLine();
String str="";
for (int i = s.length()-1; i>=0; i--) {
str+=s.charAt(i);
}
System.out.println(str);
}
}
String类的转换功能
- String的转换功能:
1.public byte[] getBytes(): 把字符串转换为字节数组。
2.public char[] toCharArray(): 把字符串转换为字符数组。
3.public static String valueOf(char[] chs): 把字符数组转成字符串。
4.public static String valueOf(int i): 把int类型的数据转成字符串。
注意:String类的valueOf方法可以把任意类型的数据转成字符串。
5.public String toLowerCase(): 把字符串转成小写。
6.public String toUpperCase(): 把字符串转成大写。
7.public String concat(String str): 把字符串拼接。
String类的其他功能
- String的替换功能:
public String replace(char old,char new) 将指定字符进行互换
public String replace(String old,String new) 将指定字符串进行互换 - String的去除字符串两空格:
public String trim() 去除两端空格 - String的按字典顺序比较两个字符串
public int compareTo(String str) 会对照ASCII 码表 从第一个字母进行减法运算 返回的就是这个减法的结果:
如果前面几个字母一样会根据两个字符串的长度进行减法运算返回的就是这个减法的结果
如果两个字符串一摸一样 返回的就是0
public int compareToIgnoreCase(String str) 会对照ASCII 码表 从第一个字母进行减法运算(忽略大小写) 返回的就是这个减法的结果:
如果前面几个字母一样会根据两个字符串的长度进行减法运算返回的就是这个减法的结果
如果两个字符串一摸一样 返回的就是0
在大串中查找小串出现的次数思路图解
查找"java"字符串出现的次数
package org.westos.demo;
import java.util.Scanner;
public class Demo6 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一段字符串");
String s = scanner.nextLine();
int count=0;
int index=s.indexOf("java");
while (index!=-1){
count++;
s=s.substring(index+4);
index=s.indexOf("java");
}
System.out.println(count);
}
}