一:
(1) 运行以上尟序并尣以上尟序尜尢一行尥码添加注解,将尟序保存尣e601.java
(2) 以上尟序尣类变量是哪一个变量,类尠尞是哪一个尠尞,请找出类变量和类尠尞被使用尜语句
(3) 类变量和实例变量尜区别是什么?
(4) 请画出以上尟序尜内存模型。
代码:
package com.my.gududu;
import java.util.*;
class A { //创建类A
float a; //定义浮点型变量a
static float b; //定义全局浮点型变量b
void setA(float a) { //定义方法setA
this.a = a; //为a赋值为a
}
void setB(float b) { //定义方法setB
A.b = b; //为类A中的全局变量b赋值
}
void printA() { //定义方法printA
System.out.println(a);//打印a的值
}
static void printB() { //定义静态方法printB
System.out.println(b);//打印全局变量b
}
}
public class e601 { //定义类
public static void main(String[] args) {
A.b = 100; //为A中的全局变量赋值
A.printB(); //打印全局变量
System.out.println("1-------------");
A cat = new A(); //构造一个名为cat的类的对象
A dog = new A(); //构造一个名为dog的类的对象
cat.a = 200; //cat中的a赋值为200
dog.a = 150; //dog中的a赋值为150
cat.printA(); //调用cat中的printA方法
cat.printB(); //调用cat中的printB方法
System.out.println("2-------------");
dog.printA(); //调用dog中的printA方法
dog.printB(); //调用dog中的printB方法
System.out.println("3-------------");
cat.setA(1000); //调用cat中的setA方法
cat.setB(1000); //调用cat中的setB方法
dog.printA(); //调用dog中的printA方法
dog.printB(); //调用dog中的printB方法
}
}
二:
(1) 运行以上尟序,为尟序逐行添加注释。
(2) 再产生一个员工,s3, 姓名为 “Marry”,设置其私尩尪户金额为5000元, 在私尩尪户中存入2000元,取出3000元,由s3在尨共尪户中存入200元,编尟查尫尫s1,s2,s3三个用户私尩尪户与尨共尪户尜金额分别是多少。
代码:
package com.my.gududu;
import java.util.*;
class staff {
String name; //定义一个字符串型变量name
int pracc; //定义一个整型变量pracc
static int puacc; //定义一个int型的全局变量 puacc
staff (String n, int acc) { //定义staff方法,构造方法
name = n; //为name赋值
pracc = acc; //赋值
}
void putprm(int m) { //构造putprm方法
pracc += m; //pracc进行加法运算
}
void getprm(int m) { //构造getprm方法
pracc -= m; //pracc进行减法运算
}
static void getpubm(int m) { //构造静态方法
puacc -= m; //减少puacc的值
}
static void putpubm(int m) { //构造静态方法
puacc += m; //增加puacc的值
}
void print() { //构造print方法
System.out.println(name + "' s private account is " + pracc); //打印用户名字,个人余额
System.out.println(name + "' s private account is " + puacc); //打印用户名字,全局账户余额
}
}
public class e602 {
public static void main(String[] args) {
staff.puacc = 100000; //初始化全局账户余额
staff s1 = new staff("TOM", 5000); //创建对象TOM,个人账户余额为5000
staff s2 = new staff("John", 8000); //创建对象John,个人账户余额为8000
staff s3 = new staff("Marry", 5000);
System.out.println("----------------------"); //打印隔行
s1.print(); //打印TOM的个人信息
s2.print(); //打印John的个人信息
s1.getprm(1000); //给TOM增加1000
s2.putprm(2000); //给John减少2000
s3.getprm(2000);
System.out.println("----------------------"); //打印隔行
s1.print(); //打印TOM的个人信息
s2.print(); //打印John的个人信息
System.out.println("----------------------"); //打印隔行
s1.puacc += 2000; //全局账户增加2000
s2.putprm(3000);
s1.print(); //打印TOM的个人信息
s2.print(); //打印John的个人信息
staff.getpubm(5000); //全局账户减少5000
s2.putprm(1000); //John的账户减少1000
s3.puacc += 200;
System.out.println("----------------------"); //打印隔行
s1.print(); //打印TOM的个人信息
s2.print(); ////打印John的个人信息
}
}
3.
回答问题:
(1)【掂码3】掃否可以替换为Village.drinkWater(50);?为什么?
(2) 【掂码4】掃否可以替换为Village.lookWaterAmount();?为什么?
(3) e603类的main()方法中的倒数第2行掂码掃否可以更改为:为什么?
PeopleNumber=Village.getPeopleNumber();?为什么?
代码:
package com.my.gududu;
public class Village {
static int waterAmount;
int peopleNumber;
String name;
Village (String s) {
name = s;
}
static void setWaterAmount (int m) {
if (m > 0) {
waterAmount = m;
}
}
void drinkWater (int n) {
if (waterAmount - n >= 0) {
waterAmount = waterAmount - n;
System.out.println(name + "喝了" + n + "升水");
}
else waterAmount = 0;
}
static int lookWaterAmount() {
return waterAmount;
}
void setPeopleNumber(int n) {
peopleNumber = n;
}
int getPeopleNumber() {
return peopleNumber;
}
}
package com.my.gududu;
public class e603 {
public static void main(String[] args) {
Village.setWaterAmount(200);
int leftWater = Village.waterAmount;
System.out.println("水井中有 " + leftWater + " 升水");
Village zhaoZhuang, maJiaHeZhi;
zhaoZhuang = new Village("赵庄");
maJiaHeZhi = new Village("马家河子");
zhaoZhuang.setPeopleNumber(80);
maJiaHeZhi.setPeopleNumber(120);
zhaoZhuang.drinkWater(50);
leftWater = maJiaHeZhi.lookWaterAmount();
String name = maJiaHeZhi.name;
System.out.println(name + "发现水井中有 " + leftWater + " 升水");
maJiaHeZhi.drinkWater(100);
leftWater = zhaoZhuang.lookWaterAmount();
name = zhaoZhuang.name;
System.out.println(name + "发现水井中有 " + leftWater + " 升水");
int peopleNumber = zhaoZhuang.getPeopleNumber();
System.out.println("赵家庄的人口:" + peopleNumber);
peopleNumber = maJiaHeZhi.getPeopleNumber();
System.out.println("马家河子的人口:" + peopleNumber);
}
}