日常Java练习题(每天进步一点点系列)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 日常Java练习题(每天进步一点点系列)

1、如果类的方法没有返回值,该方法的返回值类型应当是abstract。()

正确答案:B

A 正确

B 错误


题解:

1、 没有返回值就是不返回任何东西 abstract肯定是错的了 void返回值为空 所以说的是构造函数吧

2、 选B,没有返回值,该方法的返回值类型为void


2、代码String str=”123456a”;int i=Integer.parseInt(str);会报异常的是()

正确答案:B

A java.lang.NullPoninterException

B java.lang.NumberFormatException

C java.lang.RuntimeException

D java.lang.ArrayindexOutOfBoundsException


题解:

1、非纯数字的字符串转化为Integer对象会报数字格式异常。

2、 java.lang.NullPoninterException:变量未被初始化、对象未赋值、对象为空(俗称的空指针异常) java.lang.NumberFormatException:数据格式转换失败(integer的取值范围为:-127-128,超过范围都会访问false) java.lang.RuntimeException:运行时异常 java.lang.ArrayindexOutOfBoundsException:数组下标越界

3、 parseInt 是将字符串参数解析为带符号的十进制整数。 字符串中的字符都必须是十进制数字,除了第一个字符可能是ASCII减号’-’ ( ‘\u002D’ )以指示负值或ASCII加号’+’ ( ‘\u002B’ )以指示正值。 返回所得到的整数值,就像参数和小数10被赋予parseInt(java.lang.String

4、 int)方法的参数一样。


3、以下哪个方法用于定义线程的执行体?

正确答案:C

A start()

B init()

C run()

D synchronized()


题解:

1、run()相当于线程的任务处理逻辑的入口方法,它由Java虚拟机在运行相应线程时直接调用,而不是由应用代码进行调用。 而start()的作用是启动相应的线程。启动一个线程实际是请求Java虚拟机运行相应的线程,而这个线程何时能够运行是由线程调度器决定的。start()调用结束并不表示相应线程已经开始运行,这个线程可能稍后运行,也可能永远也不会运行。

2、 run方法线程执行体.start方法开启多线程

3、 WCNBD!


4、在Java中,什么是Garbage Collection?()

正确答案:C

A 自动删除在程序中导入但未使用的任何包

B JVM检查任何Java程序的输出并删除任何没有意义的东西

C 当对象的所有引用都消失后,对象使用的内存将自动回收

D 操作系统定期删除系统上可用的所有java文件


题解:

1、 garbage collection 垃圾回收


5、判断对错。List,Set,Map都继承自继承Collection接口。

正确答案:B

A 对

B 错


题解:

Map是独立的接口,不继承Collection接口


6、关于下面程序,哪些描述是正确的: ( ) public class While {

public void loop() {

int x= 10;

while ( x ) {

System.out.print("x minus one is " + (x - 1));

x -= 1;

}

}

}

正确答案:B

A 行1有语法错误

B 行4有语法错误

C 行5有语法错误

D 行6有语法错误

E 行2有语法错误

Floop是关键字

G 程序能够正常编译和运行


题解:

1、这个题主要考while()中表达式的判断,在C语言中大于0的int值都会被认为是true,而java中没有这个机制,必须是boolean类型的。

2、 while()括号里参数必须是布尔类型,要么true要么false

3、 loop 不是java 的关键字 问题出在 wile( boolean ) x 是一个int 形的变量 不是Boolean 值 所有编译不通过


7、若有下列定义,下列哪个表达式返回false? String s = “hello”; String t = “hello”; char c = {‘h’,‘e’,‘l’,‘l’,‘o’} ;

正确答案:B

A s.equals(t);

B t.equals©;

C s==t;

D t.equals(new String(“hello”));


题解:

1、 看了一堆解析,不懂别乱说ok. 看底层源码 此处有判断这个参数是不是String的实例,不是不执行判断最后返回false,char数组是一种对象类型不是String类型的实例,直接跳过比较返回false

2、 选B。 A、D选项是对字符串内容的比较。JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池。代码中出现字面量形式创建字符串对象时,JVM首先会对这个字面量进行检查,如果字符串常量池中存在相同内容的字符串对象的引用,则将这个引用返回,否则新的字符串对象被创建,然后将这个引用放入字符串常量池,并返回该引用。所以返回true。 C选项是引用地址的比较,同上也属于常量池的同一个字符串地址,所以相等返回true。


8、关于Java中参数传递的说法,哪个是错误的?

正确答案:D

A 在方法中,修改一个基础类型的参数不会影响原始参数值

B 在方法中,改变一个对象参数的引用不会影响到原始引用

C 在方法中,修改一个对象的属性会影响原始对象参数

D 在方法中,修改集合和Maps的元素不会影响原始集合参数


题解:

答案: D

解析: 注意!Java中方法的参数传递都是值传递

A. 在方法中,修改一个基础类型的参数不会影响原始参数值

public static void main(String []args){

int i = 5;

func(i);

System.out.println(i);

}

static void func(int j){

j = 10;

}

//输出结果

5

在主方法调用func(int j) 时 , 参数i是实际参数 , 值为5 , 参数j是形式参数 , 值是i给的 , 也是5 , i和j没有任何关系 , 是两个独立的参数 , 所以修改j的值时与i没有关系 , 仍然输出5。

B. 在方法中,改变一个对象参数的引用不会影响到原始引用

public static void main(String []args){

User rabbiter = new User();

rabbiter.setName(“rabbiter”);

func(rabbiter);

System.out.println(rabbiter.getName());

}

static void func(User user){

user = new User();

user.setName(“zhangsan”);

}

//输出结果

rabbiter

在主方法调用func(User user) 时 , 对象rabbiter保存的是一个地址值 , 本质上就是把rabbiter的地址值给了形参user , 所以此时实参rabbiter和形参user指向在堆中的同一个对象 , 他们的地址值相同 , 只是指向的对象一致 , 所以并不违反值传递的理论。

此时 , 如果修改形参user , new一个新的对象并让user指向它 , 修改的只是形参保存的地址 , 与实参rabbiter无关 , rabbiter指向的对象仍然是之前的那个对象。

C. 在方法中,修改一个对象的属性会影响原始对象参数

public static void main(String []args){

User rabbiter = new User();

rabbiter.setName(“rabbiter”);

func(rabbiter);

System.out.println(rabbiter.getName());

}

static void func(User user){

user.setName(“zhangsan”);

}

//输出结果

zhangsan

在主方法调用func(User user) 时 , 对象rabbiter保存的是一个地址值 , 本质上就是把rabbiter的地址值给了形参user , 所以此时实参rabbiter和形参user指向在堆中的同一个对象 , 他们的地址值相同 , 指向的对象一致 , 所以并不违反值传递的理论。

那么user对其指向的对象的属性name进行修改 , rabbiter指向的对象的name属性也就被修改了。

D. 在方法中,修改集合和Maps的元素不会影响原始集合参数

集合和Maps都是对象 , 所以此项跟C选项的解析一致。


9、下面有关JAVA异常类的描述,说法错误的是?

正确答案:D

A 异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception

B 非RuntimeException一般是外部错误(非Error),其一般被 try{}catch语句块所捕获

C Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形,Error不需要捕捉

D RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须被 try{}catch语句块所捕获


题解:

1、运行时异常故名思议就是程序在运行的时候出现异常,隐含的一个前提就是程序在编译时是检测不到异常的存在,作者本人也并不知道是否自己的代码中含有运行时异常,所以根本也不可能提前使用try{}catch{}捕获.

2、 异常是指程序运行时(非编译)所发生的非正常情况或错误,当程序违反了语音规则,jvm就会将出现的错误表示一个异常抛出。 异常也是java 的对象,定义了基类 java。lang。throwable作为异常父类。 这些异常类又包括error和exception。两大类 error类异常主要是运行时逻辑错误导致,一个正确程序中是不应该出现error的。当出现error一般jvm会终止。 exception表示可恢复异常,包括检查异常和运行时异常。 检查异常是最常见异常比如 io异常sql异常,都发生在编译阶段。这类通过try、catch捕捉 而运行时异常,编译器没有强制对其进行捕捉和处理。一般都会把异常向上抛出,直到遇到处理代码位置,若没有处理块就会抛到最上层,多线程用thread。run()抛出,单线程用main()抛出。常见的运行异常包括 空指针异常 类型转换异常 数组月结异常 数组存储异常 缓冲区溢出异常 算术异常等


10、类之间存在以下几种常见的关系:

正确答案:ABC

A “USES-A”关系

B “HAS-A”关系

C “IS-A”关系

D “INHERIT-A”关系


题解:

1、 USES-A:依赖关系,A类会用到B类,这种关系具有偶然性,临时性。但B类的变化会影响A类。这种在代码中的体现为:A类方法中的参数包含了B类。 关联关系:A类会用到B类,这是一种强依赖关系,是长期的并非偶然。在代码中的表现为:A类的成员变量中含有B类。 HAS-A:聚合关系,拥有关系,是关联关系的一种特例,是整体和部分的关系。比如鸟群和鸟的关系是聚合关系,鸟群中每个部分都是鸟。 IS-A:表示继承。父类与子类,这个就不解释了。 要注意:还有一种关系:组合关系也是关联关系的一种特例,它体现一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分的关系,但这种整体和部分是不可分割的。

2、 use-a 是依赖关系 has-a 一般是组合关系 is-a 一般是继承关系


答案汇总:

1、正确答案:B

2、正确答案:B

3、正确答案:C

4、正确答案:C

5、正确答案:B

6、正确答案:B

7、正确答案:B

8、正确答案:D

9、正确答案:D

10、正确答案:ABC


以上部分题解来自牛客评论区,感谢评论区大佬的解释。

相关文章
|
6月前
|
存储 Java
创建一个乘法练习题生成器 using Java
创建一个乘法练习题生成器 using Java
|
7月前
|
人工智能 Java
Java练习题-输出二维数组对角线元素和
Java练习题-输出二维数组对角线元素和
|
7月前
|
存储 Java 索引
Java练习题-获取数组元素最大值
Java练习题-获取数组元素最大值
Java练习题-获取数组元素最大值
|
7月前
|
Java
<Java SE> 数组详解大全(附带练习题).一维数组、二维数组、数组拷贝、数组遍历...
<Java SE> 数组详解大全(附带练习题).一维数组、二维数组、数组拷贝、数组遍历
57 0
|
7月前
|
Java 索引
Java练习题-用冒泡排序法实现数组排序
Java练习题-用冒泡排序法实现数组排序
|
7月前
|
Java
Java练习题-键盘录入字符串实现大小写转换
Java练习题-键盘录入字符串实现大小写转换
|
7月前
|
Java
Java练习题-输出斐波那契(Fibonacci)数列
Java练习题-输出斐波那契(Fibonacci)数列
|
7月前
|
算法 Java 程序员
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
64 0
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
|
7月前
|
存储 Java
Java程序设计练习题8异常处理
Java程序设计练习题8异常处理
180 0
|
7月前
|
Java
java字符串练习题8、同构字符串
java字符串练习题8、同构字符串
56 0
java字符串练习题8、同构字符串