CHL-5.30练习
1.数组的优点:可高效运行;缺点:编译时必须确定数组长度,并且无法对编译完成后的数组属性直接进行增加和删除,只能存放一种数据类型。
2.ArrayList 优点:不必在最开始就确定长度,当数据数量超过默认长度会自动增加,可以实现对数据的自动装箱,可以存放多种数据类型,可以直接进行数据的增删。 缺点:默认为Object类型,这样保存的数据在使用时有时需要强转,容易出错。
3.List<T> list = list<>/ new ArrayList<>() 泛型定义直接确定了列表存放的数据类型T,防止使用时数据强转出错。
4.泛型类:public class 类名<T>。
5.泛型方法:1.无返回值 public <T> void method(T 变量名){} 2.有返回值无参数 public <T> T method(){} 3.有返回值有参数 public <T> void method(T 变量名){}
6.泛型接口: public interface IFly<T>{
void fly(T value)// <T> fly(T value)
}
7.<?>表示一个不确定的类型,可以是任何类型,在编译时确定为指定数据类型。
8.<?> extends T 类:?确定的类型只能是T类型或者其子类类型
9.<?>super T: ?确定的类型只能是T类型或者其父类类型
10.<?>接口只能确定为能实现接口的类及其子类。
*、用户注册功能(需求:在控制台输入用户名和密码,经检测以后,若成功,则输出:**注册成功。
package com.iit.homework; public class User{ private String uname; private String pwd1; private String pwd2; public User(String uname, String pwd1, String pwd2) { this.uname = uname; this.pwd1 = pwd1; this.pwd2 = pwd2; } @Override public String toString() { return "User{" + "uname='" + uname + '\'' + '}'; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public String getPwd1() { return pwd1; } public void setPwd1(String pwd1) { this.pwd1 = pwd1; } public String getPwd2() { return pwd2; } public void setPwd2(String pwd2) { this.pwd2 = pwd2; } /** * 验证用户名是否符合要求 * @return */ public boolean checkUname(){ boolean conUname = false; if(this.uname.length()>0){ if(Character.isLetter(this.uname.charAt(0))){ for(int i=1;i<this.uname.length();i++){ if(Character.isLetterOrDigit(this.uname.charAt(i))){ boolean check1 = false; boolean check2 = false; boolean check = check1 && check2; if (Character.isLowerCase(this.uname.charAt(i))){ check1 = true; if (Character.isUpperCase(this.uname.charAt(i))){ check2 = true; if(check){ conUname = true; }else { conUname = false; System.out.println("用户名字母要包含大小写"); break; } } } }else { conUname = false; System.out.println("用户名只能字母或字母加数字组成"); break; } } }else { conUname = false; System.out.println("用户名必须以字母打头"); } }else { System.out.println("用户名不能为空"); } return conUname; } /** * 验证密码是否符合要求 * @return */ public boolean checkPwd(){ boolean conPwd = false; if(this.pwd1.length()>0) { conPwd = true; }else { conPwd = false; System.out.println("密码不能为空"); } if(this.pwd2.length()>0){ boolean check = this.pwd1.equals(this.pwd2); if(check){ conPwd = true; }else { conPwd = false; System.out.println("两次输入的密码不相同,请重新输入"); } } return conPwd; } /** * 判断注册结果 * @param conUname * @param conPwd * @return 成功返回true,失败返回false */ public boolean isPass(boolean conUname,boolean conPwd) { boolean result = false; if (conUname && conPwd) { result = true; } else { result = false; } return result; } }
package com.iit.homework; import java.util.Scanner; public class TestUser { public static void main(String[] args) { System.out.println("用户注册:"); System.out.println("请输入用户名:"); String uname = new Scanner(System.in).nextLine(); System.out.println("请输入密码:"); String pwd1 = new Scanner(System.in).nextLine(); System.out.println("请确认您的密码:"); String pwd2 = new Scanner(System.in).nextLine(); User user = new User(uname,pwd1,pwd2); boolean check1 = user.isPass(user.checkUname(), user.checkPwd()); String checkMsg = check1 ?"用户注册成功":"用户注册失败"; System.out.println(checkMsg); } }
package demo2; import com.iit.homework.User; import org.junit.Assert; import org.junit.Test; public class TestUser { @Test public void testCheckUname1(){ String uname = ""; String pwd1 = "123456"; String pwd2 = "123456"; User user = new User(uname,pwd1,pwd2); boolean check = user.checkUname(); Assert.assertEquals("用户名不合法",false,check); } @Test public void testCheckUname2(){ String uname = "121389"; String pwd1 = "123456"; String pwd2 = "123456"; User user = new User(uname,pwd1,pwd2); boolean check = user.checkUname(); Assert.assertEquals("用户名不合法",false,check); } @Test public void testCheckUname3(){ String uname = "U121389"; String pwd1 = "123456"; String pwd2 = "123456"; User user = new User(uname,pwd1,pwd2); boolean check = user.checkUname(); Assert.assertEquals("用户名不合法",false,check); } @Test public void testCheckUname4(){ String uname = "User@121389S"; String pwd1 = "123456"; String pwd2 = "123456"; User user = new User(uname,pwd1,pwd2); boolean check = user.checkUname(); Assert.assertEquals("用户名不合法",false,check); } @Test public void testCheckUname5(){ String uname = "User1389S"; String pwd1 = "123456"; String pwd2 = "123456"; User user = new User(uname,pwd1,pwd2); boolean check = user.checkUname(); Assert.assertEquals("用户名合法",false,check); } @Test public void testCheckPwd1(){ String uname = "Mike"; String pwd1 = ""; String pwd2 = ""; User user = new User(uname,pwd1,pwd2); boolean check = user.checkPwd(); Assert.assertEquals("密码合法",false,check); } @Test public void testCheckPwd2(){ String uname = "Mike"; String pwd1 = "123456"; String pwd2 = "12345x"; User user = new User(uname,pwd1,pwd2); boolean check = user.checkPwd(); Assert.assertEquals("密码合法",false,check); } @Test public void testCheckPwd3(){ String uname = "Mike"; String pwd1 = "123456"; String pwd2 = "123456"; User user = new User(uname,pwd1,pwd2); boolean check = user.checkPwd(); } @Test public void testCheckIsPass1(){ String uname = "Mike"; String pwd1 = "123456"; String pwd2 = "123456"; User user = new User(uname,pwd1,pwd2); boolean check1 = user.checkUname(); boolean check2 = user.checkPwd(); boolean check = user.isPass(check1,check2); Assert.assertEquals("注册成功",false,check); } @Test public void testCheckIsPass2(){ String uname = "1Mike"; String pwd1 = "123456"; String pwd2 = "123456"; User user = new User(uname,pwd1,pwd2); boolean check1 = user.checkUname(); boolean check2 = user.checkPwd(); boolean check = user.isPass(check1,check2); Assert.assertEquals("注册失败",false,check); } @Test public void testCheckIsPass3(){ String uname = "Mike"; String pwd1 = "123456"; String pwd2 = "12345x"; User user = new User(uname,pwd1,pwd2); boolean check1 = user.checkUname(); boolean check2 = user.checkPwd(); boolean check = user.isPass(check1,check2); Assert.assertEquals("注册失败",false,check); } }
浙公网安备 33010602011771号