LY-作业
泛型回顾
1、数组只能保存一种数据类型,数组长度一旦分配就不能改变,而且无法直接删除和添加元素,但是数组可以高效运行。
2、语法:ArrayList list = new ArrayList();可以直接添加和删除元素,但是这里的list是Object类型,当输入的是String类型时,因String类型无法被强转而发生错误。
3、语法:ArrayList<Integer> list = new ArrayList<Integer>;可以指定数据类型为int
4、语法:public class 类名<字母>
作用:安全性;没有泛型,可以加入任何数据类型
避免强制转换
避免不必要的装箱、拆箱
重用性:不用定义各种具体的数据类型
5、泛型方法:在定义方法时,先定义泛型参数并马上用在返回值或形参中;与所在类是否为泛型类无关。
语法:1)无返回值:public <E> void 方法名(E 变量名)
2)有返回值:public <E> E 方法名()
3)有返回值和形参 public <E> E 方法名(E 变量名)
6、语法:public interface 接口名<T>{void 方法名(T 变量名)}
7、语法:public void 方法名(List<?> list)
8、语法:public void 方法名(List<? extends> list)
9、语法:public void 方法名(List<? super> list)
10、语法:public void 方法名(List<? extends> 接口名)
项目package com.jgw.day12;
import java.util.Scanner; public class DemoRegister { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入用户名:"); String name = sc.next(); System.out.println("请输入密码:"); String no1 = sc.next(); System.out.println("请再次输入密码:"); String no2 = sc.next(); boolean isPass = User.Register(name,no1,no2); if(isPass){ System.out.println(name+"注册成功!"); } else{ System.out.println("请重新注册!"); } }
}
package com.jgw.day12; public class User { public static boolean Register(String name,String no1,String no2) { // 判断用户名和密码是否符合规则 boolean sname = false; boolean sno = false; boolean ssno = false; boolean result = false; if (name.length()>0 && Character.isLetter(name.charAt(0))) { for (int i = 0; i < name.length(); i++) { // 验证用户名是否全部为字母 // 字符必须同时包含大小写字母 boolean isLower = Character.isLowerCase(i); boolean isUpper = Character.isUpperCase(i); int lower = 0; int upper = 0; if (Character.isLetterOrDigit(name.charAt(i))) { if(method(name)){ sname = true; } } else { sname = false; System.out.println("用户名只能由字母和数字组成。"); break; } } } else { System.out.println("用户名不能为空且首字母必须大写!"); } if (no1.length() > 0) { for (int j = 0; j < no1.length(); j++) { // 两次密码要相同 if (Character.isLetterOrDigit(name.charAt(j))) { sno = true; } else { sno = false; System.out.println("密码只能由字母和数字组成。"); break; } } } else { System.out.println("密码不能为空!"); } if(no1.equals(no2)){ ssno = true; }else{ ssno = false; System.out.println("两次密码不同,请重新注册!"); } if (sname && ssno) { result = true; } else { result = false; } return result; } // 字符是否同时有大小写字母 public static boolean method (String name){ int lower = 0; int upper = 0; boolean result = false; for (int i = 0; i < name.length(); i++) { char c = name.charAt(i); if (c >= 'a' && c <= 'z') { lower++; } else if (c >= 'A' && c <= 'Z') { upper++; } } if(lower>0 && upper>0){ result = true; }else{ result =false; } return result; } }
package day2; import com.jgw.day12.User; import org.junit.Assert; import org.junit.Test; public class TestUser { // 测试用户名 @Test public void testName(){ String name = "LiuYan123"; String no1 = "qwe123"; String no2 = "qwe123"; boolean check = User.Register(name,no1,no2); Assert.assertEquals("测试不通过,用户名由字母和数字组成且必须同时包含大小写字母",true,check); } // 测试密码 @Test public void testPassword(){ String name = "LiuYan123"; String no1 = "1234"; String no2 = "1234"; boolean check = User.Register(name,no1,no2); Assert.assertEquals("测试不通过,密码必须由数字和字母组成且两次密码要相同",true,check); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!