Java回收机制 和 类的修饰符

来源:互联网 发布:linux 无故宕机 编辑:程序博客网 时间:2024/06/04 01:22

1.下列选项正确的是()
public class Test1 {

public static void main(String[] args) {    int i = 5;     int j = 10;    int k = -100;    System.out.println(~i); //-6    System.out.println(~j); //-11    System.out.println(i+~j); //-6*******    System.out.println(~k);  // 99}

}
A -5
B -6
C 15
D 14

注解:计算机使用补码来存储数据:补码=反码+1
负数是怎么存2进制的,就是将其正数部分取反后+1。那么,我们逆推回去,由负数(标志位是1,即首位是1)减去1,然后再取反,是不是就得到了负数的正数部分?
5=00000101(B)
对5取 ~5 = 11111010(B)
然后减去1 = 11111001(B)
然后取反 = 00000110(B) = 6(D) 这就是结果的正数部分
你算一下最后的结果11111010(B)的正数部分是不是6呢?所以~5=-6 **(五颗星)
总结: 正数取反规则: 先+1,再取反;
负数取反规则: 先+1 ,再取反;

2 如下的例子,下列正确的()
public class Test2 {
private static int i = 100;

public static void main(String[] args) {    Test2 test2 = new Test2();    test2.i++;   //通过对象直接调用私有属性    Test2 test22 = new Test2();    Test2.i++;    //通过类直接调用私有属性    Test2 test23 = new Test2();    Test2.i--;    System.out.println("i"+"=" + i);}

}
A i = 102;
B i = 103;
C test2.i++ 编译不通过;
D Test2.i++ 编译不通过;
* 注解:因为main函数是在自身的类中,其可以看成是自身类的一种方法,故根据类的定义,同一个类的方法可以访问自身的所有属性,其次,只要是静态的方法和属性,都可以通过类名和对象来调用,因为静态方法不依赖对象,当然也可以通过对象来调用。

3 派生类的对象对其基类中的() 可直接访问?
A 公有继承的共有成员
B 公有继承的私有成员
C 公有集成的保护成员
D 私有继承的共有成员

注解: A 公有成员可以被派生类继承,派生类对象可以直接访问共有继承的共有成员;
B 私有成员成员不可以被派生类继承,故没有访问一说;
C 保护成员可以被派生类继承,但不可以直接访问,可以被类的方法访问;即就是可以间接访问
D 私有继承的公有成员可以被派生类继承,但是其会变成派生类的私有成员,也不可以北直接访问

4 关于Java的回收机制,说法正确的是()
* A 程序员可以任意指定回收内存的时间
* B Java 程序不能依赖垃圾回收的时间或者顺序
* C 程序可以明确的标识某个局部变量的额引用不再使用
* D 程序可以显示立即释放对象占有的内存
注解: Java 提供了一个系统级别的线程,即垃圾回收器线程, 用来对每一个分配出去的内存空间进行跟踪, 当JVM 空闲的时候,自动回收每一块可能被回收的内存, gc是完全自动的, 不可以被强制执行, 程序员最多只能用System.gc() 来建议垃圾回收器回收某一块内存,具体的回收时间是不可预知的。

5 在类的设计中,类的成员变量要求仅仅能够被同一类的包裹下的类访问, 应该使用哪个修饰符()
A public
B protected
C default
D private

注解: 作用的范围由大到小:public protected default private
public 修饰的成员变量,可以被同一包裹下不同类使用,可以被不同包裹使用;
protected 修饰的成员变量,只可以被‘继承的子类’使用, 无论是同一包裹还是不同的包裹;
default 修饰的成员变量,只可以被同一包裹的类使用;
private 修饰的成员变量, 只可以在自身的类中使用。

0 0
原创粉丝点击