1.API的使用
API(applicatioin programming interface)应用程序接口
可以理解为API就是java中已经定义好的类和类中的方法
帮助文档里面有JavaSE所有的类
2.String的构造方法
package com.itheima01;
public class Demo02 {
public static void main(String[] args) {
//String类的创建对象方式
//目前我们肯定是用第一个最简单的,但是不同的写法有不同的使用场合,以后会用到
//简单
String s1 = "abc";
System.out.println(s1);
//常规方式
String s2 = new String("abc");
System.out.println(s2);
//把字符数组变成字符串
char[] chs = {'a','b','c'};
String s3 = new String(chs);
System.out.println(s3);
//把字节数组变成字符串
byte[] bys = {97,98,99};
String s4 = new String(bys);
System.out.println(s4);
}
}
3.String创建方式的区别
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7GwzKZ8i-1632139995088)(1.String的内存.png)]
4.==号的判断
==用来判断是否相等:
判断基本类型的时候,是在判断值是否相同
判断引用类型的时候,是在判断地址值是否相同
5.String类的常用方法
必须掌握的方法:
equals() : 判断两个字符串的内容是否相同
length() : 获取字符串的长度
charAt() : 获取指定索引的字符
扩展方法:
substring(): 截取字符串的一部分
: 截取字符串从指定索引到末尾
replace() : 字符串的内容替换
6.字符串的遍历
获取字符串的每一个字符
package com.itheima01;
public class Demo06 {
public static void main(String[] args) {
String s = "学技术到黑马";
//获取每个字符
//快捷键: s.length().fori
for (int i = 0; i < s.length(); i++) {
//获取字符串
char ch = s.charAt(i);
//输出字符
System.out.println(ch);
}
}
}
7.练习
7.1登陆案例
准备正确的用户名和密码,让用户输出用户名密码,显示登陆成功或失败
一共最多给三次机会
package com.itheima01;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
//准备用户名和密码
String yhm = "王鑫";
String mm = "123456";
//循环三次
for (int i = 0; i < 3; i++) {
//键盘录入用户名和密码
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名和密码:");
String name = sc.next();
String password = sc.next();
//判断用户名和密码
if(yhm.equals(name)&&mm.equals(password)){
//正确
System.out.println("登陆成功");
//跳出循环
break;
}else{
//错误重新输入
System.out.println("用户名或密码错误");
}
}
}
}
7.2统计字符个数案例
键盘输入一个字符串,统计字符串中大写字母有几个,小写字母有几个,数字有几个,别的都不统计…
package com.itheima01;
import java.util.Scanner;
public class Demo07 {
public static void main(String[] args) {
//键盘输入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = sc.nextLine();
//定义3个变量
int count1 = 0;
int count2 = 0;
int count3 = 0;
//遍历字符串
for (int i = 0; i < s.length(); i++) {
//获取每一个字符
char ch = s.charAt(i);
if(ch>='A'&&ch<='Z'){
//判断字符是不是大写字母 'A' 'Z'
count1++;
}else if(ch>='a'&&ch<='z'){
//判断字符是不是小写字母 'a' 'z'
count2++;
}else if(ch>='0' &&ch<='9'){
//判断字符是不是数字 '0' '9'
count3++;
}
}
//输出
System.out.println("大写字母:" + count1);
System.out.println("小写字母:" + count2);
System.out.println("数字 :" + count3);
}
}
7.3手机号隐藏显示
把手机号码的中间四位使用****来隐藏掉
package com.itheima01;
import java.util.Scanner;
public class Demo09 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String s1 = s.substring(0, 3);
String s2 = s.substring(7);
System.out.println(s1+"****"+s2);
}
}
7.4敏感词过滤
package com.itheima01;
import java.util.Scanner;
public class Demo10 {
public static void main(String[] args) {
//数组保存一些脏话
String[] strs = {"笨蛋","煞笔","妈","死","小可爱"};
//键盘输入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请打开麦克风交流:");
String s = sc.next();
//遍历数组
for (int i = 0; i < strs.length; i++) {
//不知道是几个*,就用循环生成*, 骂人的词长度是几,就是几个*
String xing = "";
for(int j=0; j< strs[i].length();j++){
xing = xing + "*";
}
//把字符串s里面的这些词替换成*
s = s.replace(strs[i], xing);
}
System.out.println(s);
}
}
8.StringBuilder的构造方法
package com.itheima02;
public class Demo01 {
public static void main(String[] args) {
//StringBuilder创建对象
StringBuilder sb1 = new StringBuilder();
System.out.println(sb1);
StringBuilder sb2 = new StringBuilder("abc");
System.out.println(sb2);
}
}
9.StringBuilder的方法
append() :添加内容
reverse() :反转内容
toString() :转成String对象
package com.itheima02;
public class Demo02 {
public static void main(String[] args) {
//创建对象
StringBuilder sb = new StringBuilder();
//append():添加内容
sb.append(3.14);
sb.append("abc");
sb.append(123);
sb.append("哈哈哈哈");
//reverse():反转内容
sb.reverse();
//toString():把StringBuilder对象变成String类型
String s = sb.toString();
//输出
System.out.println(sb);
System.out.println(s);
//不同的类型不能做比较,equals()方法如果类型不同一定是false
String s1 = new String("abc");
StringBuilder s2 = new StringBuilder("abc");
System.out.println(s1);
System.out.println(s2);
System.out.println(s1.equals(s2)); //类型不同一定是false
}
}
10.StringBuilder的功能
StringBuilder是可变的字符序列,在做大量的字符串拼接时可以提高效率
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ePI5DMdu-1632139995089)(2.StringBuilder的作用.png)]
package com.itheima02;
public class Demo04 {
public static void main(String[] args) {
//用String做10W次拼接
String s = "";
//获取当前时间
long time1 = System.currentTimeMillis();
//循环十万次
for (int i = 0; i < 100000; i++) {
s += "a";
}
//获取当前时间
long time2 = System.currentTimeMillis();
System.out.println((time2-time1)+"毫秒");
//用StringBuilder做10W次拼接
StringBuilder sb = new StringBuilder();
//获取当前时间
long time3 = System.currentTimeMillis();
//循环十万次
for (int i = 0; i < 100000; i++) {
sb.append("a");
}
//获取当前时间
long time4 = System.currentTimeMillis();
System.out.println((time4-time3)+"毫秒");
}
}
以后其实就是在学习类和类中的方法
区分哪个方法属于哪个类,不能记混
Scanner
nextInt()
next()
nextLine()
Random
nextInt(int num)
String
equals(String s)
length()
charAt(int index)
substring(int i ,int j)
substring(int i)
replace(String old,String new)
StringBuilder
append(任意类型)
reverse()
toString()
生成验证码
package com.itheima02;
import java.util.Random;
public class Demo05 {
public static void main(String[] args) {
//调用方法
String code = getCode();
//打印
System.out.println(code);
}
//定义方法,这个方法返回一个验证码
public static String getCode(){
//准备字符串
String s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
// 0123456789........................ 61
//创建随机数对象
Random r = new Random();
//定义字符串
String code = "";
//随机生成4个索引
for (int i = 0; i < 4; i++) {
//索引的范围
int a = r.nextInt(s.length());
//使用索引获取字符
char ch = s.charAt(a);
//拼接
code += ch;
}
//返回结果
return code;
}
}