A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© AllenQin 初级黑马   /  2018-12-12 17:07  /  564 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Day1
1.API:Java的类与接口。
2.Object类是所有类的父类,所有类都直接或者间接的继承了Object类。
3.所有类都能使用Object包含的方法。
4.toString源码方法打印类时打印的是地址值,使用时需要将此方法进行重写。
5.使用equals源码,基本数据类型比较的是值,引用数据类型比较的是两个对象的地址值,类之间比较时需要重写。
6.Date类的方法使用:
Date()(获取当前系统时间);
Date(毫秒)(获取毫秒对应时间);
SimpleDateFormat(定义时间格式);
parse(把字符串格式时间转换为标准格式);
format(把标准格式时间转换为需要的字符串格式);
getTime()(获取时间对应的毫秒)
7.“yyyy-MM-dd HH:mm:ss” 注:模式中字母不可更改
8.StringBuilder类:字符串缓冲区,可以提高字符串操作效率。
9.StringBuilder的append拼接方法可链式使用。
10.装箱:把基本类型数据装入包装类中。
拆箱:把包装类中的基本类型数据拿出来。
Day2
1.Collection是单列集合的根接口。

集合框架:
集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map。
Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有java.util.ArrayList和java.util.LinkedList,Set接口的主要实现类有java.util.HashSet和java.util.TreeSet。

2.迭代器取出数据运行当中,添加或者删除集合数据,会造成数据紊乱,引起程序运行异常。
3.
4.泛型:是一种未知的数据类型,当我们不知道使用什么数据类型的时候,可以使用泛型。
泛型也可以看成是一个变量,用来接收数据类型E,T。
Day31.栈:先进后出。
队列:先进先出。
2.数组:查询快,增删慢。(数组的长度是不变的,要增删就需要创建一个新的数组,再将原数组的数据传过来。)
3.链表:查询慢,增删快。(链表的每一个元素包含一个数据源和两个指针域(存地址),以此相互连接)
4.红黑树:查询速度非常快。
5.ArrayList集合的底层是数组结构。
6.LinkedList集合的底层是双向链表结构。
7.Hashset是无序集合,不能有重复元素。
8.可变参数 int...a:
一个方法的参数列表,只能有一个可变参数。
如果方法的参数有多个,那么可变参数必须写在参数列表的末尾。
9.sort方法:重写comparable方法,自己(this)和别人(参数)比较,自己需要实现接口。
(this-o为升序)
Comparator(q1,q2):作为裁判,比较两个参数。(q1-q2为升序)
Day4
1.Error错误:无法通过处理的错误,只能事先避免,好比绝症。
Exception异常:异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。
编译时期异常:checked异常。在编译时期,就会检查,如果没有处理异常,则编译失败。(如日期格式化异常)
运行时期异常:runtime异常。在运行时期,检查异常.在编译时期,运行异常不会编译器检测(不报错)。(如数学异
常)
2.throw:写在方法内,自己抛异常,可以自己定义异常的信息。
Throws:写在方法上,JVM帮抛异常,使用默认的异常信息。
3.注意:①throws关键字使用必须写在方法声明处。
②throws关键字后便声明异常必须是exception或者是exception的子类。
③方法内部如果跑出额多个异常对象,那么throws后面必须也声明多个异常,如果跑出的多个异常对象有子父类异常即可。
④调用了一个声明跑出异常的方法,我们就必须处理声明的异常。
4.try.....catch:try中抛出什么异常对象,catch就定义什么异常变量,用来接收这个异常对象。
5.finally不能单独使用,必须和try一起使用。
Finally一般用于资源释放,无论程序是否出现异常,最后都要资源释放。
Java学习了一段时间了,用最近学习的内容写了篇游戏自动打怪的代码,本来想写成多线程,玩家和boss随即攻击的,但是不管怎么修改都要报错,只能写成回合制的了。
public class Boss {
        String name;
        Integer HP;

    public Boss() {
    }

    public Boss(String name, Integer HP) {
        this.name = name;
        this.HP = HP;
    }

    public String getName() {
        return name;
    }

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

    public Integer getHP() {
        return HP;
    }

    public void setHP(Integer HP) {
        this.HP = HP;
    }

    @Override
    public String toString() {
        return "Boss{" +
                "name='" + name + '\'' +
                ", HP=" + HP +
                '}';
    }
    public void shang(Integer i) throws Exception {
        this.HP=this.HP-i;
        if (this.HP<=0){
            return;
        }
        System.out.println("Boss剩余血量"+this.HP);
    }
}
public class Player {
    String name;
    int HP;

    public Player(String name, int HP) {
        this.name = name;
        this.HP = HP;
    }

    public String getName() {
        return name;
    }

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

    public int getHP() {
        return HP;
    }

    public void setHP(int HP) {
        this.HP = HP;
    }

    public Player() {
    }

    @Override
    public String toString() {
        return "Player{" +
                "name='" + name + '\'' +
                ", HP=" + HP +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Player player = (Player) o;
        return HP == player.HP &&
                Objects.equals(name, player.name);
    }

    @Override
    public int hashCode() {

        return Objects.hash(name, HP);
    }
    public void shang(int i) throws Exception {
        this.HP=this.HP-i;
        if (this.HP <= 0){
            throw new Exception("死亡,游戏结束");
        }
        System.out.println(name+"剩余血量"+this.HP);
    }
}
public class Test extends Thread {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        Random r = new Random();
        System.out.println("请输入玩家名字:");
        Player player = new Player(sc.next(), 600 + r.nextInt(800));
        System.out.println("玩家" + player.name + "游戏开始");
        Boss boss1 = new Boss("图图", 30000);
        Boss boss2 = new Boss("杭杭", 28000);
        Boss boss3 = new Boss("卓卓", 23000);
        while (true) {
            ArrayList<Boss> list = new ArrayList<>();
            list.add(boss1);
            list.add(boss2);
            list.add(boss3);
            int q = r.nextInt(3);
            Boss boss = list.get(q);
            System.out.println("遭遇Boss" + boss.name);
            int MP = 0;
            while (true) {
                System.out.println("Boss发动攻击");
                double z = (double) r.nextInt(800) / 1000;
                double b = 0.6 + z;
                int c = (int) (300 * b);
                player.shang(c);
                Thread.sleep(3000);
                if (boss.HP <= 0) {
                    break;
                }
                Thread.sleep(1000);
                int x = r.nextInt(400);
                double y = (double) x / 2000;
                double bei = 0.8 + y;
                Integer i = 0;
                String[] s = {"崩山裂地斩", "拔刀斩", "怒意狂澜", "冥想"};
                int d = r.nextInt(4);
                String k = s[d];
                System.out.println("玩家" + player.name + "发动技能" + k);
                if (k.equals("崩山裂地斩")) {
                    i = (int) (2000 * bei);
                } else if (k.equals("拔刀斩")) {
                    i = (int) (1200 * bei);
                    MP += 5 * bei;
                    player.HP += i * 0.3;
                } else if (k.equals("怒意狂澜")) {
                    i = (int) (400 * bei);
                    MP += 5 * bei;
                    player.HP += i;
                } else if (k.equals("冥想")) {
                    MP += 30 * bei;
                    player.HP += 100 * bei;
                } else {
                    System.out.println("攻击失败,请重试");
                    continue;
                }
                if (MP > 100) {
                    i = (int) (20000 * bei);
                    System.out.println("MP值充满,玩家“+player.name+”发动终极技能:");
                    System.out.println("********帝血弑天********");
                    System.out.println("对boss" + boss.name + "造成" + i + "点伤害");
                    MP = 0;
                }
                boss.shang(i);
                Thread.sleep(2000);
            }
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马