- 创建了线程一定要记得将线程启动起来
- 只要用输入流写出文件就一定要记得flush!!!
- 隐式类型转换规则是: byte→short(char)→int→long→float→double
- (多选题)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);
下列代码片段中,存在编辑错误的语句是()
语句1错误:b3=(b1+b2);自动转为int,所以正确写法为b3=(byte)(b1+b2);或者将b3定义为int; 语句2正确:b6=b4+b5;b4、b5为final类型,不会自动提升,所以和的类型视左边变量类型而定,即b6可以是任意数值类型; 语句3错误:b8=(b1+b4);虽然b4不会自动提升,但b1仍会自动提升,所以结果需要强转,b8=(byte)(b1+b4); 语句4错误:b7=(b2+b5); 同上。同时注意b7是final修饰,即只可赋值一次,便不可再改变 - (单选题)以下表达式那个是不合法的()
A.String x=“Hello”;
int y=9; x+=y;
B.String x=“Hello”;
int y=9;
if(xy) { }
C.String x=“Hello”;
int y=9; x=x+y;
D.String x=null;
int y=(x!=null)&&(x.length()>0) ? x.length() : 0;
【正确答案】B
【答案解析】java对"+“进行了扩展,不仅可以连接字符串,而且还能将字符串与其它类型数据进行连接,结果是字符串。 若”+“的第一个操作数是字符串,Java会自动将后面的操作数类型转换成字符串类型。 本题选项A中,x+=y即x=x+y,则计算结果x的值为字符串Hello9; 选项C与此类似,故此选项也是正确的; 选项D主要考查的是三目运算符”?:",即把表达式(x!=null)&&(x.length()>0) ? x.length() : 0的值赋给整型变量y,运行结果y的值是0; 而选项B是因为""两边的类型不匹配,无法比较,所以此表达式是错误的。 - 三目运算符中:第二个表达式和第三个表达式中如果都为基本数据类型,整个表达式的运算结果由容量高的决定。
- (单选题)选择下面代码的运行结果:( )
public class Test{ public void method(){
for(int i = 0; i < 3; i++){ System.out.print(i); }
System.out.print(i); } }
C.编译错误
【正确答案】C
【答案解析】i变量的作用范围是整个for循环中。
B.constructor 必须与 class 同名,但方法不能与 class 同名
C.constructor 在一个对象被 new 时执行
【正确答案】C
B.构造方法 与类同名,类中可以有和类名相同的方法。 - (单选题)已知类 Teacher 和 Student 都是类 Person 的子类,则对于下列代码说法正确的是( )
Person t = new Teacher();
if (t instanceof Teacher){
Student s = (Student)t;
}
A.将构造一个 Student 对象
B.将构造一个 Teacher 对象
C.编译出错,且运行时出错
D.编译正确,且运行时出错
【正确答案】D
【答案解析】instanceof 是 Java 的一个二元操作符,它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 类型的数据。Teahcer 和 Student 之间没有继承关系不能做强制类型转换。 - (多选题)给出下面的代码片段:
public class Base {
int w, x, y, z;
public Base(int a, int b) { x=a; y=b; }
public Base(int a, int b, int c, int d) {
//assignment x=a, y=b w=d;
z=c; } }
在代码说明//assignment x=a, y=b处写下如下哪几个代码是正确的( )
A. Base(a, b);这样是错误的! - 在静态方法中不能使用this,this属于对象,而不属于类,静态的属于类,而不属于对象
- A在类方法中不能使用 this 关键字。C在类方法中可以调用其它类中的类方法。D在类方法中可以通过实例化对象调用实例方法。
- 栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。
是.存取受限的线性结构
(单选题)下述代码的执行结果是( )
class Super {
public int getLength() { return 4; }
}
public class Sub extends Super {
public long getLength() { return 5; }
public static void main (String[] args) {
Super sooper = new Super ();
Super sub = new Sub();
System.out.println(sooper.getLength() + “,” + sub.getLength());
} }
D.代码不能被编译
【正确答案】D
【答案解析】方法重写返回值类型如果是基本类型应与父类的一致
13. 类 MyVector 不能是私有的
14. 】接口中的属性都是常量,默认由public static final同时修饰,可以省略,
15. 修饰接口可以是public和默认
16.
(单选题)以下程序运行结果是()
public class foo {
static String s;
public static void main (String[]args) {
System.out.println (“s=” + s);
}
}
A.输出结果为"s="
B.输出结果为"s=null"
C.编译出错,因为 s 没有初始化。
D.编译出错,因为 s 没有被定义。
【正确答案】B
【答案解析】String 为引用数据类型,引用类型数据成员的默认值为 null
17. 移位运算需要整数类型才可以; B s不是数组,数组才有length属性,字符串只有length()方法; C String类有length()方法而不是属性;
18.
(单选题)以下代码的输出结果是()
public class Test {
public static void main(String[] args) {
String str = NULL;
System.out.println(str);
}
}
String类型变量取值应为小写null或其他用""双引号括起来的内容
19.
(单选题)以下代码编译运行的结果是()。
public class Base{
private void test() {
String aStr = “? One? “;
String bStr = aStr;
aStr.toUpperCase();
aStr.trim();
System.out.println(”[” + aStr + “,” + bStr + “]”);
}
static public void main(String[] a) {
new Base().test();
}
}
A.[ONE,?One?]
B.[? One? ,One ]
C.[ONE,ONE]
D.[? One? ,? One? ]
【正确答案】D
【答案解析】通过 String bStr = aStr;这句代码使 bStr 和 aStr 指向同一个地址空间,所以最后 aStr 和 bStr 的结 果应该是一样,String 类是定长字符串,调用一个字符串的方法以后会形成一个新的字符串。
在调用toUpperCase()和trim()方法时都会返回新的字符串对象,
而题目中在调用完这两个方法后并没有使用变量接收方法所返回的新字符串对象,而aStr和bStr所引用的仍然是原来的字符串对象。
所以选项D正确。
20.
C.两个对象如果hashCode值相同,则两个对象可能相同。
D.两个对象如果hashCode值不同,则两个对象必定不同。
【正确答案】C,D
【答案解析】先通过 hashcode 来判断某个对象是否存放某个桶里,但这个桶里可能有很多对象,那么我们就需要再通过 equals 来在这个桶里找到我们要的对象。
21.
import java.util.;
public class ShortSet{
public static void main(String args[]){
Set s=new HashSet();
for(Short i=0;i<100;i++) {
s.add(i);
s.remove(i-1);
}
System.out.println(s.size());
}
}
A.1
B.100
C.Throws Exception.
D.None of the Above.
【正确答案】B
【答案解析】i是Short类型i-1是int类型,其包装类为 Integer,所以s.remove(i-1);不能移除Set集合中Shor类型对象。
22.
链表具有的特点是( )
A.不必事先估计存储空间
B.可随机访问任一元素
C.插入删除不需要移动元素
D.所需空间与线性表长度成正比
【正确答案】A,C,D
【答案解析】A. 采用动态存储分配,不会造成内存浪费和溢出。
B. 不能随机访问,查找时要从头指针开始遍历
C. 插入、删除时,只要找到对应前驱结点,修改指针即可,无需移动元素
D. 需要用额外空间存储线性表的关系,存储密度小
23. Java语言不支持goto语句
24. 目录在Java中作为一种特殊文件,即文件名的列表,通过类File所提供的方法,可得到文件或目录的描述信息(包括名字、路径、长度、可读、可写等),也可以生成新文件、目录、修改文件和目录,查询文件属性,重命名文件或者删除文件。
25. 流,最早从C语言中引入的。其可以看成是一个流动的数据缓冲区。数据从数据源方向经过缓冲区流向数据的目的地。在传送的过程中,其传送方式是串行的。在Java中的java.io包中定义了Java中常见流的接口与类。其中包括两个最基本的流的抽象类,它们分别是OutputStream与InputStream。其余的流都分别从这两个基本类中继承而来。
.
26. 异常的基类为 Exception,所有异常都必须直接或者间接继承它(面试题里说是对的)
27. Java语言中,负责并发管理的机制是多线程
28. sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控 状态依然保持,到时后会自动恢复。调用 sleep 不会释放对象锁。 wait 是 Object 类的方法,对此对象调用 wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出 notify 方法(或 notifyAll)后本线程才进入对象锁定池准备获得对 象锁进入运行状态。
29. Java 提供对多线程同步提供语言级的支持
30. 线程被创建后不可能立即开始运行。 不同优先级的线程间是抢先式的,同级线程间是轮转式的。 即使线程因为抢先而停止也不一定就进入可运行队列的前面。 而同级线程是轮换式的,它的运行可能就是因为轮换,而它因抢占而停止后只能在轮换队列中排队而不能排在前面。
31.
(单选题)存储一个24X24点阵的汉字(每个点1bit),需要多少字节( )
A.24
B.48
C.72
D.144
【正确答案】C
【答案解析】2424/8=72。意思是:24*24的结果是二进制位,而八个二进制位等于 一个字节,所以再除以八是所得的字节数。
32. java中,>>为有符号右移,>>>为无符号右移,<<为有符号左移,不存在无符号左移运算符