return name;
}
public boolean getSex(){
return sex;
}
public int getAge(){
return age;
}
public void setAge(int a){
age = a;
}
public String toString() {
return \学号:\姓名:\性别:\年龄:\
}
public static void main(String args[]) {
Student stu =new Student(\,\张三\,true,20);
System.out.println(stu.toString());
} }
12.如何定义静态成员变量?静态成员变量有什么特点?静态方法有何特点?为什么有的时候需要定义静态方法?静态方法处理的成员变量有什么要求?
答:在定义成员变量的时候前面加上static修饰符,该变量即成为静态成员变量,静态成员变量也称为类变量。
类变量和实例变量的区别是,不管为类创建了多少对象,系统仅在第一次调用类的时候为类变量分配内存,所有对象共享该类的类变量。因此,可以通过类本身或者某个对象来访问类变量。
当定义一个方法的时候,使用static关键字说明该方法是类方法(静态方法)而不是实例方法。当第一次调用含类方法的类时,系统只为该类的类方法创建一个版本。这个版本被该类和该类的所有实例所共享。
调用类方法时不需要实例化类,因此对那些不想实例化的类,或者不需要实例化的类,但又需要调用该类的方法,这时就可以把该方法定义为类方法。
类方法只能操作类变量,不能访问在类中定义的实例变量,同时,类方法可以在类中被调用,不必通过创建一个实例对象来调用一个类方法,当然也可以在实例对象中调用类方法。
13.使用静态成员变量来计算内存中的实例化的对象数目。
public class Count {
private String name;
private static int number = 0; //计数Count对象生成的个数
Count() {
name = null;
number++;
}
Count(String n) {
name = n;
number++;
}
protected void finalize() {
//当有一个Count对象释放时会执行该方法,此时对number减1
System.out.println(\有一个Item对象释放了\
number--;
}
public static void main(String args[]) {
Count c1 = new Count();
Count c2 = new Count();
c1 = null;
System.out.println(\执行垃圾收集前Item对象的个数:\
+ number);
//强制执行垃圾收集,观察Count类中number值的变化
java.lang.System.gc();
System.out.println(\执行垃圾收集后Item对象的个数:\
+ number);
c1 = new Count();
java.lang.System.gc();
System.out.println(\执行垃圾收集后Item对象的个数:\
+ number); } }
14.定义一个计算矩形面积、立方体和球体体积的类。该类完成计算的方法用静态方法实现。
public class Calculate{
public static double calculateRectangleArea(
double height,double width){
return height * width ;
}
public static double calculateCubeVol(double x, double y, double z){
return x * y * z;
}
public static double calculateSphereVol(double r){
return (4/3) * 3.14 * r * r * r;
} }
15.设计一个表示用户的User类,类中的变量有用户名、口令(私有的)和记录用户个数的变量(静态的),定义类的3个构造方法(没有参数、有一个参数给用户名赋值、有两个参数给用户名和口令赋值)、获取和设置口令的方法、返回字符串表示的类信息的方法(包含用户名、口令)。编写应用程序测试User类。 答:
class User{
private String name, password;
private static int number;
User(){
name = null;password = null;n umber++; }
User(String n){
name = n; password = null; number++;
}
User(String n, String ps){
name = n; password = ps; nmuber++
}
public String getPassword(){ //密码全部以明文操作,没有使用加密算法
return password;
}
public setPassword(String ps){
password = ps;
}
public String toString() {
return \用户名:\口令:\ } }
public class Test{
User usr = new User(\张三\
usr.setPassword(\
usr.toString(); }
16.定义一个Company类,成员变量有公司名称、雇员列表、公司每年的总收入。该类的构造方法可能有如下形式:
public Company(String name) { }
也可以有更多其它形式的构造方法。或许还应该有如下方法:
public void setName(String name){ }
public String getName() { }
必须提供一个公共的dump方法来打印有关Company的信息,如公司名称、雇员和公司总收入。最后为Company类编写一个测试客户程序。