Javase专项练习一

1.类之间存在以下几种常见的关系:
正确答案: A B C
A;“USES-A”关系
B;“HAS-A”关系
C;“IS-A”关系
D;“INHERIT-A”关系
解析:
USES-A:依赖关系,A类会用到B类,这种关系具有偶然性,临时性。但B类的变化会影响A类。这种在代码中的体现为:A类方法中的参数包含了B类。
关联关系:A类会用到B类,这是一种强依赖关系,是长期的并非偶然。在代码中的表现为:A类的成员变量中含有B类。
HAS-A:聚合关系,拥有关系,是关联关系的一种特例,是整体和部分的关系。比如鸟群和鸟的关系是聚合关系,鸟群中每个部分都是鸟。
IS-A:表示继承。父类与子类,这个就不解释了。
要注意:还有一种关系:组合关系也是关联关系的一种特例,它体现一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分的关系,但这种整体和部分是不可分割的。
2.在jdk1.5之后,下列 java 程序输出结果为______。

int i=0;
Integer j = new Integer(0);
System.out.println(i==j);
System.out.println(j.equals(i));
正确答案: true,true

总体主要分为两个方面
①比较的是值
一、基本数据类型与引用数据类型进行比较时,引用数据类型会进行拆箱,然后与基本数据类型进行值的比较
举例:
int i = 12;
Integer j = new Integer(12);
i == j 返回的是true
二、引用数据类型与基本数据类型进行比较(equals方法),基本数据类型会进行自动装箱,与引用数据类型进行比较,Object中的equals方法比较的是地址,但是Integer类已经重写了equals方法,只要两个对象的值相同,则可视为同一对象,具体看API文档,所以这归根到底也是值的比较!
举例:
int i = 12;
Integer j = new Integer(12);
j.equals(i) 返回的是true
②比较的是地址
一、如果引用数据类型是这样 Integer i = 12;直接从常量池取对象,这是如果数值是在-128与127之间,则视为同一对象,否则视为不同对象
举例:
Integer i = 12; Integer j = 12; i == j 返回的是true
Integer i = 128; Integer j = 128; i == j 返回的是false
二、如果引用数据类型是直接new的话,不管值是否相同,这时两个对象都是不相同的,因为都会各自在堆内存中开辟一块空间
举例:
Integer i =new Integer(12);
Integer j = new Integer(12);
i == j 这时返回的是false
三、从常量池取对象跟new出来的对象也是不同的
举例:
Integer i = 12;
Integer j = new Integer(12)
i == j 这时返回的是false,因为第二个语句其实已经是new了两个对象了!!!

3.关于异常的编程,以下描述错误的是:( )

正确答案: A
A;在有除法存在的代码处,为了防止分母为零,必须抛出并捕获异常
B;int i=Integer.parseInt(”123a”);将产生NumberFormatException
C;int a[]=null; a[0]=1; 将产生NullPointerException
D;输入输出流编程中,读和写时都要抛出IOException

Java的异常分为两种,一种是运行时异常(RuntimeException),一种是非运行异常也叫检查式异常(CheckedException)。
1、运行时异常不需要程序员去处理,当异常出现时,JVM会帮助处理。常见的运行时异常有:
ClassCastException(类转换异常)
ClassNotFoundException
IndexOutOfBoundsException(数组越界异常)
NullPointerException(空指针异常)
ArrayStoreException(数组存储异常,即数组存储类型不一致)
还有IO操作的BufferOverflowException异常
2、非运行异常需要程序员手动去捕获或者抛出异常进行显示的处理,因为Java认为Checked异常都是可以被修复的异常。常见的异常有:
IOException
SqlException

4.下面哪种流可以用于字符输入:
正确答案: C
A;java.io.inputStream
B;java.io.outputStream
C;java.io.inputStreamReader
D;java.io.outputStreamReader

1)字节流可以处理字符流;
2)InputStreamReader只是将字节流转换为字符流,OutputStreamWriter将字符流转换为字节流,他们只是用于转换,并不能用于字符的输出!

5.要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以( )

正确答案: A
A;让该类不使用任何关键字
B;使用private关键字
C;使用protected关键字
D;使用void关键字

default和protected的区别是:
前者只要是外部包,就不允许访问。
后者只要是子类就允许访问,即使子类位于外部包。

总结:default拒绝一切包外访问;protected接受包外的子类访问
6.下面程序的运行结果:()

public static void main(String args[]) {
		Thread t=new Thread(){
		public void  run(){
			dianping();
			
		}
	};
	t.run();
	System.out.print("dazhong");
	}
	static void dianping(){
		System.out.print("dianping");
}

正确答案:dianpingdazhong

如果调用run() 选b
如果调用start() 选c
因为调用start后并不保证线程启动的顺序

7.下列叙述错误的是( )

正确答案: C
A;java程序的输入输出功能是通过流来实现的
B;java中的流按照处理单位可分成两种:字节流和字符流
C;InputStream是一个基本的输出流类。
D;通过调用相应的close()方法关闭输入输出流

C.InputStream是一个基本的输出流类
这里"基本的",其实就是将流分为节点流和处理流,而“基本的”是表示节点流
所以C选项可以看成:InputStream是属于节点输出流;
所以我们就要判断InputStream是节点流还是处理流,是输出流还是输入流
这就涉及到哪些是节点流,哪些是处理流了,而且很明显,他是一个输入流
节点流:
FileInputStream,FileOutputStrean,FileReader,FileWriter
StringReader,StringWriter
ByteArrayInputStream ,ByteArrayOutputStream ,CharArrayReader
PipedInputStream PipedOutputStream PipedReaderPipedWriter
处理流:
BufferedInputStrean,BufferedOutputStream,BufferedReader,BufferedWriter
InputStreamReader,OutputStreamReader
DataInputStream,DataOutputStream
PrintWriter
不知道大家发现没有,节点流的前缀都是名词,如File,String,Char等;处理流的前缀都是动词,如input,print,bufferd等等
所以大家别烦分不清一个流到底是节点流还是处理流,看他前缀是名词还是动词就行了

8.将类的成员的访问权限设置为默认的,则该成员能被( )

正确答案: A
A;同一包中的类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值