javase测试题修正
作者:互联网
变量初始化
方法中的局部变量一定要手动初始化,不然编译会报错
下面代码的运行结果为:()
public class foo{
public static void main (String[] args){
String s;
System.out.println("s=" + s);
} }
- A代码得到编译,并输出“s=”
- B代码得到编译,并输出“s=null”
- C由于String s没有初始化,代码不能编译通过
- D代码得到编译,但捕获到 NullPointException异常
学生答案: B
正确答案: C
final关键字
以下选项哪个会有问题
public class Person {
public String name;
public Person(String name) {
this.name = name;
}
}
public class Test {
public static void main(String[] args) {
final Person person = new Person("欧欧");
person.name = "美美";
person = new Person("亚亚");
}
}
- Afinal Person person = new Person("欧欧");
- Bperson.name = "美美";
- Cperson = new Person("亚亚");
- D没有错误
学生答案: B
正确答案: C
str.length()
已知如下定义:String s=”story”;下面( )表达式是合法的
A
s+=”books”
B
char c=s[1];
C
int len=s.length;
D
String t=100;
学生答案: C
正确答案: A
得分: 0分
值传递--引用数据类型
指出下列程序运行的结果( )
public class Example {
String str = new String("good"); // str = "good"
char[] ch = { 'a', 'b', 'c' };
public static void main(String[] args) {
Example ex = new Example();
ex.change(ex.str, ex.ch);
System.out.print(ex.str + "and");
System.out.print(ex.ch);
}
public void change(String str, char ch[]) {
str = "test ok";
ch[0] = 'g';
}
}
- Agoodandabc
- Bgoodandgbc
- Ctest okandabc
- Dtest okandgbc
学生答案: D
正确答案: B
下标从0开始
对于语句String s="my name is kitty",以下选项中可以从其中截取”kitty”的是( )
- As.substring(11,16)
- Bs.substring(11)
- Cs.substring(12,17)
- Ds.substring(12,16)
学生答案: B C
正确答案: A,B
this和super关键字
以下关于this和super关键字的说法错误的是( )
- A this关键字指向当前对象自身,super关键字指向当前对象的直接父类
- B 在main方法中可以存在this或super关键字,但不能同时存在。
- C this和super关键字都可以访问成员属性,成员方法和构造方法
- D 在一个类的构造方法中可以同时使用this和super来调用其他构造方法
学生答案: A D
正确答案: B,D
main方法中不能使用this,静态方法中都不能使用,
this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
FileReader和FileWriter是节点流
以下选项中关于如下代码的说法正确的是( )
public class TestBuffered {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new FileReader("d:/1.txt"));
BufferedWriter bw =
new BufferedWriter(new FileWriter("d:/2.txt"));
String str = br.readLine();
while(str !=null){
bw.write(str);
bw.newLine();
str = br.readLine();
}
br.close();
bw.close();
}
}
- A 该类使用字符流实现了文件复制,将d:/1.txt复制为d:/2.txt
- B FileReader和FileWriter是处理流(包装),直接从文件读写数据
- C BufferedReader和BufferedWriter是节点(底层)流,提供缓冲区功能,提高读写效率
- D readLine()可以读取一行数据,返回值是字符串类型,简化了操作
学生答案: A B D
正确答案: A,D
方法重载
下面( )方法是public void example(){…}的重载方法
private String example(){…}
public int example(String str){…}
public void example2(){…}
public int example(int m,float f){…}
学生答案: A B D
正确答案: B,D
抽象类和抽象方法
下列选项中,关于Java的抽象类和抽象方法说法正确的是( )
- A 抽象类中可以含有0个或多个抽象方法
- B 抽象类中不可以有构造方法
- C 一个类中若有抽象方法,则这个类必为抽象类
- D 子类必须重写父类所有的抽象方法
学生答案: A C D
正确答案: A,C
匿名内部类
以下选项中关于匿名内部类的说法正确的是( )
- A匿名内部类可以实现多个接口,或者继承一个父类
- B匿名内部类不能是抽象类,必须实现它的抽象父类或者接口里包含的所有抽象方法
- C匿名内部类没有类名,所以匿名内部类不等定义构造方法
- D匿名内部类可以直接访问外部类的所有局部变量
学生答案: A B C
正确答案: B,C
Class文件
java虚拟机不与包括Java语言在内的任何程序语言绑定, 它只与“Class文件”这种特定的二进制文件格式所关联, Class文件中包含了Java虚拟机指令集、 符号表以及若干其他辅助信息
Java的字节码文件的扩展名是class,是一种平台独立的非二进制文件
A正确
B错误
学生答案: B
正确答案: B
线程可以用yield使低优先级的线程运行
- A正确
- B错误
学生答案: A
正确答案: B
实际运行中发现,Thread.yield()方法并不是仅仅选择让步于同等或者更高优先级的线程。高优先级的线程也会让步与低优先级的线程。因此高优先级仅仅是线程获得的CPU时间片更多一些,相对执行到的机会更大,并不是一定先执行。
Thread.yield ()只是让当前正在运行的线程让出它的时间片,具体下一个让谁来运行是线程调度器的事儿,Thread.yield ()方法的用处也可能仅限于优化忙等待的性能和调试
假设文件”a.txt”的长度为100字节,那么当正常运行语句
OutputStream f=new FileOutputStream(new File(“a.txt”));
之后,文件”a.txt”的长度变为0字节
(1分)
A
正确
B
错误
学生答案: B
正确答案: A
执行语句
String str="abcedf";
int length=str.length;
后,能够得到字符串的长度是6
(1分)
A
正确
B
错误
学生答案: A
正确答案: B
包装类Integer的静态方法可以将字符串类型的数字”123”转换成基本整型变量n,其实现语句是:_________________.
int n = Integer.parseInt("123")
如何理解静态上下文无法访问非静态的成员变量和成员方法?
所谓静态上下文不能访问非静态的成员变量或成员方法其实是指,在静态上下文中,无法访问,当前对象this的成员变量,或在当前对象this上调用其非静态的成员方法。因为对于静态上下文而言,静态的东西都是不依赖于对象而存在,所以当静态上下文被访问的时候,当前对象可能并不存在,所以自然无法访问。
"=="和equals方法有何异同?
== 对于基本数据类型的数据而言,比较的是内容,对于引用数据类型的数据而言,比较的引用变量,所指向的内存地址。 equals方法是Object类的方法,其默认实现是比较两个对象的内存地址是否相同,若想:要比较量对象的内容是否相同,则需要在子类中覆盖Object的equals方法
字符流和字节流最主要的区别是什么?如何理解字符流=字节流+编码表?
字节流和字符流最主要的区别是,流中数据的逻辑单位不同,字节流中数据的逻辑单位是二进制的字节数据,而字符流中,数据的逻辑单位是单个字符。
a)字符数据在内存中还是以二进制(字符的在编码表中对应的编码值)的形式保存和传输
b)而对于二进制的字节数据的写和读,字节流就已经能够很好的完成了
c) 但为了保证字符流中的数据是一个一个的完整字符,所以字符流在字节流的基础上,添加了编解码器,即在使用底层字节流写数据前,先利用编码器,对字符数据进行编码得到字符数据对应的二进制编码序列,然后利用底层字节流传输它们,同时,在读取数据的时候,先用解码器,将由底层字节流传输的字节数据,解码成一个一个的字符。
所以字符流的功能实现是字节流 + 编码表(基于编码表的编解码操作)
同步和异步有何异同,在什么情况下分别使用他们?
异步简单来说就是,线程之间,各自独立运行,互不影响,就好像线程之间“同时”,在各自做自己的事情,简单来说,就是我走你也走
同步和异步相对,同步是指线程之间不能在各自为政,自己运行自己的,而是在某些情况下等待其他线程。简单来说,就是我走你不走
线程天生就是异步执行的,而当多线程异步访问同一个共享数据的时候,为了保证共享数据访问的正确性,必须保证同时只有一个线程,能访问并修改共享变量的值,这意味着,如果一个线程正在,访问某共享变量,则其他所有要访问该共享变量的线程都需要等待,直到,该线程访问完毕。
Java语言多线程设计中,为什么wait, notify 和 notifyAll这些线程通信的方法不在thread类里面?
线程通信,其实是依靠锁对象,来完成的(对于wait方法而言,调用wait方法的对象,首相必须被当前线程,作为锁对象持有),而java语言中的锁对象,可以是任意对象,因此这些方法被定义在Object中
运行时异常,编译时异常有什么区别
- 运行时异常 ,在编译过程中,不要求必须进行显示捕捉
- 编译时异常,在编译过程中,必须进行处理,要么捕捉,要么通过throws 抛出去.
abstract class和interface有什么区别?
- 使用方式:
- 抽象类只能够通过继承被使用
- 接口必须通过实现被使用
- 实现方法:
- 抽象类不仅可以提供抽象方法,也可以提供实现方法
- 接口只能提供抽象方法,不能提供实现方法。 但是在JAVA8版本开始,接口可以提供实现方法了,前提是要在方法前加一个default修饰符
实现Java反射技术的主要类有哪些,其作用分别是什么?
在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中
Class类:代表一个类
Field 类:代表类的成员变量(属性)
Method类:代表类的成员方法
编程题
使用TCP网络编程完成用户登录功能:客户端输入用户名和密码,向服务器发出登录请求;服务器接收数据并进行判断,如果用户名和密码均是admin,则登录成功,否则登录失败,返回相应响应信息;客户端接收响应信息并输出登录结果。
1)用户User类已提供构造方法 public User(String username,String password)。
2)客户端采用ObjectOutputStream发送封装了用户名和密码的User对象。
3)服务器端和客户端的类名和方法声明如下所示。
public class LoginServer {
public static void main(String[] args) throws Exception {}
}
public class LoginClient {
public static void main(String[] args) throws Exception {}
}
编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z。打印顺序为12A34B56C….5152Z。即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替循环打印,直到打印到整数52和字母Z结束。
要求:
(1)编写打印类Printer,声明私有属性index,初始值为1,用来表示是第几次打印。
(2)在打印类Printer中编写打印数字的方法print(int i),3的倍数就使用wait()方法等待,否则就输出i,使用notifyAll()进行唤醒其它线程。
(3)在打印类Printer中编写打印字母的方法print(char c),不是3的倍数就等待,否则就打印输出字母c,使用notifyAll()进行唤醒其它线程。
(4)编写打印数字的线程NumberPrinter继承Thread类,声明私有属性private Printer p;在构造方法中进行赋值,实现父类的run方法,调用Printer类中的输出数字的方法。
(5)编写打印字母的线程LetterPrinter继承Thread类,声明私有属性private Printer p;在构造方法中进行赋值,实现父类的run方法,调用Printer类中的输出字母的方法。
(6)编写测试类Test,创建打印类对象,创建两个线程类对象,启动线程
标签:String,测试题,修正,线程,答案,javase,方法,public,字节 来源: https://www.cnblogs.com/yuweninclass/p/16357174.html