下列表述错误的是?()
final不能修饰接口
下面这三条语句输出结果:
System.out.println("is"+ (100 + 5));
System.out.println(100 + 5 + "is");
System.out.println("is"+ (100 + 5));
在java中,“+” 和 “+=” 是经过重载的运算符,而java不允许程序员进行运算符的重载。
如果 “+” 之前是String,那么此时,“+” 的作用就是连接两个字符串;若此时 “+” 后面是基本数据类型的话,可以直接进行连接,若是引用数据类型的话,则会调用该对象的toString()方法。
要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以( )
default和protected的区别是:前者只要是外部包,就不允许访问;后者只要是子类就允许访问,即使子类位于外部包。
总结:default拒绝一切包外访问;protected接受包外的子类访问
以下描述错误的一项是( )?
方法区和堆内存是线程共享的;程序计数器、虚拟机栈是线程隔离的
假设如下代码中,若t1线程在t2线程启动之前已经完成启动。代码的输出是()
执行obj.wait();时已释放了锁,所以t2可以再次获得锁,然后发消息通知t1执行,但这时t2还没有释放锁,所以肯定是执行t2,然后释放锁,之后t1才有机会执行。
下面关于垃圾收集的描述哪个是错误的?
java的垃圾收集机制主要针对新生代和老年代的内存进行回收,不同的垃圾收集算法针对不同的区域;也会有内存泄露问题,例如访问资源文件,流不关闭,访问数据库等连接不关闭。
下面有关Java的说法正确的是( )
有关静态初始化块说法正确的是?
在开发中使用泛型取代非泛型的数据类型(比如用ArrayList取代ArrayList),程序的运行时性能会变得更好。()
使用泛型的好处:类型安全、消除强制类型转换、潜在的性能收益,所以泛型只是提高了数据传输安全性,并没有改变程序运行的性能;
泛型仅仅是java的语法糖,它不会影响java虚拟机生成的汇编代码,在编译阶段,虚拟机就会把泛型的类型擦除,还原成没有泛型的代码,顶多编译速度稍微慢一些,执行速度是完全没有什么区别的
映射 (Map) 的key和value都不可重复。( )
Map接口有两个经典的子类分别是 Hashtable 和 Hashmap。
Hashtable 线程安全,不支持key和value为空,key不能重复,但value可以重复,不支持key和value为null;
Hashmap 非线程安全,支持key和value为空,key不能重复,但value可以重复,支持key和value为null。
以下是java concurrent包下的4个类,选出差别最大的一个
Semaphore:类,控制某个资源可被同时访问的个数;
ReentrantLock:类,具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大;
CountDownLatch: 类,可以用来在一个线程中等待多个线程完成任务的类;
Future:接口,表示异步计算的结果。
对 Map 的用法,正确的有:
JVM内存不包含如下哪个部分( )
由于arr[0] =0,所以在进入 test()方法里面会在第一个if 上抛出一个 NullPointerException,
接着会执行 finally 的语句, (finally语句先于 return 和 throw语句执行),输出一个’e,
然后回到 main方法中,由于捕捉到异常,所以进入到catch语句中,然后打印一个’E’,
所以最终结果为"eE"
java8中,下面哪个类用到了解决哈希冲突的开放定址法
threadlocalmap使用开放定址法解决haah冲突,hashmap使用链地址法解决hash冲突
下面关于Spring的说法中错误的是()
Spring并没有为我们提供日志系统,我们需要使用AOP(面向方面编程)的方式,借助Spring与日志系统log4j实现我们自己的日志系统
以下哪个没有实现java.util.Map接口
A,B,D都实现了Map接口,其中A与B的区别是一个是线程安全的,一个是线程不安全的;C中Vector是实现了List接口,是一个线程安全的List
在第16行插入哪段代码可以获得一个Point对象的坐标?( )
类Point定义在类Line中,类Line中有类Point的方法getPoint(),外部类Triangle要实现获取类Line中的内部类,需要:外部类名.内部类名 对象名 = new 外部类名().new 内部类名();
java中Hashtable, Vector, TreeSet, LinkedList哪些线程是安全的?
简单记忆线程安全的集合类: 喂! SHE !
喂是指 vector , S 是指 stack , H 是指 hashtable , E 是指: Eenumeration
重载是在同一个类中,有多个方法名相同,参数列表不同(参数个数不同,参数类型不同),与方法的返回值无关,与权限修饰符无关,B中的参数列表和题目的方法完全一样了。
以下哪项不是java基础类型()
数据类型包括基本数据类型和引用数据类型:
基本数据类型:byte,short,int,long,char,float,double,boolean;
引用数据类型:数组,接口,枚举,类,空类
子类A继承父类B, A a = new A(); 则父类B构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块执行的先后顺序是?
静态优先级最高,而非静态初始化块的执行顺序要在构造函数之前
下面哪个选项正确创建socket连接?
服务器端:ServerSocket提供的实例 ServerSocket server = new ServerSocket(端口号) ;客户端:Socket提供的实例 Socket client = new Socket(IP地址,端口号)
关于ASCII码和ANSI码,以下说法不正确的是()?
ASCII码包括一些特殊的空字符
类B从类A派生,则类B可以访问类A中的( )成员?
数据成员包括ABC,函数成员也包括ABC;数据成员和函数成员默认是default访问权限,同一个包下的所有类都可以访问,类B不一定和类A同包,所以DE才错
下面说法正确的是?()
yiled方法属于高风亮节的行为,这个坑位我不上了,后面跟我同级别的先上厕所。这样比较好记!
JDK提供的用于并发编程的同步器有哪些?
同步器是一些使线程能够等待另一个线程的对象,允许它们协调动作。
最常用的同步器是CountDownLatch和Semaphore,不常用的是Barrier 和Exchanger
下列流当中,属于处理流的是:()
按照流是否直接与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类。
JAVA常用的节点流
常用处理流(关闭处理流使用关闭里面的节点流)
流的关闭顺序
类的成员变量为int类型可以不初始化,默认值为0;方法中的局部变量为int类型必须初始化,没有默认值——main方法也是方法,其中的也是局部变量
关于抽象类叙述正确的是? ( )
==可用于基本类型和引用类型:
当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同
this调用语句必须是构造函数中的第一个可执行语句。
switch语句支持哪些类型数据:
关于Java中的数组,下面的一些描述,哪些描述是准确的:( )
arr1.equal(arr2)是比较两个数组的地址;Arrays.equal(arr1, arr2)是比较两个数组的内容。
数组是一种引用数据类型,是继承Object类的,Object.equals()比较的是两个数组的地址
判断一块内存空间是否符合垃圾收集器收集的标准有哪些?
关于 Socket 通信编程,以下描述正确的是:( )
如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是?( )
实现接口,就要实现接口的所有方法,相当于重写方法,
方法的重写需要满足:三同一大一小(方法名、返回值类型、形参相同;访问权限>=重写前;抛出异常<=重写前)
socket编程中,以下哪个socket的操作是不属于服务端操作的()?
先执行括号中的i++,虽然i会变成-4,但是返回的临时量是-5,于是变成i = ++(-5),出现错误。因为单目运算符++后面不能接字面量,只能接变量。
下面哪些情况下需要使用抽象类?
在Java线程状态转换时,下列转换不可能发生的有()?
ArrayList和LinkList的描述,下面说法错误的是?
D选项描述相反
下面关于JAVA的垃圾回收机制,正确的是( )
局部变量分为基本类型变量和引用变量:基本类型的变量名称和值都是存储在栈中;引用变量引用存储在栈中,而值在堆中
当类加载时,static静态方法随着类加载而初始化,此时实例对象还未被创建,但是非静态成员变量需要等到实例对象创建才会被初始化,故无法被引用
URL u =new URL(“http://www.123.com”);。如果www.123.com不存在,则返回______。
new URL()时必须捕获检查异常,但这个异常是由于字符串格式和URL不符导致的,与网址是否存在无关。
URL的toString方法返回字符串,无论网址是否存在
从内存实现或者反射的角度来看,关于继承的说法正确的是()。 注:此处的继承不代表能调用
在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象。
所以所谓的继承使子类拥有父类所有的属性和方法其实可以这样理解,子类对象确实拥有父类对象中所有的属性和方法,但是父类对象中的私有属性和方法,子类是无法访问到的,只是拥有,但不能使用
jdk1.8版本之前的前提下,接口和抽象类描述正确的有( )
jdk1.8后接口中用static或default修饰的方法可以有方法体
下面的类哪些可以处理Unicode字符?
字符流是字节流根据字节流所要求的编码集解析获得的,可以理解为字符流=字节流+编码集;后缀是Stream的都是字节流,其他的都是字符流。
下面选项中,哪些是interface中合法方法定义?()
interface中的方法默认为public abstract 的 ,变量默认为public static final
关于final说法正确的是? ( )
final变量:如果是基本数据类型,则其数值一旦初始化后就不能被改变;
如果是引用类型的变量,则对其初始化后,便不能再指向另一个对象,但是其里面的值是可以改变的。
**加粗样式如下的Java程序 **
public class Test {
public static void main(String[] args) {
System.out.println(args[0]);
}
}
若采用命令行“java Test one two three”调用,则程序输出的结果为:
采用命令行“ java Test one two three ”调用其中Test为调用的方法,而one two three则为Test方法里面main函数的参数;System.out.println(args[0]);表示输出第一个元素,故为one
以下Java程序运行的结果是:
public class Tester{
public static void main(String[] args){
Integer var1=new Integer(1);
Integer var2=var1;
doSomething(var2);
System.out.print(var1.intValue());
System.out.print(var1==var2);
}
public static void doSomething(Integer integer){
integer=new Integer(2);
}
}
java中引用类型的实参向形参的传递,只是传递的引用,而不是传递的对象本身。
在各自最优条件下,对N个数进行排序,哪个算法复杂度最低的是? ()
以下哪些对长度为50的字符串数组声明是正确的
声明一个数组时,不能直接限定数组长度,只有在创建实例化对象时,才能对给定数组长度
以下哪个类包含方法flush()?()
一般在读写流(stream)的时候,数据是先被读到了内存中,再把数据写到文件中,当你数据读完的时候不代表你的数据已经写完了,因为还有一部分有可能会留在内存这个缓冲区中。
这时候如果你调用了close()方法关闭了读写流,那么这部分数据就会丢失,所以应该在关闭读写流之前先flush()
静态内部类不可以直接访问外围类的非静态数据,而非静态内部类可以直接访问外围类的数据,包括私有数据。( )
一个Java源程序文件中定义几个类和接口,则编译该文件后生成几个以.class为后缀的字节码文件。
Java.Thread的方法resume()负责重新开始被以下哪个方法中断的线程的执行()。
suspend() 和 resume() 方法:两个方法配套使用,suspend()使得线程进入阻塞状态,并且不会自动恢复,必须其对应的 resume() 被调用,才能使得线程重新进入可执行状态
下面关于面向对象的一些理解哪些是错误的( )
无
对Collection和Collections描述正确的是
**java.util.Collection 是一个集合接口 (接口单数) ;
java.util.Collections 是一个包装类 (类有很多方法,复数) **
下面的代码运行后,输出结果是什么?
public class Test{
static{ int x=5; }
static int x,y;
public static void main(String args[]){
x--;
myMethod( );
System.out.println(x+y+ ++x);
}
public static void myMethod( ){
y=x++ + ++x;
}
}
3
instanceof运算符能够用来判断一个对象是否为:
instanceof是JAVA中的关键字,用来判断:
一个对象是不是一个类的实例,是不是一个类的子类,是不是一个接口的实现类
下面代码运行结果是()
public class Test{
public int add(int a,int b){
try {
return a+b;
}
catch (Exception e) {
System.out.println("catch语句块");
}
finally{
System.out.println("finally语句块");
}
return 0;
}
public static void main(String argv[]){
Test test =new Test();
System.out.println("和是:"+test.add(9, 34));
}
}
finally语句块
和是:43
在运行sout这一行时:
另外的例子:
public abstract class Test {
public static void main(String[] args) {
System.out.println(beforeFinally());
}
public static int beforeFinally(){
int a = 0;
try{
a = 1;
return a;
}finally{
a = 2;
}
}
}
/**output:
1
*/
同理:try代码块中会返回1,在执行finally代码块前,将a=1存在临时栈中;finally中虽然a又赋值为2,但并没有改变临时栈中的值。所以最后返回的仍是栈中的“a=1”
以下java程序代码,执行后的结果是()
public class Test {
public static void main(String[] args) {
Object o = new Object() {
public boolean equals(Object obj) {
return true;
}
};
System.out.println(o.equals("Fred"));
}
}
1、使用了匿名内部类,并重写了Object中的重写了equals()方法
2、o对象调用了equals方法,无论如何都是返回true
如果子类要调用父类的构造函数,则通过super()调用来实现。
抽象类方法的访问权限默认都是public。( )
关于抽象类
关于接口
下列Java代码中的变量a、b、c分别在内存的____存储区存放。
class A {
private String a = “aa”;
public boolean methodB() {
String b = “bb”;
final String c = “cc”;
}
}
以下类型为Final类型的为()
有如下一段代码,请选择其运行结果()
public class StringDemo{
private static final String MESSAGE="taobao";
public static void main(String [] args) {
String a ="tao"+"bao";
String b="tao";
String c="bao";
System.out.println(a==MESSAGE);
System.out.println((b+c)==MESSAGE);
}
}
hotspot中 编译时"tao"+“bao"将直接变成"taobao”,b+c则不会优化,因为不知道在之前的步骤中bc会不会发生改变,而针对b+c则是用语法糖,新建一个StringBuilder来处理
有以下类定义:
abstract class Animal{
abstract void say();
}
public class Cat extends Animal{
public Cat(){
System.out.printf("I am a cat");
}
public static void main(String[] args) {
Cat cat=new Cat();
}
}
当一个实体类继承于一个抽象类,必须实现抽象类的抽象方法,抽象类本身没有错误,但是cat类编译通不过
**
下面程序的运行结果是:( )**
public static void main(String args[]) {
Thread t = new Thread() {
public void run() {
pong();
}
};
t.run();
System.out.print("ping");
}
static void pong() {
System.out.print("pong");
}
t.run是调用的Thead类中的run()方法,t.start才是执行线程,所以这题就是执行普通run()方法,先输出pong,在输出ping