Java 中 "this" 引用与主方法实战解析:对象方法调用与对话框展示
一、原题完整代码呈现
以下是计算机二级Java考试中关于this
引用、main方法结构及对话框使用的典型题型,主要考察main方法返回类型、对话框调用类及this
关键字的方法调用,包含3处需要填写的空白(标记为//*********Found**********
):
import javax.swing.*;
import java.text.DecimalFormat;
public class Java_1{
//*********Found**********
public static ___________________ main( String args[] ){
SimpleTime t = new SimpleTime( 12, 30, 19 );
//*********Found**********
___________________.showMessageDialog( null, t.buildString(),
" \"this\" 引用示范",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
}
class SimpleTime {
private int hour, minute, second;
public SimpleTime( int hour, int minute, int second ){
this.hour = hour;
this.minute = minute;
this.second = second;
}
public String buildString(){
//*********Found**********
return "this.toString(): " + ___________________() +
"\ntoString(): " + toString() +
"\nthis (with implicit toString() call): " +
this;
}
public String toString(){
DecimalFormat twoDigits = new DecimalFormat( "00" );
return twoDigits.format( this.hour ) + ":" +
twoDigits.format( this.minute ) + ":" +
twoDigits.format( this.second );
}
}
二、空白处逐一解析与解答
1. 第一处空白:main方法的返回类型
答案:void
//*********Found**********
public static void main( String args[] ){
解析:
Java程序的入口方法main
必须声明为void
(无返回值),因为JVM调用main
方法时不需要接收返回结果。如果指定其他返回类型(如int
),会导致编译错误,因此填写void
。
2. 第二处空白:调用showMessageDialog方法的类名
答案:JOptionPane
//*********Found**********
JOptionPane.showMessageDialog( null, t.buildString(),
" \"this\" 引用示范",
JOptionPane.INFORMATION_MESSAGE );
解析: showMessageDialog
是JOptionPane
类的静态方法,用于显示消息对话框。程序已导入javax.swing.JOptionPane
,因此需通过类名JOptionPane
调用该方法,填写此类名。
3. 第三处空白:通过this调用toString方法
答案:this.toString
//*********Found**********
return "this.toString(): " + this.toString() +
解析: buildString
方法中,为了演示this
关键字的显式使用,需要通过this
引用当前对象的toString
方法。this.toString()
与直接调用toString()
功能相同(均调用当前对象的toString
),但显式使用this
更清晰地表明调用的是当前实例的方法,因此填写this.toString
。
三、完整正确代码
四、程序功能与运行说明
程序功能
该程序主要演示Java中this
关键字的用法,通过自定义时间类SimpleTime
展示this
在方法调用和对象引用中的作用,核心功能包括:
- 定义
SimpleTime
类,封装小时、分钟、秒(私有属性),并提供构造方法初始化 - 重写
toString
方法,将时间格式化为"HH:MM:SS"(两位数字显示) - 在
buildString
方法中,通过三种方式调用toString
(显式this
、隐式调用、对象直接引用) - 通过对话框展示三种调用方式的结果,验证
this
引用的作用
运行说明
- 对象创建:
main
方法中创建SimpleTime
实例t
,初始化时间为12时30分19秒 字符串构建:调用
t.buildString()
,返回包含三种toString
调用结果的字符串:this.toString()
:显式通过this
调用,返回格式化时间toString()
:隐式调用(默认当前对象),返回相同格式化时间this
:直接引用对象,默认调用toString()
,返回相同格式化时间
结果展示:
JOptionPane
对话框标题为" \"this\" 引用示范",内容为:this.toString(): 12:30:19 toString(): 12:30:19 this (with implicit toString() call): 12:30:19
- 程序退出:对话框关闭后,通过
System.exit(0)
终止程序
五、核心知识点总结
main方法的基本结构
- 修饰符与返回值:
public static void
是main
方法的固定修饰符组合,public
确保JVM可访问,static
使其成为类方法,void
表示无返回值 - 参数:必须接收
String[] args
,用于接收命令行参数(本例未使用) - 作用:作为程序入口,JVM启动时首先执行
main
方法中的逻辑
- 修饰符与返回值:
JOptionPane对话框的静态方法调用
- 静态方法特性:
showMessageDialog
是JOptionPane
的静态方法,无需创建类实例,直接通过类名调用(JOptionPane.showMessageDialog(...)
) 参数含义:
- 第一个参数:父组件(
null
表示对话框居中显示在屏幕) - 第二个参数:显示内容(本例为
buildString
返回的字符串) - 第三个参数:对话框标题
- 第四个参数:消息类型(
INFORMATION_MESSAGE
表示信息图标)
- 第一个参数:父组件(
- 静态方法特性:
this关键字的作用
- 引用当前对象:
this
代表当前实例本身,可用于显式调用当前对象的方法(如this.toString()
) - 与隐式调用的关系:
this.toString()
与toString()
在功能上完全一致(默认调用当前对象的方法),显式使用this
可提高代码可读性,明确表示调用的是当前实例的方法 - 对象直接引用:当对象作为字符串拼接的一部分时(如
"this: " + this
),Java会自动调用该对象的toString
方法,等价于this.toString()
- 引用当前对象:
toString方法的重写
- 默认行为:
Object
类的toString
方法返回"类名@哈希码"(如SimpleTime@1b6d3586
),通常需重写以返回有意义的信息 - 重写作用:
SimpleTime
的toString
返回格式化的时间字符串,使对象在打印或拼接时更易读 - 格式化工具:
DecimalFormat("00")
确保小时、分钟、秒以两位数字显示(如1→"01")
- 默认行为:
六、常见错误与应试技巧
常见错误分析
- 第一处空白main方法返回类型错误:写成
int
或其他类型(main
必须是void
),或遗漏void
(语法错误) - 第二处空白对话框调用错误:写成
JOption.showMessageDialog
(类名拼写错误,正确为JOptionPane
)或new JOptionPane().showMessageDialog
(无需创建实例,静态方法直接通过类名调用) - 第三处空白this方法调用错误:写成
this.toString
(遗漏括号,应为this.toString()
)或toString(this)
(参数错误,toString
无参数)
- 第一处空白main方法返回类型错误:写成
应试技巧
- main方法结构:“main方法很特殊,public static void不能少,参数String数组接,程序入口全靠它”
- 静态方法调用:“JOptionPane弹窗口,静态方法直接调,类名.方法传参数,无需实例更方便”
- this关键字用法:“this代表当前对象,方法调用可显式,this.toString()与toString()同效果,代码清晰靠它提”
- toString重写:“默认toString不好用,重写它来显内容,格式化工具辅助,对象信息更易读”
通过本题,我们掌握了main
方法的结构、JOptionPane
静态方法的调用、this
关键字在方法调用中的作用及toString
方法的重写。这些知识点是Java基础的核心内容,尤其this
关键字对理解对象的自我引用和面向对象编程思想具有重要意义。