} (3) 编译并运行,结果如图3.1所示。
图 3.1
3、 编写显示当前时间和日期的程序
(3) 程序功能:该程序通过使用一个自定义类Time,实现显示当前日期和时间的功能。 (4) 程序代码如下。
import java.util.Calendar; class Time { private Calendar t; private int y, m, d, hh, mm, ss; Time (){ t=Calendar.getInstance(); y=t.get(t.YEAR); m=t.get(t.MONTH)+1; d=t.get(t.DATE); hh=t.get(t.HOUR_OF_DAY); mm=t.get(t.MINUTE); ss=t.get(t.SECOND); } public String getDate() { return y+\年\月\日\ } public String getTime() { return hh+\时\分\秒\ } } public class EXP3_3{ public static void main(String[] args){ Time t=new Time(); System.out.println(\当前日期:\ System.out.println(\当前时间:\ } } (5) 编译并运行,结果如图3.2所示。
图 3.2
4、 使用修饰符来限定类的成员变量或成员方法的属性
有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可
以使用修饰符来实现这个目的。 常用的修饰符如下:
public private protected package static final transient volatile 不同修饰符的访问控制权限如表3.1 所示。
访问权限修饰符 public private protected package
类 √ √ √ √
子类 √ √
包 √ √ √
所有类和包
√
表 3.1
(1) 程序功能:通过两个类StaticDemo、EXP3_4 说明静态变量/方法与实例变量/方法
的区别。 (2) 程序源代码如下。 class StaticDemo { static int x; int y; public static int getX() { return x; } public static void setX(int newX) { x = newX; } public int getY() { return y; } public void setY(int newY) { y = newY; } } public class EXP3_4 { public static void main(String[] args) { System.out.println(\静态变量x=\ System.out.println(\实例变量y=\//非法,编译时将出错 StaticDemo a= new StaticDemo(); StaticDemo b= new StaticDemo(); a.setX(1); a.setY(2); b.setX(3); b.setY(4); System.out.println(\静态变量a.x=\ System.out.println(\实例变量a.y=\ System.out.println(\静态变量b.x=\ System.out.println(\实例变量b.y=\ } } (3) 对上面的源程序进行编译,会出现如图3.3所示的出错提示。
图 3.3
(4) 将源程序中的出错语句删除或使用解释符//隐藏起来,例如,
//System.out.println(\实例变量y=\ (5) 重新编译并运行该程序,结果如图3.4所示。
图 3.4
5、 调用方法时参数传递的练习
在其它语言中,函数调用或过程调用时参数有传值调用和传地址调用之分。在Java 中,方法中的参数传递可以分为传值调用或对象方法调用等方式。传值调用即传递的参
数是基本数据类型,调用方法时在方法中将不能改变参数的值,这意味着只能使用它们。对象调用是指先调用对象,再调用对象的方法,这种方式可以修改允许存取的成员变量。所以,如果不想改变参数的值,可以采用传值调用的方法。如果想改变参数的值,可采用对象调用的方法,间接修改参数的值。 5.1、编写一个传值调用的程序
(1) 程序功能:程序首先给整型变量x 和y 赋一个初值10,然后使用传值调用方式调用方法ff1对x 和y 做乘方及输出x 和y 的乘方值,最后再输出x 和y 的乘方值。 (2) 程序源代码如下。
class EXP3_5 { public static void main(String[] args) { int x=10, y=10; ff1(x, y); System.out.println(\ } static void ff1(int passX, int passY) { passX=passX*passX; passY=passY*passY; System.out.println(\ } } (3) 编译并运行,结果如图3.5。
图 3.5