DAY4 Java学习

93 阅读3分钟

文字版格斗游戏

1.新建Javabean类

package com.chris.demo.test1;

import java.util.Random;

public class Role {
    private String name;
    private int blood;

    public Role(){

    }

    public Role(String name,int blood){
        this.name = name;
        this.blood = blood;
    }

    public String getName(){
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public int getBlood(){
        return blood;
    }

    public void setBlood(int blood){
        this.blood = blood;
    }

    //方法体的定义:定义一个方法用于攻击别人
    //思考:如何攻击?谁攻击谁?
    //role r1= new role();
    //role r2 = new role();
    //r1.攻击(r2);   方法的调用者去攻击参数

    public void attack(Role role){
        Random r = new Random();
        int hurt = r.nextInt(20)+1;

        //剩余血量
        int remainBlood = role.getBlood() - hurt;
        //对剩余血量做一个验证,如果为负数,就修改为0
        remainBlood = remainBlood < 0 ? 0:remainBlood;
        //修改被攻击者的血量
        role.setBlood(remainBlood);

        //this表述方法的调用者
        System.out.println(this.getName()+"举起了拳头,打了"+this.getName()+"一下。造成了"+hurt+"点伤害。"
                +this.getName()+"还剩"+remainBlood+"点血量。");
    }
}

测试主类,调用攻击函数

package com.chris.demo.test1;

public class GameTest {
    public static void main(String[] args) {
        Role r1 = new Role("乔峰",100);
        Role r2 = new Role("鸠摩智",100);

        while(true){
            //r1攻击r2
            r1.attack(r2);
            if(r2.getBlood() == 0){
                System.out.println(r1.getName()+"K.O了"+r2.getName());
                break;
            }

            //r2攻击r1
            r2.attack(r1);
            if(r1.getBlood() == 0){
                System.out.println(r2.getName()+"K.O了"+r2.getName());
                break;
            }
        }

    }
}

数组学习 String[] S = {"DSF","SADA"};

索引相关知识点

Java中的索引知识点(通俗版)

一、什么是索引?

索引就像快递柜的编号,能帮你快速找到包裹。在Java中,索引是帮助程序快速定位数据的工具。比如:

  • 数组索引:快递柜的格子号,直接告诉你去哪个格子拿东西
  • 数据库索引:像书的目录,能快速翻到想看的章节
  • 集合索引:类似超市储物柜的条码,扫码直接开对应的柜门

二、三种常见索引类型
  1. 数组索引

    • 原理:数组像一排连续的小格子,索引就是格子的编号(从0开始)
    • 示例
      String[] fruits = {"苹果", "香蕉", "橘子"};
      System.out.println(fruits[1]); // 输出"香蕉"
      
    • 注意:别超范围!比如3个元素的数组,最大索引只能是2
  2. 集合索引(如ArrayList)

    • 原理:底层还是数组,索引用法和数组类似
    • 特点
      • 增删元素时,后面的元素会“集体搬家”(效率较低)
      • 适合“查得多,改得少”的场景
    • 示例
      List<String> list = new ArrayList<>();
      list.add("张三"); // 索引0
      list.add("李四"); // 索引1
      
  3. 数据库索引

    • 作用:让数据库查数据像用百度搜索一样快
    • 常见类型
      类型作用类比
      主键索引身份证号,绝对唯一快递单号
      普通索引普通编号,允许重复快递柜的临时取件码
      联合索引组合多个条件(如姓名+手机号)图书馆的多条件检索机
    • 使用技巧
      • 频繁查询的字段才加索引(比如用户表的手机号)
      • 别给总在变的字段加索引(比如实时更新的库存数量)

三、索引的优缺点
优点缺点
查找速度提升10倍以上新增/删除数据时速度变慢
排序和分组操作更快(如ORDER BY)占用额外存储空间(像多建了一个目录本)
能保证数据唯一性(唯一索引)维护索引需要计算资源

四、使用注意事项
  1. 别滥用索引

    • 就像书包里放太多分类袋,反而找东西更慢
    • 建议:一张表最多5-6个索引
  2. 注意顺序

    • 联合索引的顺序影响效率,比如(城市, 年龄)的索引:
      • ✅ 能快速查“北京+30岁的人”
      • ❌ 查“所有30岁的人”时用不上这个索引
  3. 特殊场景

    • 全文搜索(如文章内容搜索)用Elasticsearch索引,原理像“关键词→页码”的超级目录

一句话总结

索引是数据的“快捷方式”,用空间换时间。就像查字典先看拼音表,而不是一页页翻
记住口诀:“高频查询加索引,增删频繁要谨慎”

统一数据类型:确保gender在成员变量、方法参数、getter/setter中保持同类型