下面有关 JAVA 异常类的描述,说法正确的有()
以下哪项不属于java类加载过程?
类的加载包括:加载,验证,准备,解析,初始化
类加载的时候会赋予初值的是类变量,而非对象成员
表达式(short)10/10.2*2运算后结果是什么类型?
java 黙认浮点类型为double
float数据类型有一个后缀为" f “或” F "
long类型有一个后缀,为" l " 或者" L "
以下代码段执行后的输出结果为
public class Test {
public static void main(String args[]) {
int x = -5;
int y = -12;
System.out.println(y % x);
}
}
使用%取余/模时,结果与被除数同符号
-7 % 3 = -7 % -3 = -1
7 % 3 = 7 % -3 = 1
rem(7, 3) = rem(7, -3) = 1
rem(-7, 3) = rem(-7, -3) = -1
mod(7, 3) = mod(-7, -3) = -1
mod(7, 3) = mod(-7, 3) = 1
以下各类中哪几个是线程安全的?( )
下列代码输出结果为( )
class Animal{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
}
public void bark(){
System.out.println("狗可以吠叫");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal();
Animal b = new Dog();
a.move();
b.move();
b.bark();
}
}
编译错误:The method bark() is undefined for the type Animal。Animal中没有定义bark()方法。
编译看左边,运行看右边。也就是是编译的时候会把它当成左边的类型,运行的时候看右边类型的方法体。
java Thread中,run方法和start方法的区别,下面说法错误的是?
start方法
run方法
有这样一段程序:
public class Test{
public static void main(String [] args){
List list=new ArrayList();
list.add("a");
list.add("b");
list.add("a");
Set set=new HashSet();
set.add("a");
set.add("b");
set.add("a");
System.out.println(list.size()+","+set.size());
}
}
请问运行主要的程序会打印出的是什么()
list有序可重复,set无序不可重复
以下代码,运行结果是什么?
public class Test {
private static int j = 0;
private static Boolean methodB(int k) {
j += k;
return true;
}
public static void methodA(int i) {
boolean b;
b = i < 10 | methodB(4);
b = i < 10 || methodB(8);
}
public static void main(String args[]) {
methodA(0);
System.out.println(j);
}
}
condition 1 | condition 2、condition 1 || condition 2
Test.main()函数执行后的输出是( )
class Test {
public static void main(String[] args) {
System.out.println(new B().getValue());
}
static class A {
protected int value;
public A (int v) {
setValue(v);
}
public void setValue(int value) {
this.value= value;
}
public int getValue() {
try {
value ++;
return value;
} finally {
this.setValue(value);
System.out.println(value);
}
}
}
static class B extends A {
public B () {
super(5);
setValue(getValue()- 3);
}
public void setValue(int value) {
super.setValue(2 * value);
}
}
}
1、执行new B()
2、执行super(5)
3、执行B.getValue()
4、执行setValue(11 - 3)
5、B.value.getValue()
关于Java中的ClassLoader下面的哪些描述是错误的:( )
以下代码运行结果是什么?
package algorithms.com.guan.javajicu;
public class Inc {
public static void main(String[] args) {
Inc inc = new Inc();
int i = 0;
inc.fermin(i);
i= i ++;
System.out.println(i);
}
void fermin(int i){
i++;
}
}
i=i++; 等同于:
temp=i; (等号右边的i)
i=i+1; (等号右边的i)
i=temp; (等号左边的i)
i=++i; 则等同于:
i=i+1;
temp=i;
i=temp;
反射最大程度破坏了面向对象的以下哪个特性?
反射机制:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性
即,反射可以访问原类的私有方法,私有成员变量,因此,反射破坏了Java的封装性
下面关于volatile的功能说法正确的是哪个
如果希望监听TCP端口9000,服务器端应该怎样创建socket?
下面有关java基本类型的默认值和取值范围,说法错误的是?
off-heap是指那种内存()
堆外内存意味着把内存对象分配在Java虚拟机的堆以外的内存,这些内存直接受操作系统管理(而不是虚拟机)
CMS垃圾回收器在那些阶段是没用用户线程参与的
关于多线程和多进程,下面描述正确的是():
根据下面的代码,
以下代码运行结果是什么?
class Value{
public int i=15;
}
public class Test{
public static void main(String argv[]){
Test t=new Test( );
t.first( );
}
public void first( ){
int i=5;
Value v=new Value( );
v.i=25;
second(v,i);
System.out.println(v.i);
}
public void second(Value v,int i){
i = 0;
v.i = 20;
Value val = new Value( );
v = val;
System.out.println(v.i+" "+i);
}
}
下列叙述中,错误的是( )
下列关于包(package)的描述,正确的是()
以下程序的运行结果是?
在Java中下面Class的声明哪些是错误的?
public abstract final class Test { abstract void method(); }
public abstract class Test { abstract final void method(); }
public abstract class Test { abstract void method() { } }
public class Test { final void method() { } }
下面哪些情况可以引发异常:
关于下面的一段代码,以下哪些说法是正确的:
public static void main(String[] args) {
String a = new String("myString");
String b = "myString";
String c = "my" + "String";
String d = c;
System.out.print(a == b);
System.out.print(a == c);
System.out.print(b == c);
System.out.print(b == d);
}
在创建派生类对象,构造函数的执行顺序()
父类静态域 ——> 子类静态域 ——> 父类成员初始化 ——> 父类构造块 ——> 父类构造方法 ——> 子类成员初始化 ——> 子类构造块 ——> 子类构造方法
以下代码执行后输出结果为( )
public class Test
{
public static Test t1 = new Test();
{
System.out.println("blockA");
}
static
{
System.out.println("blockB");
}
public static void main(String[] args)
{
Test t2 = new Test();
}
}
根据以下接口和类的定义,要使代码没有语法错误,则类Hero中应该定义方法( )
interface Action{
void fly();
}
class Hero implements Action{ //…… }
在 Java 中,存放字符串常量的对象属于( )类对象。
Character 字符封装类
String 常量池中字符串
StringBuffer 存放字符数组
Vector 数组
下面程序段执行后b的值是()。
Integer integ =new Integer(9);
boolean b = integ instanceof Object;
instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例,而Object是所有类的父类。
下面有关值类型和引用类型描述正确的是()?
值类型的变量赋值只是进行数据复制,创建一个同值的新对象,而引用类型变量赋值,仅仅是把对象的引用的指针赋值给变量,使它们共用一个内存地址。
值类型数据是在栈上分配内存空间,它的变量直接包含变量的实例,使用效率相对较高。而引用类型数据是分配在堆上,引用类型的变量通常包含一个指向实例的指针,变量通过指针来引用实例。
引用类型一般都具有继承性,但是值类型一般都是封装的,因此值类型不能作为其他任何类型的基类。
值类型变量的作用域主要是在栈上分配内存空间内,而引用类型变量作用域主要在分配的堆上。
记住
以下哪一个不是赋值符号?
>>>=
<<表示左移位
>>表示带符号右移位
>>>表示无符号右移
但是没有<<<运算符
下面不是面向对象的基本原则的是?
对于文件的描述正确的是( )
选项中哪一行代码可以替换 //add code here 而不产生编译错误
public abstract class MyClass {
public int constInt = 5;
//add code here
public void method() {
}
ServletConfig接口默认是哪里实现的?
下面代码在main()方法中第八行后可以正常使用的是( )
public class Test
{
private int a=10;
int b=20;
static int c=1;
public static void main(String arg[])
{
Test t = new Test();
}
}
有关hashMap跟hashTable的区别,说法正确的是?
Servlet的生命周期可以分为初始化阶段,运行阶段和销毁阶段三个阶段,以下过程属于初始化阶段是()
以下哪些方法可以取到http请求中的cookie值()?
1)Cookie[] getCookies()
2)Object getAttribute(String name)
3)String getHeader(String name)
4)String getParameter(String name)
下面代码的输出是什么?
public class Base
{
private String baseName = "base";
public Base()
{
callName();
}
public void callName()
{
System. out. println(baseName);
}
static class Sub extends Base
{
private String baseName = "sub";
public void callName()
{
System. out. println (baseName) ;
}
}
public static void main(String[] args)
{
Base b = new Sub();
}
}
创造Sub子类时,首先调用父类的构造方法Base();
父类的Base()内执行callName()方法,但是子类中也有callName()方法;
由于是创造子类对象,所以使用子类的callName()方法;
此时子类还未构造完全,baseName变量还未执行赋值,所以值为null
String s = new String(“xyz”);创建了几个StringObject?
String对象的两种创建方式:
第一种方式: String str1 = “aaa”; 是在常量池中获取对象(“aaa” 属于字符串字面量,因此编译时期会在常量池中创建一个字符串对象),
第二种方式: String str2 = new String(“aaa”) ; 一共会创建两个字符串对象一个在堆中,一个在常量池中(前提是常量池中还没有 “aaa” 字符串对象)。
关于下面程序,哪些描述是正确的: ( )
public class While {
public void loop() {
int x= 10;
while ( x ) {
System.out.print("x minus one is " + (x - 1));
x -= 1;
}
}
}
while()中表达式的判断,在C语言中大于0的int值都会被认为是true,而java中没有这个机制,必须是boolean类型的
以下程序的运行结果是:( )
TreeSet<Integer> set = new TreeSet<Integer>();
TreeSet<Integer> subSet = new TreeSet<Integer>();
for(int i=606;i<613;i++){
if(i%2==0){
set.add(i);
}
}
subSet = (TreeSet)set.subSet(608,true,611,true);
set.add(629);
System.out.println(set+" "+subSet);
subset(form,true,to,true)是Treeset的非静态方法,该方法返回从form元素到to元素的一个set集合,两个boolean类型是确认是否包含边境值用的
以下可以正确获取结果集的有
创建Statement是不传参的,PreparedStatement是需要传入sql语句
下面有关java的引用类型,说法正确的有?
下面哪些属于JSP内置对象及方法?
此代码片段输出正确的值是()
public class CharToString {
public static void main(String[] args)
{
char myChar = 'g';
String myStr = Character.toString(myChar);
System.out.println("String is: "+myStr);
myStr = String.valueOf(myChar);
System.out.println("String is: "+myStr);
}
}
toString和valueOf返回的都是字符串,只有char变成 int 的时候才会变为对应的ASCII码
character流和byte流的区别不包括()
字符流和字节流每次读入的字节数是不确定的,可能相同也可能不相同
Java语言中,下面哪个语句是创建数组的正确语句?( )
二维数组定义,一维长度必须定义,二维可以后续定义
以下代码可以使用的修饰符是:()
public interface Status {
/*INSERT CODE HERE*/ int MY_VALUE=10;
}
阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有()
package NowCoder;
class Test {
public static void hello() {
System.out.println("hello");
}
}
public class MyApplication {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test test=null;
test.hello();
}
}
Test test=null;也会加载静态方法,所以test中包含Test类的初始化数据(静态/构造/成员属性)
因此test.hello是会调用到hello方法的
多态的表现形式有()
继承是根源,重写是表现形式
下列叙述错误的是( )
关于异常的编程,以下描述错误的是:( )
运行异常是程序运行时由虚拟机帮助捕获,运行时异常包括数组的溢出,内存的溢出空指针,分母为0等!
J2EE中,当把来自客户机的HTTP请求委托给servlet时,会调用HttpServlet的( )方法
由HttpServlet调用service()方法,来判断调用doGET或doPOST
Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:( )
A:Class类在java.lang包下,错;
B:动态代理可以通过接口与类实现,通过反射形成新的代理类,这个代理类增强了原来类的方法。对;
C:反射可以强制访问private类型的成员,对;
D:反射并不能对类进行修改,只能对类进行访问,错;
E:反射机制对永生堆要求较多,对;
F:即使使用换成,反射的效率也比调用类的方法低,错;
java程序内存泄露的最直接表现是( )
java是自动管理内存的,通常情况下程序运行到稳定状态,内存大小也达到一个 基本稳定的值
但是内存泄露导致Gc不能回收泄露的垃圾,内存不断变大.
最终超出内存界限,抛出OutOfMemoryExpection
以下代码执行的结果显示是多少()?
public class Demo{
public static void main(String args[]){
int count = 0;
int num = 0;
for(int i = 0; i <= 100; i++){
num = num + i;
count = count++;
}
System.out.println("num * count = " + (num * count));
}
}
count = count++ 原理是 temp = count; count = count+1 ; count = temp;
因此count始终是0 这仅限于java 与c是不一样的
以下哪些内存区域属于JVM规范?( )
**
有以下代码片段:
请问输出的结果是:**
String str1="hello";
String str2="he"+ new String("llo");
System.out.println(str1==str2);
用+拼接字符串时会创建一个新对象再返回
在Web应用程序中,( )负责将HTTP请求转换为HttpServletRequest对象
web容器是一种服务程序,而这个程序就是处理从客户端发出的请求
servlet是运行在服务器端的小应用程序,是接收网络服务的请求和产生响应的一种方式
servlet的功能:接受http请求,产生动态http响应
下面有关Java的说法正确的是( )
被abstract修饰的类就是抽象类,有没有抽象方法无所谓
子类继承父类,并重写父类的protected成员方法,该方法的可见性可以修改,这是对的,因为子类继承父类的方法,访问权限可以相同或往大了改
关于ThreadLocal类 以下说法正确的是
ThreadLocal继承Object,相当于没继承任何特殊的
ThreadLocal没有实现任何接口
ThreadLocal并不是一个Thread,而是Thread的局部变量
jvm中垃圾回收分为scanvenge gc和full GC,其中full GC触发的条件可能有哪些
下列哪些方法是针对循环优化进行的
常见的代码优化技术有:复写传播,删除死代码, 强度削弱,归纳变量删除
编译原理之代码优化
Hashtable 和 HashMap 的区别是:
下面有关java threadlocal说法正确的有?
无
下列哪个选项是Java调试器?
javac.exe是编译.java文件
java.exe是执行编译好的.class文件
javadoc.exe是生成Java说明文档
jdb.exe是Java调试器
javaprof.exe是剖析工具
下面为true的是
Integer i = 42;
Long l = 42l;
Double d = 42.0;
包装类的“==”运算在不遇到算术运算的情况下不会自动拆箱
包装类的equals()方法不处理数据转型
关于Float,下列说法错误的是()
Float是类,float不是类
查看JDK源码就可以发现Byte,Character,Short,Integer,Long,Float,Double,Boolean都在java.lang包中
Float正确复制方式是Float f=1.0f,若不加f会被识别成double型,double无法向float隐式转换
Float a= new Float(1.0)是正确的赋值方法,但是在1.5及以上版本引入自动装箱拆箱后,会提示这是不必要的装箱的警告,通常直接使用Float f=1.0f.
关于抽象类与接口,下列说法正确的有?
1. 一个子类只能继承一个抽象类,但能实现多个接口
2. 抽象类可以有构造方法,接口没有构造方法
3. 抽象类可以有普通成员变量,接口没有普通成员变量
4. 抽象类和接口都可有静态成员变量,抽象类中静态成员变量访问类型任意,接口只能public static final(默认)
5. 抽象类可以没有抽象方法,抽象类可以有普通方法,接口中都是抽象方法
6. 抽象类可以有静态方法,接口不能有静态方法
7. 抽象类中的方法可以是public、protected;接口方法只有public
以下代码返回值是什么?
public boolean returnTest()
{
try {
return true;
} catch (Exception e) {
} finally {
return false;
}
}
一旦在finally块中使用了return或throw语句,将会导致try块,catch块中的return,throw语句失效
在使用super和this关键字时,以下描述错误的是()
以下程序的输出结果为
class Base{
public Base(String s){
System.out.print("B");
}
}
public class Derived extends Base{
public Derived (String s) {
System.out.print("D");
}
public static void main(String[] args){
new Derived("C");
}
}
子类的构造方法会隐式去调用 父类无参的构造方法(不会在代码中显示)
如果父类没有无参的构造方法,就必须在子类构造方法第一行显示调用父类的有参构造方法
否则编译失败
以下哪个不属于JVM堆内存中的区域()?
list是一个ArrayList的对象,代码填到//todo delete处,可以在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?()
Iterator it = list.iterator();
int index = 0;
while (it.hasNext())
{
Object obj = it.next();
if (needDelete(obj)) //needDelete返回boolean,决定是否要删除
{
//todo delete
}
index ++;
}
下列代码片段中,存在编译错误的语句是()
byte b1=1,b2=2,b3,b6,b8;
final byte b4=4,b5=6,b7;
b3=(b1+b2); /*语句1*/
b6=b4+b5; /*语句2*/
b8=(b1+b4); /*语句3*/
b7=(b2+b5); /*语句4*/
System.out.println(b3+b6);
以下代码返回结果为:
Integer a = 1;
Integer b = 1;
Integer c = 500;
Integer d = 500;
System.out.print(a == b);
System.out.print(c == d);
设 a 是 A 类同一个包下的一个实例,下列语句调用哪个是错误的?()
class A{
int i;
static String s;
void method1() { }
static void method2() { }
}
非静态方法只能通过实例对象来调用,不能直接通过类名调用
静态方法(static)才能通过类名直接调用
下面关于静态方法说明正确的是
静态方法中不能用this.实例方法,因为此时对象还没有
静态方法中,可以调用其他类的静态方法
静态方法中可以调用实例方法,但是必须要new一个对象
Java与C++的区别