下面哪个选项是main方法的返回类型?
A.int
B.void
C.Boolean
D.static
答案解析: public static void main(String args[])
下列关于Java中类的构造方法的描述,正确的是()
A.构造方法的返回类型为void
B.可以定义一个类而在代码中不写构造方法。
C.在同一个类中定义的重载构造方法不可以相互调用。
D.子类不允许调用父类的构造方法。
答案解析:
A、构造器没有返回值,这个没有返回值和返回值为void可部一样。
B、每个类在没有自己显式声明构造器的时候,都会有一个默认的无参构造。
C、构造器可以重载,而且可以使用super()、this()相互调用
D、每个构造器的默认第一行都是super(),但是一旦父类中没有无参构造,必须在子类的第一行显式的声明调用哪一个构造。
已知如下的命令执行 java MyTest a b c 请问哪个语句是正确的? ( )
A.args[0] = "MyTest a b c"
B.args[0] = "MyTest"
C.args[0] = "a"
D.args[1]= "b"
答案解析::对于java命令,类名后面跟着的就是main函数的参数,多个参数则用空格隔开。 main方法的形参是一个string数组所以对于java mytest a b c传入的参数算是一个string数组。 即args[0]=a args[1]=b args[2]=c
.
Java类Demo中存在方法func1、func2、func3和func4,请问该方法中,哪些是不合法的定义?( )
public class Demo{
float func1()
{
int i=1;
return;
}
float func2()
{
short i=2;
return i;
}
float func3()
{
long i=3;
return i;
}
float func4()
{
double i=4;
return i;
}
}
A.func1
B.func2
C.func3
D.func4
答案解析:
考的是数据类型转换问题。由大到小需要强制转换,由小到大不需要。
A:return; 没有返回值,错误
B:short → float 无须强制转换,正确
C:long → float 无须强制转换(这个最选项容易出错),正确。
float占4个字节为什么比long占8个字节大呢,因为底层的实现方式不同。
浮点数的32位并不是简单直接表示大小,而是按照一定标准分配的。
第1位,符号位,即S
接下来8位,指数域,即E。
剩下23位,小数域,即M,取值范围为[1 ,2 ) 或[0 , 1)
然后按照公式: V=(-1)^s * M * 2^E
也就是说浮点数在内存中的32位不是简单地转换为十进制,而是通过公式来计算而来,通过这个公式虽然,只有4个字节,但浮点数最大值要比长整型的范围要大。
D:double → float 没有强制转换,错误。
一个以”.java”为后缀的源文件
A.只能包含一个类,类名必须与文件名相同
B.只能包含与文件名相同的类以及其中的内部类
C.只能有一个与文件名相同的类,可以包含其他类
D.可以包含任意类
答案解析:.java文件只能有一个类是与文件名相同,而包含的其他类不能与之相同,还需注意的是一个.java文件最多有一个public修饰的类。这里要与.class文件分开,一个.class文件有且只有一个类编译后.class
abstract和final可以同时作为一个类的修饰符。( )
A.正确
B.错误
答案解析:abstract修饰一个类,这个类肯定可以被继承,但是final类是不能继承的,所以有矛盾,肯定不能同时用
以下 _____ 不是 Object 类的方法
A.clone()
B.finalize()
C.toString()
D.hasNext()
答案解析:又考这种题了,所以还是需要记一下的。
下列哪种情况可以终止当前线程的运行?
A.当一个优先级高的线程进入就绪状态时
B.当该线程调用sleep()方法时
C.当创建一个新线程时
D.抛出一个异常时
答案解析:当一个优先级高的线程进入就绪状态时 (并不会立即执行,等待时间片轮到的时候才会执行)当该线程调用sleep()方法时 (阻塞当前线程,直到阻塞时间达到,重新进入就绪队列。阻塞不是终止包括wait()也一样)当创建一个新线程时 (同A选项一样,进入就绪队列,等待时间片轮到)。
有关hashMap跟hashtable的区别,说法正确的是?
A.HashMap和Hashtable都实现了Map接口
B.HashMap是非synchronized,而Hashtable是synchronized
C.HashTable使用Enumeration,HashMap使用Iterator
D.HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。
答案解析:这俩经常一起考要记住区别。
关于下面代码 int[] x=new int[25]; 描述正确的是()
A.x[25]存放了数据“\0”。
B.x[24] 存放了数据“\0”。
C.若访问x[25],程序将抛出异常。
D.x[1]访问此数组的第一个元素。
答案解析:java没有“/0”。下标从0到max-1。
以下哪个不是Collection的子接口?
A.List
B.Set
C.SortedSet
D.Map
答案解析:map自己是顶级接口。
Map
接口有以下几个实现:
-
HashMap:基于哈希表的 Map 接口实现,它允许空键和空值。HashMap 不保证映射的顺序,但在大多数实现中,其迭代顺序是无序的。
-
LinkedHashMap:类似于 HashMap,但它维护了一个双向链表,可以按照插入顺序或访问顺序来遍历键值对。
-
TreeMap:基于红黑树的 Map 接口实现,可以按照键的自然顺序或自定义顺序对键进行排序。
-
Hashtable:与 HashMap 类似,但它是线程安全的,不允许空键和空值。
-
ConcurrentHashMap:提供了更好的并发性能的 HashMap 实现,适用于需要高并发处理的场景。
@SuppressWarnings(“deprecation”)的功能是什么?
A.屏蔽不赞同使用的类和方法的警告
B.屏蔽在强制类型转换的时候编译器给出的警告
C.关闭所有警告信息
D.当在可序列化的类上缺少serialVersionUID定义的警告
答案解析:
1.Java三大注解分别是@Override @Deprecated @Suppresswarnings
2.@Override 注解表名子类中覆盖了超类中的某个方法,如果写错了覆盖形式,编译器会报错
3.@Deprecated 表明不希望别人在以后使用这个类,方法,变量等等
4.@Suppresswarnings 达到抑制编译器产生警告的目的,但是不建议使用,因为后期编码人员看不懂编译器提示的警告,不能更好的选择更好的类去完成任务。
关于 Socket 通信编程,以下描述正确的是:( )
A.客户端通过new ServerSocket()创建TCP连接对象
B.客户端通过TCP连接对象调用accept()方法创建通信的Socket对象
C.客户端通过new Socket()方法创建通信的Socket对象
D.服务器端通过new ServerSocket()创建通信的Socket对象
答案解析:
客户端: new Socket (主机名,端口号);
服务端:new ServerSocket(端口号);
服务端调用accet()之后才创建Socket对象;
以下哪个类型是基本数据类型()
A.int
B.String
C.Byte
D.Float
答案解析:除了8个基本类型,其他都是引用类,注意java是强区分大小写。
在程序代码中写的注释太多,会使编译后的程序尺寸变大。
A.正确
B.错误
答案解析:
javadoc 用来识别注释
javac 用来识别代码
二者互不影响
关于Java中参数传递的说法,哪个是错误的?
A.在方法中,修改一个基础类型的参数不会影响原始参数值
B.在方法中,改变一个对象参数的引用不会影响到原始引用
C.在方法中,修改一个对象的属性会影响原始对象参数
D.在方法中,修改集合和Maps的元素不会影响原始集合参数
答案解析:首先java只有值传递。然后除了基本数据类型是传值,其他都是传引用,所以修改会影响数据。修改引用当然不会影响原数据。
在创建派生类对象,构造函数的执行顺序()
A.基类构造函数,派生类对象成员构造函数,派生类本身的构造函数
B.派生类本身的构造函数,基类构造函数,对象成员构造函数
C.基类构造函数,派生类本身的构造函数,派生类对象成员构造函数
D.对象成员构造函数,基类构造函数,派生类本身的构造函数
答案解析:1.基类:就是父类,派生类:就是子类。 2.首先:父类优先子类,静态优先非静态。对象成员构造函数就是非静态的代码块。
记忆:先造出了你爸(基类构造函数)才生出了你,你的手、脚(派生类对象成员构造函数)先构造了才组成你(派生类本身的构造函数)
下面几个关于Java里queue的说法哪些是正确的()?
A.LinkedBlockingQueue是一个可选有界队列,不允许null值
B.PriorityQueue,LinkedBlockingQueue都是线程不安全的
C.PriorityQueue是一个无界队列,不允许null值,入队和出队的时间复杂度是O(log(n))
D.PriorityQueue,ConcurrentLinkedQueue都遵循FIFO原则
答案解析:
- LinkedBlockingQueue:可选有界的线程安全阻塞队列,允许
null
值,实现 FIFO。 - PriorityQueue:无界(或有界)的线程不安全优先队列,不允许
null
值,基于优先级堆实现。 - ConcurrentLinkedQueue:无界的线程安全非阻塞队列,遵循 FIFO 原则。
如果希望某个变量只可以被类本身访问和调用,则应该使用下列哪一种访问控制修饰? A.public B.private C.private protected D.protected
答案解析:
-
以下选项中循环结构合法的是:
A.while(int i<7){i++;System.out.println("i is "+i);}
B.int j=3;while(j){ System.out.println("j is "+j);}
C.int j=0;for(int k=0;j+k!=10;j++,k++){System.out.println("j is "+j+"k is" +k);}
D.int j=0; do{System.out.println("j is "+j++);if(j==3){continue loop;}}while(j<10);
答案解析:ava中的while()括号种为boolean类型,应该如j==3,j>1之类才行。
public class IfTest{
public static void main(String[]args){
int x=3;
int y=1;
if(x=y)
System.out.println("Not equal");
else
System.out.println("Equal");
}
}
下面结果输出是?
A.The output is “Equal”
B.The output in “Not Equal”
C.An error at line 5 causes compilation to fall.
D.The program executes but does not print a message.
答案解析:考验眼神吧(=和==得看清),java的if()里必须是布尔类型。
将下列(A、B、C、D)哪个代码替换下列程序中的【代码】不会导致编译错误?
interface Com{
int M=200;
int f();
}
class ImpCom implements Com{
【代码】
}
A.public int f(){return 100+M;}
B.int f(){return 100;}
C.public double f(){return 2.6;}
D.public abstract int f();
答案解析:
1、必须实现接口中所有的方法。
在实现类中实现接口时,方法的名字、返回值类型、参数的个数及类型必须与接口中的完全一致,并且必须实现接口中的所有方法。
2、接口实现类相当于子类,子类的访问权限是不能比父类小的。
接口中所有方法默认都是public,至于为什么要是public,原因在于如果不是public,那么只能在同个包下被实现,可访问权限就降低很多了,那么在实现类中,实现的类相当于子类,子类的访问权限是不能比父类小的,而在java中一个类如果没有权限的修饰符,默认是friendly(同一个包内的其它类才可访问),所以在实现类中一定要写public
关于中间件特点的描述.不正确的是()
A.中间件运行于客户机/服务器的操作系统内核中,提高内核运行效率
B.中间件应支持标准的协议和接口
C.中间件可运行于多种硬件和操作系统平台上
D.跨越网络,硬件,操作系统平台的应用或服务可通过中间件透明交互
答案解析:中间件位于操作系统之上,应用软件之下,而不是操作系统内核中
下列对接口的说法,正确的是( )
A.接口与抽象类是相同的概念
B.若要实现一个接口为普通类则必须实现接口的所有抽象方法
C.接口之间不能有继承关系
D.一个类只能实现一个接口
答案解析:java8中接口可以有默认和静态方法,实现接口的类不一定要实现他们,但选项是说抽象方法,抽象方法还是必须实现的。
下面有关servlet中init,service,destroy方法描述错误的是?
A.init()方法是servlet生命的起点。一旦加载了某个servlet,服务器将立即调用它的init()方法
B.service()方法处理客户机发出的所有请求
C.destroy()方法标志servlet生命周期的结束
D.servlet在多线程下使用了同步机制,因此,在并发编程下servlet是线程安全的
答案解析:servlet 对象在 tomcat 服务器是单实例多线程的。 因为 servlet 是多线程的,所以当多个 servlet 的线程同时访问了 servlet 的共享数据,如成员变量,可能会引发线程安全问题。
Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。
init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。
service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。
destroy(): 仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。
下面哪个不属于HttpServletResponse接口完成的功能?
A.设置HTTP头标
B.设置cookie
C.读取路径信息
D.输出返回数据
答案解析:
A:设置HTTP头标
response.setHeader("Refresh","3"); //三秒刷新页面一次
B:设置cookie
Cookie c1 = new Cookie("username","only"); response.addCookie(c1);
C(错误):读取路径信息,request读取路径信息
从request获取各种路径总结 request.getRealPath("url"); // 虚拟目录映射为实际目录 request.getRealPath("./"); // 网页所在的目录 request.getRealPath("../"); // 网页所在目录的上一层目录 request.getContextPath(); // 应用的web目录的名称
D:输出返回数据
HttpServleteResponse.getOutputStream().write();
下面说法正确的是?()
A.调用Thread的sleep()方法会释放锁,调用wait()方法不释放锁
B.一个线程调用yield方法,可以使具有相同优先级线程获得处理器
C.在Java中,高优先级的可运行的线程会抢占低优先级线程的资源
D.java中,线程可以调用yield方法使比自己低优先级的线程运行
答案解析:这四个方法的区别经常考。
sleep()会抱着锁睡觉,wait会把锁释放
yield()让有相同优先级的线程之间能够适当的轮换执行
下列说法错误的有( )
A.在类方法中可用this来调用本类的类方法
B.在类方法中调用本类的类方法时可直接调用
C.在类方法中只能调用本类中的类方法
D.在类方法中绝对不能调用实例方法
答案解析:类方法:使用static修饰,属于整个类的,不是属于某个实例的,只能处理static域或调用static方法; 实例方法:属于对象的方法,由对象来调用。 一个类中的方法可以互相调用。但要注意:实例方法可以调用该类中的其他方法。 类方法只能调用其他类方法,不能调用实例方法。 当类文件加载到内存时,实例方法不会被分配内存空间,只有在对象创建之后才会分配。而类方法在该类被加载到内存时就分配了相应的内存空间。 实例方法既能对类变量操作也能对实例变量操作。类方法只能访问其他static方法。类方法只能访问其他static数据,例如,类变量。
题目问是的基本都是单选,问有的基本都是多选,一直忘了标单多选了我的错。