1. Scann类
next():结束标记是空格,tab键
nextLine():结束标记是回车换行符
nextInt() 和 nextLine() 配合使用时, nextLine() 没有键盘录入的机会。因此如果是字符串和整数一起接受, 建议使用next() 接收字符串。
2. 创建对象区别
2.1 通过构造方法创建
通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同。
2.2 直接赋值方式创建
以 “” 方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一 个 String 对象,并在字符串池中维护
3. 字符串的比较
== 比较基本数据类型:比较的是具体的值 ;
== 比较引用数据类型:比较的是对象地址值
equals() : 比较字符串内容, 区分大小写
equalsIgnoreCase() : 比较字符串内容, 忽略大小写
4. 测试题
4.1 已知用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示
package com.itheima.string;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
String userName = "张三";
String password = "123";
for(int i=0; i<3; i++) {
Scanner sc = new Scanner(System.in);
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-i == 0) {
System.out.println("登录失败,登录次数已用完");
}else {
System.out.println("登录失败,还剩"+(2-i)+"次机会");
}
}
}
}
}
4.2 键盘录入一个字符串,使用程序实现在控制台遍历该字符串
package com.itheima.string;
import java.util.Scanner;
/*
键盘录入一个字符串,使用程序实现在控制台遍历该字符串
*/
public class Test2 {
public static void main(String[] args) {
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);
System.out.println(c);
}
}
}
4.3 键盘录入一个字符串,统计该字符串中大写字母字符、小写字母字符、数字字符出现的次数(不考虑其他字符)
package com.itheima.string;
import java.util.Scanner;
/*
键盘录入一个字符串,统计该字符串中大写字母字符、小写字母字符、数字字符出现的次数(不考虑其他字符)
*/
public class Test3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = sc.nextLine();
int bigCount = 0;
int smallCount = 0;
int numCount = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if(c>='A' && c<='Z') {
bigCount++;
}else if(c>='a' && c<='z') {
smallCount++;
}else if(c>='0' && c<='9') {
numCount++;
}
}
System.out.println("大写字母字符数:"+bigCount);
System.out.println("小写字母字符数:"+smallCount);
System.out.println("数字字符数:"+numCount);
}
}
4.4 定义一个方法,把int数组中数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果 如:int[] arr={1,2,3}; 执行方法后的输出结果为[1,2,3]
package com.itheima.string;
import java.util.Arrays;
/*
定义一个方法,把int数组中数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果
如:int[] arr={1,2,3}; 执行方法后的输出结果为[1,2,3]
*/
public class Test4 {
public static void main(String[] args) {
int[] arr = {1,2,3};
String s = arrayToString(arr);
System.out.println(s);
}
public static String arrayToString(int[] arr) {
String s = "";
s += "[";
for (int i = 0; i < arr.length ; i++) {
if(i == arr.length-1) {
s += arr[i];
}else {
s += arr[i]+",";
}
}
s += "]";
return s;
}
}
4.5 以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽,最终效果为:156****1234
package com.itheima.string;
import java.util.Scanner;
/*
以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽,最终效果为:156****1234
*/
public class Test5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个手机号:");
String s = sc.nextLine();
String start = s.substring(0,3);
String end = s.substring(7);
System.out.println(start+"****"+end);
}
}
4.6 定义一个方法,实现字符串反转 如 输入 abc, 输出 cba
package com.itheima.string;
/*
定义一个方法,实现字符串反转
如 输入 abc 输出 cba
*/
public class Test6 {
public static void main(String[] args) {
String s = "abc";
String s1 = reverse(s);
System.out.println(s1);
}
public static String reverse(String s) {
String ss = "";
for (int i = s.length()-1; i >= 0 ; i--) {
char c = s.charAt(i);
ss += c;
}
return ss;
}
}
4.7 键盘录入一个 字符串,如果字符串中包含(TMD),则使用***替换
package com.itheima.string;
import java.util.Scanner;
/*
键盘录入一个 字符串,如果字符串中包含(TMD),则使用***替换
*/
public class Test7 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String s = sc.nextLine();
String replace1 = s.replace("TMD", "***");
System.out.println(replace1);
}
}