欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

有意思的Java题目

程序员文章站 2022-03-12 16:05:12
...

instanceof关键字的作用

instanceof 严格来说是 Java 中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:
boolean result = obj instanceof Class
其中 obj 为一个对象, Class 表示一个类或者一个接口,当 obj Class 的对象,或者是其直接或 间接子类,或者是其接口的实现类,结果result 都返回 true ,否则返回 false 。 注意:编译器会检查 obj 是否能转换成右边的 class 类型,如果不能转换则直接报错,如果不能确定 类型,则通过编译,具体看运行时定。
inti=0; 
System.out.println(i instanceof Integer);//编译不通过i必须是引用类型,不能是基本类型 System.out.println(i instanceof Object);//编译不通过 
Integer integer=newInteger(1); 
System.out.println(integer instanceof Integer);//true 
System.out.println(null instanceof Object); //false,在JavaSE规范中对instanceof运算符的规定就是:如果obj为null,那么将返回false。

Java创建对象有几种方式?

java 中提供了以下四种创建对象的方式 :
  1. 1. new创建新对象
  2. 2. 通过反射机制
  3. 3. 采用clone机制
  4. 4. 通过序列化机制

a=a+ba+=b有什么区别吗

+= 操作符会进行隐式自动类型转换 , 此处 a+=b 隐式的将加操作的结果类型强制转换为持有结果的类型 , a=a+b 则不会自动进行类型转换。 如:
byte a = 127; 
byte b = 127; 
b = a + b; // 报编译错误:cannot convert from int to byte b += a;
以下代码是否有错 , 有的话怎么改?
short s1= 1; 
s1 = s1 + 1;
有错误 .short 类型在进行运算时会自动提升为 int 类型 , 也就是说 s1+1 的运算结果是 int 类型 , s1 short 类型,此时编译器会报错。正确写法:
short s1= 1; 
s1 += 1;
//相当于 s1 = (short)(s1 + 1);其中有隐含的强制类型转换。
+= 操作符会对右边的表达式结果强转匹配左边的数据类型 , 所以没错。

 fifinalfifinalize()fifinally

  1. fifinal为用于标识常量的关键字,fifinal标识的关键字存储在常量池中(在这里fifinal常量的具体用法将在下面进行介绍);
  2. fifinalize()方法在Object中进行了定义,用于在对象消失时,由JVM进行调用用于对对象进行垃圾回收,类似于C++中的析构函数;用 户自定义时,用于释放对象占用的资源(比如进行I/0操作);
  3. fifinally{}用于标识代码块,与try{}进行配合,不论try中的代码执行完或没有执行完(这里指有异常),该代码块之中的程序必定会进行;
Java 有没有 goto :Java中的保留字,现在没有在 java 中使用

用最有效率的方法算出 2 乘以 8等於几:2 << 3

排序都有哪几种方法? 

  1. 插入排序(直接插入排序、希尔排序),
  2. 交换排序(冒泡排序、快速排序),
  3. 选择排序(直接选择排序、堆排序),
  4. 归并排 序,分配排序(箱排序、基数排序)

构造器(constructor)是否可被重写(override)?构造器不能被继承,因此不能被重写,但可以被重载。 

 char 型变量中能不能存贮一个中文汉字,为什么? char 类型可以存储一个中文汉字,因为 Java 中使用的编码是 Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统 一的唯一方法),一个 char 类型占 2 个字节(16 比特),所以放一个中文是没问题的。

Java 中会存在内存泄漏吗?请简单描述。 例如 Hibernate Session (一级缓存)中的对象属于持久态,垃圾回收器是不会回收这些对象的,然而这些对象中可能存在无 用的垃圾对象 ,如果不及时关闭( close )或清空( flflush )一级缓存就可能导致内存泄露 。

抽象的( abstract )方法是否可同时是静态的( static , 是否可同时是本地方法 native ),是否可同时被 synchronized修饰? 都不能。抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。本地方法是由本地代码(如 C 代码)实现的方法,而 抽象方法是没有实现的,也是矛盾的。synchronized 和方法的实现细节有关,抽象方法不涉及实现细节,因此也是相互矛盾的。
19页