目录
算数运算符
- 隐式转换(自动类型提升)
- 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; } } } }
运行结果