稳固

/**

 *

 * 1如何放掉一个指定占据的内存的空间?

 *  A  调用free() 方法

 *  B  代用system.gc() 方法

 *  C  赋值给该对象的引用为null

 *  D  程序员无法明确的强制垃圾回收器运行

 * 

 *  *注解:在《java 虚拟机》一数中明确讲到,释放掉占据的内存空间是由gc完成,但程序员无法明强制运行,该空间在不被引用的时候,不一定会立即被释放,这取决于GC 本身;无法由程序员自己控制。 C 中的sysyem.gc() 函数,作用只是提醒虚拟机:程序员希望进行过一次垃圾回收,但是它不可以保证,虚拟机一定会回收,具体什么时候回收,取决于虚拟机。

 * 2hashSet子类依靠()方法来区分元素的重复?

 *   A toString equal

 *   B clone equal

 *   C hashCode equal

 *   D getClass clone

 *  

 *   *注解: hashSet 的内部使用 Map 来保存数据, hashSet的数据作为Map key 值来保存,这也是其不可以重复的原因,Map 中保存key 值之前,先判断当前的Map 中是否含有当前的key 值对象,其内部先是通过key hashCode , 确定相同的hashCode 之后,再通过equal 方法判断值是否相同。

 *         

 * 3 下列哪个数据类型是基本数据类型?

 *   A   int

 *   B  String

 *   C  Byte

 *   D  Float

 *

 *  *注解: java 语言支持的数据类型分为:基本数据类型和引用数据类型;

 *      1基本数据类型: boolean 数值类型;

 *          数值类型分为:整型和浮点型;整型: byte char , short , int,long浮点: flaot , double;

 *      2引用数据类型: 类,接口和数组;

 *    Byte Flaot  属于基本数据类型的包装类型,属于引用数据类型;

 *     一定要注意大小写!!!!!!

 *    

 *4  abstract class 和 interface 有什么区别?ABD

 *    A 抽象类可以有构造方法,接口中不可以有构造方法

 *    B 抽象类中可以有普通的成员变量,接口中不可以有普通的成员变量;

 *    C 抽象类不可以有静态方法接口中可以包含静态方法;

 *    D 一个类可以实现多个接口,但只能继承一个抽象类;

 *

 * * 注解:抽象类:

 *       1 含有abstract 修饰的类即为抽象类,抽象类不可以被直接实例化对象;

 *       2 含有abstract 方法的类必须定义为抽象类;抽象类中的方法不必是抽象的(也可能是属性是抽象的)

 *       3 抽象类定义的方法必须在其子类中实现;如果子类中存在没有实现抽象父类中的所有的抽象方法,则子类也必须定义为抽象类;

 *         接口:

 *       1 接口可以说成是抽象类的一个特例:接口中所有的方法都必须是抽象方法;其方法默认为:public abstract

 *         其所有的成员属性都默认为:public staticfinal

 *       

 *       下面比较两者的语法区别:

 *       1 抽象类可以有构造方法,接口不可以,因为接口中都是抽象的方法;

 *       2 抽象类中可以有普通的成员变量,接口没有普通的成员变量;

 *       3 抽象类中可以包含非抽象的普通的方法,接口中不可以;

 *       4 抽象类中的抽象方法的修饰符可以是 publicdefault  protected 接口中抽象方法只能是public abstract

 *       5 抽象类中可以包含静态方法,而接口中不可以包含静态方法;

 *       6 抽象类和接口中都可以包含静态的属性,抽象类中静态的属性的访问类型可以任意;而接口中的属性只能是 public static final

 *       7 一个类可以实现多个接口,但只能继承一个抽象类;

 */

 

//抽象类中的成员方法的修饰符可以是: public default  protected

abstract class Test1 {

   staticint  a = 100;

   publicabstract void Test1();

   abstractvoid Test1(int a);

   protectedabstract void Test1(char a);

   staticvoid Test2() {}   //抽象类中可以包含静态方法

   //privateabstract void Test1(String a);  error

}

 

//抽象类中的成员属性的修饰只能是: public static final (全局常量) (即便不写也是默认这样的)

//抽象类中的成员方法的修饰只能是: public abstract (即便不写,也是默认这样的)

abstract interface Test6

{

   public static final  int a = 111;

   public abstract void test();

   //static void test3(); error

   int b = 10;

   void test2();

}

 *  5 下列说法中正确的是?

 *   A class 中的constructor 不可以省略;

 *   B constructor和必须与class同名,但方法不可以与class同名;

 *   C constructor 在一个对象被new 时调用;

 *   D 一个class 只能定义一个constructor

 *

 * *注解:B 项的困惑:在java 中,方法可以与构造函数同名;在C++ 中则不可以

 */

public class Test2 {

   publicTest2()

   {

      //constructor

   }

   publicvoid Test2()

   {

      //function

   }

   publicvoid Test2(int a)

   {

      //function

   }

}

 * 7 默认的类型的等价是哪一项?

 * A  public String  name = "default"

 * B  public static name = "default"

 * C  public static final name = "default"

 * D  private String name = "default"

 *

 * 注解:在接口中:成员变量默认为: public staticfinal  成员方法默认为: public abstract

 *      接口中可以隐藏不写这些固定的修饰符,接口不可以实例化,只有子类重写了接口的所有方法,子类才可以实例化,否则子类还是一个抽象的类,接口只能被public 或者 abstract 修饰 .

 */

8

public interface Test3 {

   String name = "default";

}

public class Test4 {

   publicstatic void main(String[] args) {

       

      inti = 10;

      longl = 10;

      floatf = 10.0f;

      doubled = 10.00;

      System.out.println(d== f);

      System.err.println(f== l);

      System.err.println(l== i);

   }

}

/*

 * 注解: Java 核心卷1 43页有如下的表述:

 *  两个数值进行二元操作时,会有如下的转化操作:

 * 

 *  如果两个操作数,其中有一个是 double ,另一个操作数就会转化为double;

 * 

 *  否则,如果其中有一个操作数是float, 则另一个操作数就会转换为float;

 * 

 *  再否则,如果其中有一个操作数是long, 则另一个就会转换为long;

 * 

 *  否则,两个操作数都会转换为int

 *  举例:

 *       int= byte + byte ; ok!

 *       int= byte + short;

 *       int= short + short;

 *       int= int + int

 *      

 *      long = short + byte;

 *      long = int + long;

 *      ......

 */

 

你可能感兴趣的:(JAVA-习题)