成员变量和局部变量的区别:
成员变量:类中方法外的变量;
局部变量:方法中的变量;
区别 | 成员变量 | 局部变量 |
类中位置不同 | 类中,方法外 | 方法内,方法申明上 |
初始化值不同 | 有默认初始化值 | 没有,使用之前需要完成赋值 |
内存位置不同 | 堆内存 | 栈内存 |
生命周期不同 | 随着对象的创建而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法的运行结束而消失 |
作用域 | 整个类中有效 | 当前方法中有效 |
练习1:文字版格斗游戏
package test;
import java.util.Random;
public class test1 {
//文字版格斗游戏
private String name;
private int blood;
public test1() {
}
public test1(String name, int blood) {
this.name = name;
this.blood = blood;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return blood
*/
public int getBlood() {
return blood;
}
/**
* 设置
* @param blood
*/
public void setBlood(int blood) {
this.blood = blood;
}
public String toString() {
return "test1{name = " + name + ", blood = " + blood + "}";
}
//定义一个方法用于攻击别人
//方法的调用者去攻击参数
public void attack(test1 test1){
Random r=new Random();
int hurt=r.nextInt(20)+1;
//剩余血量
int remindBlood=test1.getBlood() -hurt;
//验证剩余血量;
remindBlood =remindBlood <0?0:remindBlood ;
test1.setBlood(remindBlood );
System.out.println(this.getName() +"举起拳头,打了"+test1.getName() +"一下,造成了"+hurt+"点伤害,鸠摩智还剩下了"+remindBlood +"点血");
}
}
package test;
public class gametest {
public static void main(String[] args) {
//创建第一个角色
test1 r1=new test1("乔峰",100);
//创建第二个角色
test1 r2=new test1("鸠摩智",100);
//开始格斗 回合制游戏
while(true){
r1.attack(r2);
if(r2.getBlood()==0)
{
System.out.println(r1.getName()+"KO了"+r2.getName() );
break;
}
//r2开始攻击r1
r2.attack(r1);
if(r1.getBlood() ==0){
System.out.println(r2.getName() +"KO了"+r1.getName() );
break;
}
}
}
}
运行结果:
乔峰举起拳头,打了鸠摩智一下,造成了19点伤害,鸠摩智还剩下了81点血
鸠摩智举起拳头,打了乔峰一下,造成了15点伤害,鸠摩智还剩下了85点血
乔峰举起拳头,打了鸠摩智一下,造成了11点伤害,鸠摩智还剩下了70点血
鸠摩智举起拳头,打了乔峰一下,造成了13点伤害,鸠摩智还剩下了72点血
乔峰举起拳头,打了鸠摩智一下,造成了10点伤害,鸠摩智还剩下了60点血
鸠摩智举起拳头,打了乔峰一下,造成了3点伤害,鸠摩智还剩下了69点血
乔峰举起拳头,打了鸠摩智一下,造成了9点伤害,鸠摩智还剩下了51点血
鸠摩智举起拳头,打了乔峰一下,造成了18点伤害,鸠摩智还剩下了51点血
乔峰举起拳头,打了鸠摩智一下,造成了20点伤害,鸠摩智还剩下了31点血
鸠摩智举起拳头,打了乔峰一下,造成了13点伤害,鸠摩智还剩下了38点血
乔峰举起拳头,打了鸠摩智一下,造成了19点伤害,鸠摩智还剩下了12点血
鸠摩智举起拳头,打了乔峰一下,造成了19点伤害,鸠摩智还剩下了19点血
乔峰举起拳头,打了鸠摩智一下,造成了7点伤害,鸠摩智还剩下了5点血
鸠摩智举起拳头,打了乔峰一下,造成了4点伤害,鸠摩智还剩下了15点血
乔峰举起拳头,打了鸠摩智一下,造成了17点伤害,鸠摩智还剩下了0点血
乔峰KO了鸠摩智
对象数组练习:
定义数组存储3个商品对象。
商品的属性:商品的id, 名字,价格,库存。
创建三个商品对象,并把商品对象存入到数组当中。
代码如下:
package test;
public class Goods {
private String id;
private String name;
private double price;
private int count;
public Goods() {
}
public Goods(String id, String name, double price, int count) {
this.id = id;
this.name = name;
this.price = price;
this.count = count;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
package test;
public class GoodsTest {
public static void main(String[] args) {
//1.创建一个数组
Goods[] arr=new Goods[3];
//2.创建三个商品对象
Goods g1=new Goods("001","华为P40",5999.0,100) ;
Goods g2=new Goods("002","保温杯",227.0,50) ;
Goods g3=new Goods("003","枸杞",12.7,70) ;
//3.将商品添加到数组中
arr[0]=g1;
arr[1]=g2;
arr[2]=g3;
//4.遍历
for(int i=0;i< arr.length ;i++)
{
Goods goods =arr[i];
System.out.println(goods.getId()+","+goods.getName()+","+goods.getPrice() +","+goods.getCount() );
}
}
}