`
youngmaster
  • 浏览: 58489 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java中的120个经典问题 回顾之二

阅读更多

16、同步和异步有何异同,在什么情况下分别使用他们?举例说明。

  如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。

  当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

  17、abstract class和interface有什么区别?

  声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

  接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

  18、heap(堆)和stack(栈)有什么区别。

  栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。

  堆是栈的一个组成元素

  19、forward和redirect的区别

  forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

  redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。

  20、EJB与JAVA BEAN的区别?

  Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

  21、Static Nested Class 和 Inner Class的不同。

  Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。

  22、JSP中动态INCLUDE与静态INCLUDE的区别?

  动态INCLUDE用jsp:include动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。

  静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面

  23、什么时候用assert。

  assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。

  24、GC是什么?为什么要有GC?

  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

  25、short s1 = 1; s1 = s1 + 1;有什么错?

  short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)

  short s1 = 1; s1 += 1;(可以正确编译)

  26、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

  Math.round(11.5)==12 Math.round(-11.5)==-11 round方法返回与参数最接近的长整数,参数加1/2后求其floor.

  27、String s = new String("xyz");创建了几个String Object?

  两个

  28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

  以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。

public class ThreadTest1 { 
    private int j; 
 
    public static void main(String args[]) { 
        ThreadTest1 tt=new ThreadTest1();/*********创建对象*********/ 
        Inc inc=tt.new Inc(); Dec dec=tt.new Dec(); 
        for(int i=0;i<2;i++) { 
            Thread t=new Thread(inc); 
            t.start(); 
            t=new Thread(dec); 
            t.start(); 
        } 
    } 
 
    private synchronized void inc(){/**********创建方法*/ 
        j++; 
        System.out.println(Thread.currentThread().getName()+"-inc:"+j); 
    } 
 
    private synchronized void dec(){/*********创建方法*/ 
        j--; 
        System.out.println(Thread.currentThread().getName()+"-dec:"+j); 
    } 
 
    class Inc implements Runnable{ 
        public void run(){ 
            for(int i=0;i<100;i++){ 
                inc(); 
            } 
        } 
    } 
 
    class Dec implements Runnable{ 
        public void run(){ 
            for(int i=0;i<100;i++){ 
                dec(); 
            } 
        } 
    } 
} 

 

29、Java有没有goto?

  java中的保留字,现在没有在java中使用。

  30、启动一个线程是用run()还是start()?

  启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

 

分享自:http://www.abcjava.com/html/JAVA/JAVAjichu/2009/1012/1031_2.html

分享到:
评论

相关推荐

    Java经典编程50道

    《Java经典编程50道》是一份集合了Java编程中具有代表性和挑战性的题目资源,包含完整的源码,旨在帮助开发者提升Java编程技能。通过学习和实践这些题目,开发者可以深入理解Java语言的核心特性和常见设计模式,...

    java十大事件回顾—经典的java评论

    ### Java十大事件回顾—经典Java评论 #### Java5.0:革新与自动化 在Java的发展历程中,2004年发布的Java5.0(代号“Tiger”)被视为一次重大变革,不仅因为它是史上改动幅度最大的版本,更因为它在简化开发流程、...

    java开发实战经典习题答案

    Java开发实战经典课后习题答案涉及到Java编程语言的多个基础知识点,这些知识点对于初学者和想要巩固基础的开发者都具有参考价值。以下是对文档中提到的内容的知识点梳理: 1. Java简介 - Java源程序文件的后缀是....

    43个java 经典手机游戏(打包下载)

    本资源包含43个经典的Java手机游戏,这些游戏是为触屏设备设计并经过破解,可以无需购买或解锁即可游玩,提供了一次回顾经典的机会。 Java手机游戏的开发主要基于Java ME(Micro Edition)平台,这是一个专门为...

    经典算法问题的java实现<一>

    在本资源中,我们关注的是"经典算法问题的java实现&lt;一&gt;",这通常涉及到计算机科学中的基础算法,特别是那些用Java编程语言实现的。这些算法是解决各种计算问题的关键,包括排序、搜索、图论、动态规划等。Java作为一...

    JavaSE回顾总结(狂神说java).xmind

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向...

    Java十大经典案例

    Java作为世界上最流行的编程语言之一,拥有众多的经典案例,这些案例不仅展示了Java的强大功能,也帮助开发者深入理解其核心概念和编程技巧。以下是对"Java十大经典案例"的详细解析: 1. **银行账户管理系统**:这...

    android课件3java语言回顾

    android java语言回顾 android java语言回顾

    java面试常见问题回顾

    Java面试常见问题涵盖了许多核心概念和技术,这些都是面试官在寻找潜在候选人时经常提出的。下面将对这些关键领域进行深入探讨: 1. **基础语法**:Java的基础语法是面试的起点,包括类、对象、封装、继承、多态等...

    我一年Java之路的回顾,反思以及展望

    本文作者回顾了自己一年的Java学习经历,从中提炼出一些关键的经验和教训,对于初学者和想要深入Java编程的人士具有一定的参考价值。 1. **选择合适的入门教材**:在开始学习时,作者选择了《Core Java》作为入门...

    Java经典问题算法大全

    根据给定文件的信息“Java经典问题算法大全”,我们可以推断出这份资料主要涵盖了Java编程语言中的经典算法问题及其解决方案。接下来,我们将详细探讨这一主题下的关键知识点。 ### 一、基础知识回顾 在深入讨论...

    JAVA经典练习题

    压缩包文件名为"java2j",虽然没有提供具体的文件内容,但我们可以推测这可能是一个包含了多个Java源代码文件(.java)的集合,每个文件代表一个练习题,或者是一个包含测试用例和解决方案的结构化项目。这样的练习...

    java开发实战经典

    Java开发是软件行业中非常重要的一个领域,Java作为一种多用途、跨平台的编程语言,广泛应用于企业级应用、移动应用(尤其是Android)、Web服务以及大数据处理等众多场景。学习Java开发首先要了解其基本语法,包括...

    Java程序设计经典教材

    《Java程序设计经典教材》是一本专为初学者设计的Java语言学习指南,它深入浅出地阐述了Java编程的基础知识和核心概念。通过阅读这本书,你可以了解到如何使用Java进行有效的程序开发,并逐步掌握这个强大而广泛使用...

    java基础知识回顾.rar

    Java基础知识回顾 一:java概述 Java的三种技术架构 JAVAEE: Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发; JAVASE: Java Platform Standard Edition,完成桌面应用程序...

    用于回顾java基础知识 Java学习资

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和强大的类库而闻名。"用于回顾java基础知识"的标题和描述暗示了我们将探讨的是Java的基础概念,这可能包括语法、类、对象、数据类型、控制结构等核心...

    Java 网络编程回顾

    文件名为“TestInternet”的可能是一个测试网络连接的Java程序,包含了Socket、ServerSocket、URL或URLConnection的示例代码。通过分析这个程序,我们可以更好地理解Java网络编程的实际应用。 总结来说,Java网络...

    JAVA中传值与引用问题

    Java作为一种广泛使用的高级编程语言,在设计之初就考虑到了如何避免C/C++等语言中的复杂性,特别是指针操作的复杂性和潜在风险。本文将深入探讨Java中的传值与传引用问题,并通过具体的例子来解析其中的原理。 ###...

    《Java语言知识要点回顾》.pdf

    《Java语言知识要点回顾》是一份针对Java编程的复习资料,主要涵盖了Java程序设计的基础概念,包括Java程序的分类、构成、开发流程以及标识符的命名规则。以下是对这些知识点的详细阐述: 1. **Java程序类型**: -...

Global site tag (gtag.js) - Google Analytics