`
micheal19840929
  • 浏览: 163101 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

深刻理解Java编程的7个例子

    博客分类:
  • J2SE
阅读更多

1. 阅读下列代码回答问题(第一个Java程序,理解PATH和CLASSPATH,学会使用javac和java命令)

package cn.edu.uibe;   
public class HelloWorld {   
    public static void main(String[] args) {   
        System.out.println("Hello World!");   
    }   
} 

 

问:
(1)上面代码所在的源文件的文件名是_______________?
(2)在DOS提示符下,当前目录为该源文件所在的目录,PATH环境变量已包含编译程序所在的路径,编译目标路径为“D:\classes”,编译命令行是_____________?
(3)为了让Java解释器能够找到编译后的类文件,需要如何设置环境变量___________?
(4)在正确设置了相关的环境变量之后,运行HelloWorld类的命令行是____________?
答案:
(1)HelloWorld.java,公共类必须定义在和类名同名的文件中,文件名区分大小写。
(2)javac -d D:\classes HelloWorld.java ,-d给出输出目录,javac会在D:\classes创建包的目录层次结构cn\edu\uibe\HelloWorld.class
(3)set CLASSPATH=.;D:\classses,CLASSSPATH给出Java寻找.class文件的多个路径,路径之间用分号分隔,“.”表示当前路径。
(4)java cn.edu.uibe.HelloWorld,注意需要给出包名,类名后面不要加“.class”。

 

2. 阅读下列代码回答问题(关于private的理解)

public class Light {   
    private int brightness = 5;   
    public void brighten(Light another){   
        another.brightness++;   
    }   
    public static void main(String[] args) {   
        Light light1 = new Light();   
        Light light2 = new Light();   
        light1.brighten(light2);   
    }   
} 

 

问:上面代码Java编译器是否会给出错误提示?为什么?
答案:不会出现错误提示,private限制了私有变量只能被同一个类访问,但是没有限制同一个类的不同对象之间互相访问私有变量。实际上,private是在编译时进行检查,如果想限制同类对象之间互相访问,需要在动态运行时实现,开销较大,而且没有必要。

 

3. 阅读下列代码回答问题(关于多态性的理解)

class Base {   
    int i=1;   
    void f(){   
        System.out.println("Base.f()");   
    }   
    void g(){   
    f(); //会调用上面的f()方法吗?   
    }   
}   
public class Derived extends Base { //继承了Base类   
    int i=2; //Derived类的对象有1个i还是2个i呢? 答:2个   
    void f(){ //覆盖override了f()方法   
        System.out.println("Derived.f()");   
    }   
    public static void main(String[] args) {   
        Derived d = new Derived(); //创建子类对象   
        Base b = d; //没有创建对象,仅仅是父类引用指向了子类对象   
        d.f(); //将会输出Derived.f()   
        b.f(); //也会输出Derived.f(),方法具有多态性   
        System.out.println(d.i); //输出的是2,d.i访问子类中定义的变量i   
        System.out.println(b.i); //输出的是1,b.i访问的是父类中定义的变量i,成员变量是不会动态绑定而表现出多态性的。         
        d.g(); //输出Derived.f()   
        b.g(); //也输出Derived.f(),从父类中调用被覆盖的方法f(),也将调用到子类中更具体的方法。   
    }   
}

 

问: 写出上面代码的输出?
答案:参见代码注释,子类和父类中定义同名的变量时,仅仅是隐藏了,变量没有多态性;而对于覆盖的方法,Java表现出多态性,会调用更具体的子类里面的方法,无论从哪里调用,无论使用什么引用类型调用。

 

4.阅读下列代码回答问题(关于匿名内部类的理解)

interface A {   
    void f();   
}   
public class B {   
    public void f(A a) {   
    }   
    public static void main(String[] args) {   
        B b= new B();   
        b.f(new A() {   
            public void f() {   
            }   
        });   
    }   
}

 

问:请解释语句
b.f(new A() {
    public void f() {
    }
});
的含义与作用。
答案:
   这个语句在参数表中定义了一个匿名内部类,这个匿名内部类实现了接口A,实例化了一个匿名内部类的对象,并将这个对象传递给了接收接口A作为参数的方法f(A a)。需要注意的是接口A中的方法f()和类B中的方法f(A a)没有任何关系,是不同的方法。

 

5. 阅读下列代码回答问题(关于static的理解)

public class Static {   
    static int i = 0;   
    int j=0;   
    public static void main(String[] args) {   
        Static s1 = new Static();   
        Static s2 = new Static();   
        s1.i++;   
        s2.i++;   
        s1.j++;   
        s2.j++;   
        System.out.println(s1.i);   
        System.out.println(s1.j);   
        System.out.println(s2.i);   
        System.out.println(s2.j);   
}   
}

 

问:写出上面代码的输出。
答案: 2 1 2 1,i是静态变量,类的所有实例共享同一个i,通常我们不通过引用变量访问静态变量,而是通过类名访问Static.i,注意Static是我们自己定义的类名,而小写的static是关键字,表示静态的,为类的所有实例共享的变量或方法。j是实例变量,每个对象具有不同的,属于其自身的一个变量j。

问:上面代码输出是?
答案:参考代码注释,输出应该是:0 1 0

 

6. 阅读下列代码回答问题(关于引用变量的理解)

class Counter{   
    int i=0;   
}   
public class Reference {   
    public void plus(int i){   
        i++; //不会改变传递进来的参数的值,Java传递基本类型时进行了值的拷贝   
    }   
    public void plus(Counter c){   
        c.i++; //会改变,因为c是一个引用变量,相当于指针   
    }   
    public void create(Counter c){   
        c = new Counter();    
                  c.i++; //不会改变,因为c执行了另外一个新建的对象   
    }      
    public static void main(String[] args) {   
        int i = 0;   
        Reference r = new Reference();   
        Counter c1 = new Counter();   
        Counter c2 = new Counter();        
        r.plus(i);   
        r.plus(c1);   
        r.create(c2);          
        System.out.println(i);   
        System.out.println(c1.i);   
        System.out.println(c2.i);   
    }   
}

 

问:上面代码输出是?
答案:参考代码注释,输出应该是:0 1 0


7. 阅读下列代码回答问题(关于异常的理解)

class MyException extends Exception{   
    public MyException(String message){   
        super(message);   
    }   
}   
public class ExceptionDemo{   
    public void f(int num) throws MyException {   
        if(num<0){   
            throw new MyException("参数不能为负数!");   
        }   
        System.out.println(num);   
        }   
    public void g(){   
        try{   
            f(1);   
            f(3);   
            f(0);   
            f(-1);   
            f(2);   
            f(-5);   
        }catch(MyException e){   
            System.err.println(e.getMessage());   
            return;//会立即返回吗?答:不会!   
        }finally{   
           System.out.println("无论什么时候!");      
        }   
    }   
    public static void main(String[] args) {   
        ExceptionDemo demo = new ExceptionDemo();   
        demo.g();   
    }   
}

 

问:上面代码输出是?
答案:输出是:1 3 0 参数不能为负数! 无论什么时候!
try语句块里面的一行代码抛出了异常,后续代码就不再执行了,而是转到catch开始匹配异常类型。finally语句块里面的代码始终会被执行,即使在catch语句块里面有行return语句也不会立即返回,Java确保finally语句块执行完函数才会返回。

分享到:
评论

相关推荐

    Java2编程详解(Special_Edition_Using_Java)

    对于高级开发者,这部分内容有助于理解Java程序的运行机制,并能解决实际开发中的性能问题。 另外,本书可能还会涵盖多线程编程,这是Java的一个强大特性。读者将学习到如何创建和管理线程,理解同步和互斥的概念,...

    Java语言是人类可以阅读和理解的低级语言的一个例子.docx

    Java的成功,离不开高斯林的创新精神和对技术的深刻理解,他的故事激励着无数程序员和计算机科学家。 总的来说,Java语言是人类智慧的结晶,它的出现简化了编程过程,增强了代码的可移植性,极大地推动了互联网和...

    (全部)web真题--JAVA程序设计100例

    【标题】:“(全部)web真题--JAVA程序设计100例”揭示了这个压缩包文件的内容聚焦于Java编程语言在Web开发中的应用。它提供了100个实际的编程例子,旨在帮助学习者深入理解和掌握Java在构建Web应用程序时的关键概念...

    《Java2程序设计实用教程(第2版)》例题 源码

    《Java2程序设计实用教程(第2版)》是一本深受Java初学者和进阶者喜爱的教材,它深入浅出地介绍了Java编程语言的基本概念和技术。这本书的例题源码是学习过程中不可或缺的一部分,因为它提供了实践编程技能的宝贵机会...

    JAVA算法分析-很好的java思想

    总的来说,“JAVA算法分析”涵盖了广泛的Java编程技术和算法知识,不仅要求我们掌握基本的编程语法,还要对数据结构、算法设计原则有深刻的理解。通过不断学习和实践,我们可以运用这些知识解决复杂的问题,提升Java...

    Java解惑Java解惑

    《Java解惑》系列是一本专注于解答Java编程中常见困惑的书籍,由作者junJZ_2008在JavaEye社区分享。该系列共有八篇文章,内容涵盖了许多基础但重要的Java知识点,旨在帮助读者深化对Java语言的理解,尤其是那些在...

    清华大学课程_java程序设计_郑莉_第六章作业

    【标题】"清华大学课程_java程序设计_郑莉_第六章...每个学生在完成这样的作业时,不仅要理解和掌握这些概念,还需要能够将它们应用到实际编程实践中,通过编写代码来解决问题,体现出他们对Java编程语言的深刻理解。

    JAVA3D教程,java3d

    在实际编程中,你需要了解如何导入和使用Java3D库,以及如何在Java应用程序中创建和显示3D场景。例如,`Canvas3D`是显示3D内容的窗口,需要将其添加到GUI中。同时,你需要理解如何加载和播放3D模型文件,比如.obj或....

    一个意义深刻 FreeMarker 入门例子之HelloWord

    本示例“一个意义深刻的FreeMarker入门例子之HelloWord”旨在帮助初学者理解并掌握FreeMarker的基本用法。 在Java Web开发中,FreeMarker与后端控制器如Servlet或Spring MVC中的Controller协同工作,允许开发者将...

    java经典源代码2

    在Java编程领域,掌握高级界面设计是提升应用用户体验的关键步骤。"java经典源代码2"这个资源主要聚焦于Java高级界面篇,包含了11个经典案例的源代码,旨在帮助开发者深入理解并实践Java GUI(图形用户界面)设计。...

    thingking in Java

    《Thinking in Java》这本书全面而深入,通过阅读并实践书中的例子,读者可以系统地提升Java编程技能,并对整个Java生态系统有更深刻的理解。无论是初学者还是经验丰富的开发者,都可以从中受益匪浅。

    JAVA程序员到架构师推荐阅读书籍

    从基础语法入手,通过《Java编程思想》和《Agile Java》建立起扎实的Java编程基础。然后通过阅读《重构》和《测试驱动开发 by Example》提升编程实践和代码质量。随着技能的提高,深入阅读Rod Johnson的两本书,理解...

    java web 主流框架整合开发spring+hibernate例子

    在Java Web开发领域,Spring和Hibernate是两个非常重要的框架,它们分别...通过深入研究和实践这个"java web 主流框架整合开发spring+hibernate例子",你将对这两款框架有更深刻的理解,并能够灵活应用于各种项目场景。

    snlc编译器 c java

    可视化Java编译器提供了一种直观的方式来观察和理解Java代码的编译过程。相比于命令行工具,可视化界面使得用户能够更容易地跟踪编译步骤,例如类文件的生成、字节码的解析等。这对于初学者来说,能够更清晰地看到...

    关于java手机游戏的翻译

    “翻译”这个标签提示我们,这个文档的核心在于将一种语言的信息准确地转化为另一种语言,对于技术文档来说,这需要对技术术语和概念有深刻的理解。这个标签也暗示了文档的质量,因为一个好的翻译不仅仅是文字的转换...

    Java面向对象基础源代码教程

    在"Java面向对象基础源代码教程"的第四部分,你可能会学习到这些概念的实际应用,通过18个核心概念和8个实践案例深入理解面向对象编程。这些源代码将帮助你更好地掌握Java的面向对象特性,为后续的进阶学习打下坚实...

    《疯狂JAVA讲义》课后习题之输出近似圆源码

    在编程领域,尤其是在图形绘制时,我们经常...通过完成这个习题,学习者不仅能加深对Java编程的理解,还能巩固数学知识,提高问题解决能力。而`PrintCircle.java`文件则提供了具体的实现细节,值得我们仔细研究和学习。

    Java 高级特性.doc

    以上的一些程序代码均为张老师课堂即兴发挥所写,也可以看出,张老师对JAVA特性的深刻理解能力!现在说说我对这些程序代码的理解,说实话,才开始听张老师讲的时候,我感觉很模糊的,但是当我真正理解了之后,觉得...

    Thingking in Java

    这本书深入浅出地介绍了Java语言的核心概念和技术,为读者提供了全面而深刻的Java编程知识。 1. **Java基础知识**:书中首先讲解了Java的基础语法,包括变量、数据类型、运算符、流程控制语句(如if、switch、for、...

    自学java看什么书-强力推荐15本必看书籍-华清远见.docx

    9. **《Java并发编程实战》**(Brian Goetz等著):对于想要深入理解Java多线程和并发编程的读者,这本书提供了丰富的理论和实践指导。 10. **《Java性能优化权威指南》**(Scott Oaks):通过分析性能瓶颈,教你...

Global site tag (gtag.js) - Google Analytics