class A{
static int i;
String s;
static void method1() { }
void method2() { }
}
A. System.out.println(a.i);
B. a.method1();
C. A.method1();
D. A.method2()
解析:类中静态属性和方法,可以通过类名或者对象访问;非静态方法必须通过对象访问
2丶面向对象程序设计语言的三个基本特征是?( )
A. 封装、接口和多态
B. 继承、接口和动态
C. 跨平台、接口和动态
D. 封装、继承和多态
3丶哪个关键字可以对对象加互斥锁?()
A. synchronized
B. volatile
C. serialize
D. static
解析:
synchronized 关键字 : 用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这个段代码。
volatile:用来确保将变量的跟新操作通知到其他线程,当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。然而,在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比 synchronized关键字更轻量级的同步机制。
serialize:Java 对象序列化为二进制文件。
static关键字: static关键字可以修饰变量,方法,静态代码块。
静态变量:
由static修饰的变量称为静态变量
静态变量属于类,而不属于某个对象
静态变量它的副本只有一个(静态变量在类中只加载一)
静态方法:
在静态方法中只能调用静态变量和静态方法
在非静态方法中,可以调用静态方法或者变量。
在静态方法中不能使用this和super关键字。
静态代码块
作用:用来给静态成员变量初始化
4丶java语言中,按照一定格式生成程序的文档的工具是?
A. javac
B. javah
C. javadoc
D. jar
解析:
jar 将许多文件组合成一个jar文件
javac 编译
javadoc 它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。
javah 把java代码声明的JNI方法转化成C\C++头文件。 JNI可参考java核心技术卷二第12章
5丶When is the text “Hi there”displayed?
public class StaticTest
{
static
{
System.out.println(“Hi there”);
}
public void print()
{
System.out.println(“Hello”);
}
public static void main(String args[])
{
StaticTest st1 = new StaticTest();
st1.print();
StaticTest st2 = new StaticTest();
st2.print();
}
}
A. Never.
B. Each time a new object of type StaticTest is created.
C. Once when the class is loaded into the Java virtual machine.
D. Only when the main() method is executed.
解析:静态代码块随着类的加载而加载且只执行一次
6丶下面有关java内存模型的描述,说法错误的是?
A. JMM通过控制主内存与每个线程的本地内存之间的交互,来为java程序员提供内存可见性保证
B.“synchronized” — 保证在块开始时都同步主内存的值到工作内存,而块结束时将变量同步回主内存
C.“volatile” — 保证修饰后在对变量读写前都会与主内存更新。
D. 如果在一个线程构造了一个不可变对象之后(对象仅包含final字段),就可以保证了这个对象被其他线程正确的查看
解析:对于volatile修饰的变量,jvm虚拟机只是保证从主内存加载到线程工作内存的值是最新的
7丶下面有关SPRING的事务传播特性,说法错误的是?
A. PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行
B. PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就抛出异常
C. PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起
D. PROPAGATION_NESTED:支持当前事务,新增Savepoint点,与当前事务同步提交或回滚
解析:
8丶下列哪种情况可以终止当前线程的运行?
A. 当一个优先级高的线程进入就绪状态时
B. 当该线程调用sleep()方法时
C. 当创建一个新线程时
D. 抛出一个异常时
解析:程序出现异常时,捕获就不会出现终止;出现异常不捕获或者throw一个异常则会终止
9丶下面有关JAVA swing的描述,说法错误的是?
A. Swing是一个基于Java的跨平台MVC框架。使用单线程模式。
B. Swing 是为了解决 AWT 存在的问题而新开发的包,它以 AWT 为基础的
C. Swing优化了AWT,运行速度比AWT快
D. Swing是一个基于组件的框架,所有的组件都是从javax.swing.JComponent类继承来的
解析:Swing 是在AWT的基础上构建的一套新的图形界面系统,它提供了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充。AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT 的Java程序,其运行速度比较慢。
10丶下面属于java包装类的是?
A. String
B. Long
C. Character
D. Short
解析:java是面向对象的,但是java语言中的基本数据类型不是面向对象的,为了解决这个不足,就设计了相应的包装类。包装类针对的就是基本类型。
注:以上题均来自于牛客网中的java专项练习: https://www.nowcoder.com/6418438