错题

1.下面有关java classloader说法错误的是?

正确答案: C   你的答案: C (正确)

Java默认提供的三个ClassLoader是BootStrap ClassLoader,Extension ClassLoader,App ClassLoader
ClassLoader使用的是双亲委托模型来搜索类的
JVM在判定两个class是否相同时,只用判断类名相同即可,和类加载器无关
ClassLoader就是用来动态加载class文件到内存当中用的
一个jvm中默认的classloader有Bootstrap ClassLoader、Extension ClassLoader、App ClassLoader,分别各司其职:

  • Bootstrap ClassLoader     负责加载java基础类,主要是 %JRE_HOME/lib/ 目录下的rt.jar、resources.jar、charsets.jar和class等
  • Extension ClassLoader      负责加载java扩展类,主要是 %JRE_HOME/lib/ext 目录下的jar和class
  • App ClassLoader           负责加载当前java应用的classpath中的所有类。
classloader 加载类用的是全盘负责委托机制。   所谓全盘负责,即是当一个classloader加载一个Class的时候,这个Class所依赖的和引用的所有 Class也由这个classloader负责载入,除非是显式的使用另外一个classloader载入。  

所以,当我们自定义的classlo ader加载成功了 com.company.MyClass以后,MyClass里所有依赖的class都由这个classLoader来加载完成。


2.哪个关键字可以对对象加互斥锁?()

正确答案: A   你的答案: B (错误)

synchronized
volatile
serialize
static
A:
synchronized  关键字  :  用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这个段代码。
volatile:用来确保将变量的跟新操作通知到其他线程,当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。然而,在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比 synchronized 关键字更轻量级的同步机制。
serialize:Java 对象序列化为二进制文件。
static关键字: static关键字可以修饰变量,方法,静态代码块。
                          静态变量:
                                          由static修饰的变量称为静态变量
                                          静态变量属于类,而不属于某个对象
                                          静态变量它的副本只有一个(静态变量在类中只加载一)
                         静态方法:
                                          在静态方法中只能调用静态变量和静态方法
                                          在非静态方法中,可以调用静态方法或者变量。
                                          在静态方法中不能使用this和super关键字。
                        静态代码块
                                          作用:用来给静态成员变量初始化


3.JAVA中,下列语句哪一个正确
正确答案: C   你的答案: B C  (错误)
class中的constructor不可省略
constructor必须与class同名,但方法不能与class同名
constructor在一个对象被new时执行
一个class只能定义一个constructor
类中有缺省构造器,不一定要定义构造器
方法可以和类同名,和构造器区别在于必须要有返回值类型
一个类可以定义多个参数列表不同的构造器,实现构造器重载


4.经过强制类型转换以后,变量a, b的值分别为( )short a = 128; byte b = (byte) a;

正确答案: B   你的答案: A (错误)

128  127
128  -128
128  128
编译错误
1、Java中用补码形式表示
2、第一位正负位,1表示负,0表示正。
3、原码:一个数的二进制表示。
                 3的原码00000011   -3的 原码 10000011
4、反码:负数原码按位取反(符号位不变)。正数原码本身。
                3的反码00000011   -3的反码11111100
5、补码:正数是原码本身。负数反码加1。
                 3的补码是00000011  -3的补码是11111101
-------------------------------------------------------------------------------
int占4个字节,32位
byte占1个字节,8位
所以强转时会截断。前24位
---------------------------------------------------------------------------
在内存中表示形式( 注意java中是以补码表示一个数,所以表示形式是补码,不是原码! ):
int a = 3         00000000  00000000  00000000 00000011 (强转byte时前面24个0被截断)
byte b = 3      00000011
int a = -3       11111111  11111111   11111111   11111101 (强转byte时前面24个1被截断)
byte b = -3     11111101
----------------------------------------------------------------------------
已知负数的补码,求负数:
补码-1=反码,反码按位取反=该负数绝对值
已知负数,求负数的补码:
1、负数原码除了符号位,按位取反(不含符号位),加1。
2、负数绝对值的补码(也就是原码),按位取反(含符号位),加1
-------------------------------------------------------------------------------
例子:
java int 128转为byte,值:
128为正数,补码为10000000(前面24个0省略),变成byte,只剩下10000000(byte为1个字节),因为开头是1,所以为负数。即1个负数的补码是10000000。反码是01111111,原码是1000000。是128.因为是负数,所以是-128。

5.Which are keywords in Java?

正确答案: D E   你的答案: A B D (错误)

null
true
sizeof
implements
instanceof
   java中true ,false , null在java中不是关键字,也不是保留字,它们只是显式常量值,但是你在程序中不能使用它们作为标识符。
其中const和goto是java的保留字。java中所有的关键字都是小写的,还有要注意true,false,null, friendly,sizeof不是java的关键字,但是你不能把它们作为java标识符用


6.下列正确的有( )

正确答案: A C D   你的答案: A B (错误)

call by value不会改变实际参数的数值
call by reference能改变实际参数的参考地址
call by reference不能改变实际参数的参考地址
call by reference能改变实际参数的内容
引用数据类型是引用传递(call by reference),基本数据类型是值传递(call by value)
值传递不可以改变原变量的内容和地址---》原因是java方法的形参传递都是传递原变量的副本,在方法中改变的是副本的值,而不适合原变量的
引用传递不可以改变原变量的地址,但可以改变原变量的内容---》原因是当副本的引用改变时,原变量 的引用并没有发生变化,当副本改变内容时,由于副本引用指向的是原变量的地址空间,所以,原变量的内容发生变化。

结论:1.值传递不可以改变原变量的内容和地址;
           2.引用传递不可以改变原变量的地址,但可以改变原变量的内容;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值