abstract的方法是否可同时是static,是否可同时是native,是否可同时是synchronized? (1)abstract与static

     abstract:用来声明抽象方法,抽象方法没有方法体,不能被直接调用,必须在子类overriding后才能使用

     static:用来声明静态方法,静态方法可以被类及其对象调用

     static与abstract不能同时使用

      用static声明方法表明这个方法在不生成类的实例时可直接被类调用,而abstract方法不能被调用,两者矛盾。

(2)abstract与native

     native:用来声明本地方法,该方法的实现由非java 语言实现,比如C。一般用于java与外环境交互,或与操作系统交互

      native 可以与所有其它的java 标识符连用,但是abstract除外。     

      因为native 暗示这些方法是有实现体的,只不过这些实现体

      是非java 的,但是abstract却显然的指明这些方法无实现体。

(3)abstract与synchronized

      synchronized:用于防止多个线程同时调用一个对象的该方法,与static连用可防止多个线程同时调用一个类的该方法

      abstract与synchronized不能同时使用

       从synchronized的功能也可以看出,用synchronized的前提是该方法可以被直接调用,显然和abstract不能连用

作用域public,private,protected,以及不写时的区别

答:区别如下:

作用域           当前类       同一package          子孙类        其他package

public            √                √                           √               √

protected        √              √                           √               ×

friendly          √                √                           ×               ×

private           √                ×                           ×               ×

不写时默认为friendly

 

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递

答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的

什么是java序列化,如何实现java序列化?

答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

 

是否可以从一个static方法内部发出对非static方法的调用?

答:不可以,如果其中包含对象的method();不能保证对象初始化.

 

写clone()方法时,通常都有一行代码,是什么?

答:Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。

 

在JAVA中,如何跳出当前的多重嵌套循环?

答:用break; return 方法。