2022.5.30作业CL
范型回顾:
1.范型1-数组回顾及优缺点
数组
属于引用数据类型
只能保存同一种数据类型
数组长度分配后不可改变
优点:高效运行
缺点:无法直接删除和增加元素
2.范型2-ArrayList的使用及缺点分析
ArrayList list1 = new AarryList();
list1.add 增加
list1.set 修改
list1.remove 删除
list1数据类型是Object
计算时默认为int数据类型
需要强转可能会出错
3.范型3-入门-用范型解决隐患问题
将数据类型作为可以变化的“参数“
<数据类型占位符>
如:ArrayList<Integer>
保证了类型的安全性
避免强制转换
避免不必要的装箱、拆箱操作,提升性能
提高了代码的重用性
4.范型4-定义-范型类
语法:public class 类名<字母>
5.范型5-定义-范型方法
在定义方法时,先定义范型参数并马上用在返回值或形参中;
与所在类是否为范型类无关
语法(3种):
<T> void 方法名(T 变量名)
<T> T 方法名 ()
<T> T 方法名 (T 变量名)
T代表范型类型
6.范型6-定义-范型接口
在接口定义时指定范型
当类实现带范型的接口时处理:
1、将<T>改为具体的数据类型
2、保持<T>的定义,但是类须改为范型类
7.范型7-通配符1-问号
范型本质上是一个数据类型的占位符,与<>中具体类型无关(类型擦除),会提示方法签名相同
使用<?>占位符
通配符代表“一种数据类型”,但具体类型是未知的
与<Object>不同,<Object>集合中可以包含任何“多种数据类型”的元素
8.范型8-通配符2-问号extends类
List<? extends 类>
限制条件
可以接受的集合的数据类型为该类类型
或者为该类的子类类型
9.范型9-通配符3-问号super类
List<? super 类>
限定接受集合数据类型为该类或其父类
10.范型10-通配符4-问号extends接口
List<? extends 接口>
限定接口该类及其子类实现接口可行,对于extends限制不能添加元素,null除外
注册
import java.util.Scanner; public class PersonMain { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String username; String password1; String password2; System.out.println("欢迎来到注册页面"); System.out.println("请输入用户名:"); username = sc.nextLine(); System.out.println("请输入密码:"); password1 = sc.nextLine(); System.out.println("请再次输入密码"); password2 = sc.nextLine(); User user = new User(username,password1,password2); boolean b1 = User.checkUserName(user.getUsername()); boolean b2 = User.checkPassword(user.getPassword1(),user.getPassword2()); if(b1&&b2){ System.out.printf("%s用户注册成功!\r",username); }else{ System.out.println("输入错误,请检查用户名和密码是否输入正确"); } } }
import static java.lang.Character.isLetterOrDigit; public class User { private String username; private String password1; private String password2; public User(){} public User(String username, String password1, String password2) { this.username = username; this.password1 = password1; this.password2 = password2; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword1() { return password1; } public void setPassword1(String password1) { this.password1 = password1; } public String getPassword2() { return password2; } public void setPassword2(String password2) { this.password2 = password2; } public static boolean checkUserName(String username) { boolean a1 = false; char userName[] = username.toCharArray(); //判断用户名首位字符是否为字母 if((userName[0]>='a'&&userName[0]<='z')||(userName[0]>='A'&&userName[0]<='Z')){ //判断用户名是否包含大小写 int num1=0,num2=0; for(int j=0;j<userName.length;j++){ if(userName[j]>='a'&&userName[j]<='z'){num1++;} if(userName[j]>='A'&&userName[j]<='Z'){num2++;} } if(num1>0&&num2>0){a1=true;} } //判断用户名是否由字母或数字构成 for (char c : userName) { boolean c1 = isLetterOrDigit(c); if (!c1) { a1 = false; break; } } return a1; } public static boolean checkPassword(String password1, String password2) { boolean a2 = false; char passWord1[] = password1.toCharArray(); char passWord2[] = password2.toCharArray(); //判断密码前后是否一致 a2 = password1.equals(password2); //判断密码是否由字母或数字构成 for (char c : passWord1) { boolean c1 = isLetterOrDigit(c); if (!c1) { a2 = false; break; } } for (char c : passWord2) { boolean c1 = isLetterOrDigit(c); if (!c1) { a2 = false; break; } } return a2; } }
import org.junit.Test; import java.util.Scanner; import static java.lang.Character.isLetterOrDigit; public class TestUser { @Test public void TestCheckUserName(){ Scanner sc = new Scanner(System.in); System.out.println("输入用户名"); String username = sc.nextLine(); boolean a1 = false; char userName[] = username.toCharArray(); //判断用户名首位字符是否为字母 if((userName[0]>='a'&&userName[0]<='z')||(userName[0]>='A'&&userName[0]<='Z')){ //判断用户名是否包含大小写 int num1=0,num2=0; for(int j=0;j<userName.length;j++){ if(userName[j]>='a'&&userName[j]<='z'){num1++;} if(userName[j]>='A'&&userName[j]<='Z'){num2++;} } if(num1>0&&num2>0){a1=true;} } //判断用户名是否由字母或数字构成 for (char c : userName) { boolean c1 = isLetterOrDigit(c); if (!c1) { a1 = false; break; } } if(a1){ System.out.println("成功"); }else{ System.out.println("失败"); } } @Test public void TestCheckPassword() { Scanner sc = new Scanner(System.in); System.out.println("输入密码"); String password1=sc.nextLine(); System.out.println("再次输入密码"); String password2=sc.nextLine(); boolean a2 = false; char passWord1[] = password1.toCharArray(); char passWord2[] = password2.toCharArray(); //判断密码前后是否一致 a2 = password1.equals(password2); //判断密码是否由字母或数字构成 for (char c : passWord1) { boolean c1 = isLetterOrDigit(c); if (!c1) { a2 = false; break; } } for (char c : passWord2) { boolean c1 = isLetterOrDigit(c); if (!c1) { a2 = false; break; } } if(a2){ System.out.println("成功"); }else{ System.out.println("失败"); } } }

浙公网安备 33010602011771号