——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一 常见对象-Scanner
1 概述和构造方法
1.1 Scanner的概述
JDK5以后获取用户的键盘录入
1.2 Scanner的构造方法原理
Scanner(InputStream source)
System类下有一个静态的字段:
public static final InputStream in; 标准的输入流,对应着键盘录入。
2 hasNextXxx()和nextXxx()方法
基本格式
hasNextXxx() 判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx
nextXxx() 获取下一个输入项。Xxx的含义和上个方法中的Xxx相同,默认情况下,Scanner使用空格,回车等作为分隔符
3 Scanner获取数据出现的小问题及解决方案
3.1 两个常用的方法:
public int nextInt():获取一个int类型的值
public String nextLine():获取一个String类型的值
3.2 出现的问题
用nextLine()获取数据时,先获取int再获取String时候出问题了,回车当做字符串了
3.3 问题解决方案
第一种:先获取一个数值后,在创建一个新的键盘录入对象获取字符串。
第二种:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。
二 常见对象-String类
1 String类概述
1.1 什么是字符串
多个字符表示的一串数据,也可以看成是一个字符数组
1.2 概述
String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。
a:字符串字面值”abc”也可以看成是一个字符串对象。
b:字符串是常量,一旦被赋值,就不能被改变。
2 String类的构造方法
常见构造方法:
public String():空构造
public String(byte[] bytes):把字节数组转成字符串
public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
public String(char[] value):把字符数组转成字符串
public String(char[] value,int index,int count):把字符数组的一部分转成字符串
public String(String original):把字符串常量值转成字符串
3 String类的特点
3.1 String的特点:一旦被赋值就不能改变
3.2 案例演示
String s = “hello”; s += “world”; 问s的结果是多少?
这句话都干了些什么事呢?
首先在栈内存中为s开辟一块空间,然后拿”hello”这个字符串常量去常量池中找,看看有没有这个常量,如果有就将这个常量在常量池中的地址返回给s,如果没有就在常量池中创建一个,并将该地址值返回
所以s的结果为:helloworld
那么一旦被赋值就不能改变是什么意思呢?指的是常量池中的字符串一旦被赋值就不能改变,但s指向的地址值是可以改变的
4 常见面试题
4.1 面试题1
题目:String s = new String(“hello”)和String s = “hello”的区别?
解析:String s = new String(“hello”);创建了两个对象
String s = “hello”;创建了一个对象
4.2 面试题2
题目:==和equals()的区别?
解析:因为String是引用数据类型,所以比较的是地址值
equals不重写的时候默认比较的是两个对象的地址值,但是String类对该方法进行了重写,重写后该方法比较的是两个字符串的内容
4.3 面试题3
看程序写结果
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2);//false
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
4.4 面试题4
看程序写结果
String s1 = "hello";
String s2 = "world";
String s3 = "helloworld";
System.out.println(s3 == s1 + s2);//false
System.out.println(s3.equals(s1 + s2));//true
5 String类的判断功能
boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean contains(String str):判断大字符串中是否包含小字符串
boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
boolean isEmpty():判断字符串是否为空。
6 String类的获取功能
6.1 方法:
int length():获取字符串的长度。
char charAt(int index):获取指定索引位置的字符
int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
String substring(int start):从指定位置开始截取字符串,默认到末尾。
String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。
6.2 练习题:
题目要求:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
代码实现:
public class Demo {
public static void main(String[] args) {
//定义一个字符串
String str = "hwqey1289SHDIO98euwJIOU398EWISJoiur9ijU390";
//定义变量,存储指定字符出现的次数
int num1 = 0;
int num2 = 0;
int num3 = 0;
//遍历字符串
for(int i = 0 ; i < str.length() ; i++){
char c = str.charAt(i);
if(c >= 'a' && c <= 'z'){
num1++;
}
if(c >= 'A' && c <= 'Z'){
num2++;
}
if(c >= '0' && c <= '9'){
num3++;
}
}
System.out.println("小写字母次数:" + num1 + ",大写字母次数:"
+ num2 + ",数字次数:" + num3);
}
}
7 String类的转换功能
byte[] getBytes():把字符串转换为字节数组。
char[] toCharArray():把字符串转换为字符数组。
static String valueOf(char[] chs):把字符数组转成字符串。
static String valueOf(int i):把int类型的数据转成字符串。
String toLowerCase():把字符串转成小写。
String toUpperCase():把字符串转成大写。
String concat(String sr):把字符串拼接。
8 String类的其他功能
8.1 String的替换功能
String replace(char old,char new)
String replace(String old,String new)
8.2 String的去除字符串两端空格功能
String trim()
8.3 String的按字典顺序比较两个字符串功能
int compareTo(String str)
int compareToIgnoreCase(String str)
9 练习题
9.1 字符串反转
题目要求:把字符串反转
举例:键盘录入”abc”
输出结果:”cba”
代码实现:
public class StringTest {
public static void main(String[] args) {
//定义一个原始字符串
String s = "abcdefg";
System.out.println(s+"反转后:"+reverse(s));
}
/*
* 字符串反转方法
* 两个明确
* 返回值类型:String
* 参数:String
*/
public static String reverse(String s){
String ss ="";
//先把传进来的字符串转换成 字符数组
char[] chs = s.toCharArray();
//逆序遍历
for(int i =chs.length-1;i>=0;i--){
ss += chs[i];
}
return ss;
}
}