12.1 scanner类
scanner类 是一种文本扫描器
方法:查看api 有很多方法
比较重要的方法:hasnextint 判断是否是整数
package com.heima.Sanner;
import java.util.Scanner;
public class Demo1_Scanner {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数");
if(sc.hasNextInt()){
int x = sc.nextInt();
System.out.println(x);
}else {
System.out.println("录入错误");
}
}
}
12.2 连续录入两个数的问题
录入一个整数 录入一个字符串 发现敲完数字后执行就完毕了 没有字符串 这个是因为 回车代表了/r/n
解决方案 :创建两个对象
12.3 String类
字符串是常量 一旦赋值 不能改变
string str = "abc"; str = "def" syso str 答案是def 但这个不是赋值的改变 相当于重新创建了一个对象,原来的abc 没有被改变 变成了垃圾
12.4 构造方法
package com.heima.string;
public class Demo2_string {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1 = new String();
System.out.println(s1);
byte[] arr1 ={97,98,99};
String s2 = new String(arr1);
System.out.println(s2);
byte[] arr2 ={97,98,99,100,101};
String s3 = new String(arr2,2,2);
System.out.println(s3);
char[] arr3 = {'a','b'};
String s4 = new String(arr3);
System.out.println(s4);
}
}
1.空参构造 2 构造之传字符数组
3 和2的区别是转几个
4 字符数组等同于字符串 这个是字符数组 前面是字节数组 不要混淆
5 5与4的关系就是2与3的关系
12.5 STRING的一些面试题
package com.heima.string;
public class demo3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//demo1();
//demo2();
//demo4();
String s1= "a"+"b"+"c";//'a'+'b'+'c'; 这样是不对的
String s2 = "abc";
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
private static void demo4() {
String s1 = new String("abc");
String s2 = "abc";
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
private static void demo2() {
String s1= new String("abd");
System.out.println(s1);
}
private static void demo1() {
String s1= "abd";
String s2= "abd";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
}
}
第一个题目是考察== 和equal的区别,==基本数据类型比较的是值,引用数据类型比较的是地址
第二个题目涉及到创建中 系统内部的运行,这个是要创建两个对象的,第一个在常量池,第二个是在堆内存中的副本,并把此副本的地址值赋给方法
第三个是两个都一样的,因为string有常量优化机制 。
第四个是==是false,因为常量和变量的地址值是不一样的
还有一个第五题,和第三题类似,是 "ab"+"c" 和"abc“”的比较,这个==也是false因为会调用stringbuffre
12.06 string的判断功能
equals equalsIgnoreCase
contains
startswith endswith
isEmpty
package com.heima.string;
public class demo4_atring {
public static void main(String[] args) {
// TODO Auto-generated method stub
//demo1();
String s1 = "woaiheima";
String s2 = "heima";
String s3 = "wo";
String s4 = "ma";
System.out.println(s1.contains(s2));
System.out.println(s1.startsWith(s3));
System.out.println(s1.endsWith(s4));
System.out.println(s1.isEmpty());
}
private static void demo1() {
String s1 = "heima";
String s2 = "heima";
String s3 = "Heima";
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s1.equalsIgnoreCase(s3 ));
}
}
12.07 模拟用户登录
package com.heima.test;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("请输入用户名");
String s1 = sc.nextLine();
System.out.println("请输入密码");
String s2 = sc.nextLine();
if ("admin".equals(s1)&&"admin".equals(s2)) {
System.out.println("输入的用户名密码正确");
break;
}else {
if(i==2){
System.out.println("明天再试试");
}
System.out.println("输入错误");
}
}
}
}