#Day11#
一.对象数组
1.类比int类型数组:
int[] ary = new int[3];//[0,0,0]
2.Person类型的数组
Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();

Person[] persons = new Person[10];//null
注意:对象类型定义的默认值都是null
3.代码实例
3.1 定义一个Person类
public class Person {
String name;
public void drink() {
System.out.println(this.name+“正在喝”);
}
}
3.2 定义一个测试类
public class PersonTest {
public static void main(String[] args) {
//来5个人
int[] ary = new int[5];
//定义对象数组
Person[] persons = new Person[5];
//通过Arrays.toString打印对象数组
System.out.println(“persons对象数组的默认值:”+Arrays.toString(persons));//—>[null, null, null, null, null]
//通过增强for循环打印对象数组
for(Person p:persons) {
System.out.println§;
}
//通过一般的for循环遍历打印数组,并且给数组里面的每个元素赋值
for(int i=0;i<=persons.length-1;i++) {
persons[i] = new Person();//此处很重要,每一个数组的成员都需要new一个Person()
persons[i].name = “李大锤”+i;
System.out.println(persons[i]);
}
注意:
直接打印persons[i]会默认调用数组类型Person的toString方法
如果Person类里不重写toString方法,他会去使用他老爹Object类里的toString();
因此需要在Person类中重写父类Object类的toString方法
//重写父类的方法—返回姓名
@Override
public String toString() {
return this.name;
}
二.小案例—珍爱网
1.需求
a.珍爱网面对的所有用户,不管男嘉宾还是女嘉宾,都是人.自我介绍
b.程序进入界面:1-注册;2-登录;3-查询;4-匹配;5-退出
2.定义一个User用户类
public class User {
//姓名
public String name;
//性别
public char gender;
//是否登录状态
public boolean flag = false;//false表示未登录
//自我介绍
public void show() {
System.out.println(“大家好,我的名字叫”+this.name+",性 别"+this.gender+",很高兴认识大家!");
}
//重写Object类中的toString方法—用于直接打印users[i]
public String toString() {
return name+"-"+gender+"-"+false;
}
}
3.定义一个ZhenaiNetSystem类,用于实现功能,即测试类
3.1 先开始控制台,用于后面的获取键盘上的内容
Scanner sc = new Scanner(System.in);
3.2 定义珍爱网后台数据库
User[] users = init();//封装init()方法用于初始化,生成第一个user用户
注意:封装的方法一定要是static,static的方法只能访问static方法,且此时users数组中只有一个初始化对象成员
-----------------------------------------------------------------------------
private static User[] init() {
User[] us = new User[1];
us[0] = new User();//没有这一步,不能使用一个为null的对象去访问属性
us[0].name = “admin”;
us[0].gender = ‘男’;
return us;
}
------------------------------------------------------------------------------------
3.3 设计功能的总体模块
while(true) {
welcome();—封装的欢迎语
---------------------------------------------------------------------------------
private static void welcome() {
System.out.println("");
System.out.println(“清纯不常在,抓紧谈恋爱,欢迎来到珍爱网—寻找你的那个她!”);
System.out.println(“请输入功能数字:”);
System.out.println(“1-注册;2-登录;3-查询;4-匹配;5-退出”);
System.out.println("");
}
-----------------------------------------------------------------------------
//1.得到用户输入的数字
int code = sc.nextInt();
//2.根据输入的数字,跳转对应的功能–switch-case选择功能
switch(code) {
case 1:
//注册功能
users = regist(sc,users);—封装注册方法—返回的是数组类型的值
-----------------------------------------------------------------------------
private static User[] regist(Scanner sc,User[] users) {
System.out.println("-------------------注册功能-------------------");
//用户输入
System.out.println(“请输入您的名称:”);
String name = sc.next();
System.out.println(“请输入您的性别:”);
char gender = sc.next().charAt(0);//“男”—>‘男’
//构建一个对象
User u = new User();
u.name = name;
u.gender = gender;
//将对象放入数组?
//1.扩容数组+1:扩容以后得到的是一个新的数组
users = Arrays.copyOf(users, users.length+1);
//2.将对象放在最后一个位置
users[users.length-1] = u;
return users;
}
-----------------------------------------------------------------------------
System.out.println(Arrays.toString(users));
break;
case 2:
//登录功能
login(sc,users);—封装登录方法,无需返回值
-----------------------------------------------------------------------------
private static void login(Scanner sc,User[] users) {
System.out.println("-------------------登录功能-------------------");
User u = findByName(sc,users);—通过findByName方法获取输入的对象名
if(unull) {
System.out.println(“登录失败,请重新登录”);
}else {
//有可能当前用户已经登录了,直接提示已经登录
//如果没有登录,提示登录成功
if(u.flag) {
System.out.println(“您的账号已经登录”);
}else {
System.out.println(“恭喜您登录成功”);
//修改登录状态
u.flag = true;
}
}
}
-----------------------------------------------------------------------------
break;
case 3:
//查询功能
User u = findByName(sc,users);–封装findByName方法
-----------------------------------------------------------------------------
private static User findByName(Scanner sc,User[] users) {
System.out.println(“请输入您的用户名:”);
String name = sc.next();
//用输入的用户名和系统后台的所有数据进行比较
for(User u:users) {
if(u.name.equals(name)) {
return u;
}
}
return null;
}
-----------------------------------------------------------------------------
System.out.println(“您查询的用户信息为:”+u);
break;
case 4:
//匹配功能
match(sc,users);—封装
-----------------------------------------------------------------------------
private static void match(Scanner sc,User[] users) {
System.out.println("-------------------匹配功能-------------------");
System.out.println(“欢迎来到霆哥算命-珍爱大揭秘环节”);
System.out.println(“男方:”);
//判断男用户是否存在
User u1 = findByName(sc,users);
System.out.println(“女方:”);
//判断女用户是否存在
User u2 = findByName(sc,users);
if(u1null || u2==null) {
System.out.println(“存在未登录的用户”);
}else {
ZhenaiMapping(u1,u2);//封装真爱测试的方法
}
}
-----------------------------------------------------------------------------
封装的ZhenaiMapping方法
-----------------------------------------------------------------------------
private static void ZhenaiMapping(User u1,User u2) {
//获得字符串的指定位置字符: “字符串”.charAt(0…)
char ch1 = u1.name.charAt(0);//猛男姓名的第一个字符
char ch2 = u1.name.charAt(1);//猛男姓名的第二个字符
char ch3 = u2.name.charAt(0);//女神姓名的第一个字符
char ch4 = u2.name.charAt(1);//女神姓名的第二个字符
//判定
if(ch1-ch2>520) {
System.out.println(“一定是特别的缘分”);
//上面满足,可以继续测试,if中嵌套使用
if(ch3-ch4>1314) {
System.out.println(“你们是天作之合”);
}else {
System.out.println(“你们有缘无分,如果想构建缘分,请关注公众号霆哥算命”);
}
}else {
System.out.println(“你们注定不会在一起”);
System.out.println(“预知有缘人的姓名,请关注霆哥算命”);
}
}
-----------------------------------------------------------------------------
break;
case 5:
//退出功能
return;
default:
System.out.println(“输入不合法”);
break;
}
}

冷酷小叶的Java学习笔记Day11相关推荐

  1. 冷酷小叶的Java学习笔记Day6

    #Day# 一.数组的随机赋值 Random 1.int类型的数组 1.1 定义随机数 Random r = new Random(); 1.2 定义数组 int[] ary = new ary[5] ...

  2. 冷酷小叶的Java学习笔记Day3

    #Day3# 一.switch-case 1.结构 switch(整数或者字符串) { case 整数1或者字符串1: 执行代码; break; case 整数2或者字符串2: 执行代码; break ...

  3. 21天学通Java学习笔记-Day11(常用类)

    java 常用类(重点): String 类: String 类代表字符串.创建以后不能更变. public class tests { public static void main(String[ ...

  4. java学习笔记11--Annotation

    java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...

  5. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  6. 准备写java学习笔记

    准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267

  7. Java学习笔记--StringTokenizer的使用

    2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...

  8. java学习笔记12--异常处理

    java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...

  9. Java学习笔记(十)--控制台输入输出

    输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...

最新文章

  1. 在Matlab中可视化3D体积图像数据,例如MRI图像
  2. Deep learning:十一(PCA和whitening在二维数据中的练习)
  3. java onkeydown_java笔记 js onkeypress与onkeydown 事件区别详细说明
  4. C#调用VC的DLL的接口函数参数类型转换一览表
  5. 浅谈计算机教学论文,毕业论文--浅谈计算机教学的有效性
  6. 大幅提高Android开发效率之TemplateBuilder
  7. IronPython for ASP.NET 部署注意事项
  8. html 选择题代码,JS实现简单的选择题测评系统代码思路详解(demo)
  9. QT编写BarChart直方图
  10. Matplotlib系列(三):坐标轴变换及注释
  11. java驱动音响设备发音_XP环境下驱动正常、声卡正常但音响没声音怎么解决?
  12. ITSM基础框架开发维护指南
  13. js实现表格按行滚动
  14. 社交返利APP正在被返利机器人,普通返利APP集体围攻绞杀
  15. 常见通信协议整理归纳
  16. 可在线使用的调色板颜料工具
  17. 2016晔子小跟班行走城市第一站深圳仙湖植物园游记
  18. gitbook 插件 SEO
  19. idea启动报错:Failed to create JVM. JVM Path: D:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\jbr\
  20. DELPHI 三层显示error loading midas.dll

热门文章

  1. PingTunnel建立ICMP隧道
  2. MTK6765编译环境搭建
  3. C语言求“水仙花”数(详细)
  4. LayoutSizeConstraint设置实现根据控件多少自适应窗口大小
  5. chrome调试工具的使用
  6. 批量挖掘SRC思路与实践二
  7. 海量数据将亮相“全栈式中间件信息技术应用创新峰会”
  8. torchvision.transforms.ToTensor的用法
  9. mybatis XML文件中特殊符号“大于”、“小于”、“大于等于”、“小于等于”,XML报错
  10. python3讯飞语音识别