对于搞Java编程的朋友来说,了解Java编译器和Jvm是非常有帮助的。下面是我的一点小感,算是对Java编译器和Jvm的小脾气有点了解吧。
class Shuiguo{
void display(){
System.out.println("shuiguo");
}
}
class Pingguo extends shuiguo{
void display(){
System.out.println("pingguo");
}
void showtype(){
System.out.println("I AM AN Apple");
}
}
public class Test{
public static void main(String[] args){
Shuiguo sg1 = new Shuiguo();
Pingguo pg = new Pingguo();
Shuiguo sg2 = new Pingguo();
sg1.display();
pg.display();
sg2.display();
}
}
1. Java编译器如同一个心浮气躁的人,不会静下心来看问题。
sg1.display();和pg.display();当检测到这两条语句的时候,Java编译器首先查看引用变量的类 型,分别是 Shuiguo 和Pingguo,然后查看对应的类中是否有被调用的成员方法。结果发现:Shuiguo类里面有display(); 这个方法;同时Pingguo也有display();方法,满足自己的要求,这两条语句检测通过。
2. 请注意当检测sg2.display();的时候发生的细节。编译器检测到sg2是Shuiguo类型,然后查看Shuiguo下面有成员方法display(); 检测通过。换句话说,sg2真正调用的display();这个方法是谁的,编译器是不去理睬的,他只关心引用变量的类型下面是否有这个引用变量所调用的成员。
3. 在main方法中再添加几行代码如下
Shuiguo sg2 = new Shuiguo();
Pingguo pg3 = (Pingguo)sg2;
pg3.showtype();
按照刚才的推理,这3行代码是正确的。经过自己测试,发现确实是可以通过编译的,并且在编译时没有任何错误。但运行时却抛出了异常,说pg3下面没有showtype();这个方法。关于程序运行,关系到JVM,由于时间问题,我将在下一篇上说明。
4. 在main方法中再添加几行代码如下
Shuiguo sg3 = new Shuiguo();
String str = (String)sg3;
代码在编译的时候报错,难道刚才我们的结论是错误的吗。不是的。。。上面的结论需要补充另外一方面的内容:在进行类型之间的转换时需要存在继承关系,在进行继承关系之外的类型转换时,编译器在编译时会报错。
分享到:
相关推荐
《SCJP310-055:Java程序员认证必修知识详解》 SCJP(Sun Certified Programmer for the Java Platform, Standard Edition),即Java程序员认证,是Java开发人员职业技能的重要证明。考试编号为310-055的版本,是...
《SCJP 310-055 Java程序员考试资源详解》 SCJP(Sun Certified Programmer for the Java 2 Platform, Standard Edition)是Oracle公司针对Java程序员设立的一项专业认证,其考试代号为310-055。这个认证旨在验证...
SCJP(Sun Certified ...总之,备考SCJP 310-055的过程中,考生应重点掌握Java语言的核心概念,同时通过模拟试题来检查和巩固自己的学习成果。这样,不仅可以提高考试成绩,也能为日后的Java开发工作打下坚实基础。
**SCJP 310-055** 是指 **Sun Certified Programmer for the Java 2 Platform, Standard Edition Exam 310-055** ,即针对Java 2平台标准版的Sun认证程序员考试。该考试是Java领域的一个重要认证,旨在评估考生对...
这是scjp310-055的考试大纲,建议大家学习 很好
【标题】"SCJP 310-055(0-50)"指的是Oracle Certified Professional, Java Programmer考试中的一个部分,这个认证是Java开发者入门级的资格证书,旨在验证候选人在Java SE(标准版)平台上的编程技能。310-055是SCJP...
这个压缩包包含两个PDF文件,分别来自ActualTest和TestKiller,这两个资源通常提供了模拟试题和学习材料,帮助考生准备SCJP 310-055认证。 1. **Java基础知识**:SCJP考试主要测试对Java编程语言的基本理解,包括...
310-065和310-055是SCJP认证的两个不同版本号,可能对应不同年份或不同版本的Java规范。 标题中的"SCJP 310-065 310-055 题库 合集"表明这是一系列针对这两个考试的练习题集合。题库通常包括模拟试题、历年真题,...
《SCJP310-055认证最新练习题库》是针对Java程序员SCJP(Sun Certified Programmer for the Java 2 Platform, Standard Edition 6)310-055考试的重要参考资料。这个题库(07-09-07版)包含了最新的试题,旨在帮助...
我刚刚通过SCJP(94分),全部来自我的这个题库,请大家看看!不容错过哦!! 想考的朋友,赶快看看吧! SCJP310-055绝真题库和源码
SCJP(Sun Certified Programmer for the Java 2 Platform, Standard Edition 6)是Oracle公司认证的Java程序员资格证书,编号310-055。这个认证主要针对的是Java SE 6平台,旨在验证开发者对Java编程语言的基础知识...
通过系统学习《SCJP学习指南(Exam310-055)附带光盘》,考生可以建立起坚实的Java编程基础,顺利通过SCJP 310-055认证,并为进一步的Java高级认证,如SCJP 310-065 (SCWCD) 和SCJP 310-080 (SCJD) 打下坚实的基础。...
(1)(3) scjp考试专门用书,专门针对310-055。(2) SCJP中文版(1) SCJP中文版(1)(1)(3) SCJP中文版(1)(4) SCJP中文版,数码相机拍的。310-055考试参考用书,对于英文水平不太高的,很适用。(1) scjp考试专门用书,...
SCJP(Sun Certified Programmer for the Java 2 Platform, Standard Edition)是Oracle公司针对Java SE平台的编程认证考试,编号310-055。这个考试主要测试考生对于Java语言基础、类库、内存管理以及程序设计原则的...
### SCJP 310-055 Testkiller:Java Programmer Exam Knowledge Points #### 背景介绍 SCJP(Sun Certified Programmer for the Java 2 Platform)是Sun Microsystems(现已被Oracle收购)针对Java程序员的专业认证...
SCJP(Sun Certified Programmer for the Java 2 Platform)是Java编程认证的一项考试,310-055是该认证的一个版本号。这个题库声称覆盖了考试的90%内容,提供了完整的题目和经过验证的答案,旨在帮助考生在15到20...
通过以上问题的解析,我们可以看出SCJP 310-055考试涵盖了Java编程语言中的多个重要主题,包括但不限于序列化、日期格式化、文件处理和字符串操作等。这些知识点对于Java开发者来说至关重要,能够帮助他们在实际开发...
(1)(3) SCJP中文版(1) scjp考试专门用书,专门针对310-055。(2) SCJP中文版(1)(4) scjp考试专门用书,专门针对310-055。(2)(3)SCJP中文版,数码相机拍的。310-055考试参考用书,对于英文水平不太高的,很适用。(1...
从给定的SCJP 310-055题库Module8的片段中,我们可以提炼出关于Java多线程编程的重要知识点。以下是对每个问题的深入解析: ### Question1 **题目描述**:哪两个代码片段可以在一个独立的线程中执行方法`doStuff()...