ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javase测试题修正

2022-06-08 21:00:43  阅读:144  来源: 互联网

标签:String 测试题 修正 线程 答案 javase 方法 public 字节


变量初始化

方法中的局部变量一定要手动初始化,不然编译会报错

下面代码的运行结果为:()

 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有