}
System.out.println(C); }
catch(Exception e){
System.out.println(e.getMessage()); } } }
61.java是否存在内存泄露
答案:存在,当一个对象引用另一对象后,当另一对象为空时,会出现内存泄露。
62.String类的值是否可以改变
答案:String类的值在初始后不能改变,如果要改变,可转换为StringBuffer类,这个类的值是可以动态改变的。(这里主要考String 和 StringBuffer 的区别)
63.java 有几种修饰符?默认的是什么?
答案:(注:修饰符是影响类、变量及成员方法的生存空间和可访问性的关键字) 修饰符 类 成员方法 成员变量 局部变量 abstract √ √ - - static - √ √ - public √ √ √ - protected - √ √ - private - √ √ -
private protected - √ √ - synchronized - √ - - native - √ - - volatile - - √ - final √ √ √ - transient - - √ √
以下是访问控制修饰符: 默认为friendly 修饰符 同类 同包 子孙类 不同包 public √ √ √ √ protected √ √ √ - friendly √ √ - -
private √ - - -
64.toString方法的概述
答案:因为每个类都继承了Object类,所以都实现了toString()方法。 通过toString()方法可以决定所创建对象的字符串表达形式。
65.Object类的概述
答案:Object类是所有其他的类的超类,Object的一个变量可以引用任何其他类的对象。因为数组是作为类实现的,所以Object的一个变量也可以引用任何数组,它包括以下几种方法:
clone() equals() finalize() getClass() hashCode() notify() notifyAll() toString() wait()
66.java特点
答案:java具有以下几个主要特点: 1) 简单性
2) 面向对象:JAVA是完全面向对象的,它支持静态和动态风格的代码继承及重用 3) 分布式:包括数据分布和操作分布
4) 健壮性:java系统仔细检测对内存的每次访问,确认它是否合法,而且在编译和运行
程序时,都要对可能出现的问题进行检查,以消除错误的产生。 5) 结构中立
6) 安全性:java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这
样就防止程序员使用木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。
7) 与平台无关:java写的应用程序不用修改就可在不同的软硬平台上运行。平台无关性
有两种:源代码级和目标代码级。 Java主要靠JAVA虚拟机在目标代码级上实现平台无关性
8) 解释执性:运行JAVA程序时,它首先被编译成字节代码,字节代码非常类似机器码,
执行效率非常高。 9) 高性能 10) 多性程
11) 动态性:它允许程序动态的装入运行时需要的类。
67.什么叫抽象类?抽象类跟接口有什么区别?为什么引进数据接口概念?
答案:具有关键字abstract ,在实现内容上没有完全定义的类就叫抽象类。
抽象类和接口的区别如下:
① 在类继承抽象类时,只需实现部分具体方法和全部抽象方法,而实现接口则要实现里面的全部方法。
②在接口中无成员变量,而抽象类中可有成员变量。 在Java中引进接口主要是为了解决多继承的问题。
68.doGet与doPut的区别?
答案:doPut会把地址作为一个文件写到服务器,而doGet不会,而只显示在地址栏。
69.多线程实现有那几种方法,同步有哪几种方法?
答案:实现同步主要有两种方法:1.synchronized 2.wait notify 。实现多线程主要继承Thread 类和实现Runnable接口。
70.JSP页面的跳转?
答案:jsp页面实现跳转主要有jsp:forward 和 sendRedirect 两种方法
jsp:forward:在本容器内跳转 。 跳转后,地址栏地址不变 。效率高。跳转后立即结束本页的内容。
sendRedirect:在容器之间的跳转,跳转后地址栏地址为跳转后的地址,效率较低。 通常采用jsp:forward方式跳转。
71.类变量的初始化
答案:在Java中类变量在局部中一定要初始化,因为局部变量会覆盖全局变量,否则会报错:变量未初始化。全局变量则可以不初始化,而到具体的内部方法或其他的类成员中初始化。
72.数组的定义
答案:数组是作为一种对象实现的。数组元素可以包含作何类型值,但数组里面的每个元素的类型必须一致
创建数组步聚如下: 1) 声明 2) 构造 3) 初始化
Java代码查错:
73.以下有何错误:
abstract class Name { private String name;
public abstract boolean isStupidName(String name) {} }
答案:错。abstract method必须以分号结尾,且不带花括号。
74.查错
public class Something { void doSomething () { private String s = \ int l = s.length(); } } 有错吗?
答案:错。局部变量前不能放置任何访问修饰符 (private,public,和protected)。final可以用来修饰局部变量(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。
75.查错误
abstract class Something {
private abstract String doSomething (); }
这好像没什么错吧?
答案:错。abstract的methods不能以private修饰。abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstractmethod封锁起来呢? (同理,abstract method前不能加final)。
76.查错误
public class Something {
public int addOne(final int x) { return ++x; } }
这个比较明显。
答案: 错。int x被修饰成final,意味着x不能在addOne method中被修改。
77.查错误
public class Something {
public static void main(String[] args) { Other o = new Other(); new Something().addOne(o); }
public void addOne(final Other o) { o.i++; } }
class Other { public int i; }
和上面的很相似,都是关于final的问题,这有错吗?
答案:正确。在addOne method中,参数o被修饰成final。如果在addOne method里我们修改了o的reference(比如: o = new Other();),那么如同上例这题也是错的。但这里修改的是o的member vairable(成员变量),而o的reference并没有改变。
78.查错误
class Something { int i;
public void doSomething() { System.out.println(\ } }
有什么错呢? 看不出来啊。
答案:正确。输出的是\。int i属於instant variable (实例变量,或叫成员变量)。instant variable有default value。int的default value是0。
79.查错误
class Something {