【无标题】

目录

算数运算符

三元运算符

就近原则

成员变量和局部变量区别​编辑​编辑​编辑​编辑​编辑

this​编辑​编辑​编辑​编辑​编辑

构造方法

标准的JavaBean

内存

基本数据类型 引用数据类型

算数运算符

  • 隐式转换(自动类型提升)
    • byte < short < int < long < float < double
  • 强制转换 int b = (int)a;
    double a = 5.0;
    int b = (int)a;
    System.out.println(b);

      

三元运算符

  • 格式:关系表达式?表达式1:表达式2
  • 例题:输入一个整数,查看这个数是否是回文数
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入一个整数");
        int n =  sc.nextInt();
        int nn = n;
        int num = 0;
        while (n != 0){
            int ge = n %10;
            n = n / 10;
            num = num * 10 + ge;
        }
        System.out.println(num);
        System.out.println(nn == num ? "是回文数":"不是回文数");
    }

      

就近原则

  • 成员变量和局部变量区别

    位置成员变量局部变量
    类中位置不同类中,方法外方法内
    初始化位置不同有默认初始化值没有,使用前需要赋值
    内存位置不同堆内存栈内存
    生命周期不同随着对象的创建而存在随着方法的调用而存在
    作用域整个类中有效当前方法中有效

    • this

构造方法

  • 在创建对象的时候给成员变量进行赋值的
  • 特点
    • 方法名与类名相同,大小写也要一致
    • 没有返回值类型,连void都没有
    • 没有具体的返回值(不能由retrun带回结果数据)
  • 构造方法的重载
    • 带参构造方法和无参构造方法,两者方法名相同,但参数不同

标准的JavaBean

  • 1.类名需要见名知意
  • 2.成员变量使用private修饰
  • 3.提供至少两个构造方法
    • 无参构造方法
    • 带全部参数的构造方法
  • 4.成员方法
    • setXxx/getXxx
    • 其他行为
  • 举例

内存

  • 理解对象内存(黑马)面向对象-07-三种情况的对象内存图_哔哩哔哩_bilibili
    • 一个对象的内存图
      • 1.加载class文件
      • 2.申明局部变量
      • 3.在堆内开辟一个空间
      • 4.默认初始化 / 显示初始化
      • 5.构造方法初始化
      • 6.在堆内存中的地址赋值给左边的局部变量
    • 两个对象

    • 两个引用指向一个对象


    • this的内存原理

基本数据类型 引用数据类型

  • 基本数据类型
    • 数据值存储在自己的空间中
    • 举例:int a = 1          String b = "abs"
  • 引用数据类型
    • 数据值存储在其他空间中,自己空间中存储的是地址值
    • 举例:int[] arr =  {1,2,3}     Student sd = new Student;
  • 攻击游戏案例
    package com.day1;
    
    import java.util.Random;
    
    public class Role {
        private String name;
        private int blood;
        private String gender;
        private String face;
        String[] boyfaces = {"帅气", "可爱", "健壮"};
        String[] girlfaces = {"漂亮", "可爱", "矫健"};
    
        String[] attacks_desc = {
                "%s使出了一招[背心钉],转到对方的身后,一掌向%s背心的灵台穴拍去。",
                "%s使出了一招[游空探爪],飞起身形自半空中变掌为抓锁向%s。",
                "%s大喝一声,身形下伏,一招[跨雷坠地],捶向%s双腿。",
                "%s运气于掌,一瞬间掌心变得血红,一式[掌心雷],推向%s。",
                "%s阴手翻起阳手跟进,一招[没遮拦],结结实实的摊向%s。",
                "%s上步抢身,招中套招,一招[跨挂连环],连环攻向%s"
        };
        String[] injuredus_desc = {
                "结果%s退了半步,毫发无损~",
                "结果给%s造成一处瘀伤",
                "结果一击命中,%s得弯下腰",
                "结果%s痛苦地问哼了一声,显然受了点内伤",
                "结果%s摇摇欲坠,一跤排倒在地",
                "结果%s脸色一下变得惨白,连退了好几步",
                "结果[轰]的一声,%s中鲜血狂喷而出",
                "结果%s一声惨叫,像滩软泥般塌了下去"
        };
    
        public Role() {
        }
    
        public Role(String name, int blood, String gender) {
            this.name = name;
            this.blood = blood;
            this.gender = gender;
            //因为长相随机 所以不能用this
            setFace(gender);
        }
    
        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;
        }
        public String getGender() { return gender; }
        public void setGender(String gender) { this.gender = gender; }
    
        public String getFace() { return face; }
        public void setFace(String face) {
            Random r = new Random();
            if (gender.equals("男") ) {
                int index = r.nextInt(boyfaces.length);
                this.face = boyfaces[index];
            } else if (gender.equals("女")) {
                int index = r.nextInt(girlfaces.length);
                this.face = girlfaces[index];
            } else {
                this.face = "出错啦";
            }
        }
    
        //定义一个攻击行为
        public void attack(Role role) {
    
            Random reduce = new Random();
            int index = reduce.nextInt(attacks_desc.length);
            String Kunfu = attacks_desc[index];
            System.out.printf(Kunfu,this.getName(),role.getName());
    
            int hurt = reduce.nextInt(20);
            //收到伤害后剩的血
            int remainder = role.getBlood() - hurt;
            remainder = remainder < 0 ? 0 : remainder;
            role.setBlood(remainder);
            if (remainder > 90){
                System.out.printf(injuredus_desc[0],role.getName());
            }else if(remainder > 80){
                System.out.printf(injuredus_desc[1],role.getName());
            }else if(remainder > 70){
                System.out.printf(injuredus_desc[2],role.getName());
            }else if(remainder > 60){
                System.out.printf(injuredus_desc[3],role.getName());
            } else if(remainder > 50){
                System.out.printf(injuredus_desc[4],role.getName());
            }else if(remainder > 25){
                System.out.printf(injuredus_desc[5],role.getName());
            }else if(remainder > 10){
                System.out.printf(injuredus_desc[6],role.getName());
            }else {
                System.out.printf(injuredus_desc[7],role.getName());
            }
            System.out.println();
        }
    
        public void showRoleface() {
            System.out.println(getName());
            System.out.println(getBlood());
            System.out.println(getGender());
            System.out.println(getFace());
        }
    }
    
    package com.day1;
    
    public class Test {
        public static void main(String[] args) {
    
            Role r1 = new Role("喜洋洋",100,"男");
            Role r2 = new Role("红太狼",100,"女");
    
            r1.showRoleface();
            r2.showRoleface();
            while (true){
                //r1开始攻击r2
                r1.attack(r2);
                if(r2.getBlood() == 0){
                    System.out.println(r2.getName() + "死掉了");
                    break;
                }
                r2.attack(r1);
                if(r1.getBlood() == 0){
                    System.out.println(r1.getName() + "牺牲了");
                    break;
                }
            }
        }
    }
    

    运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值