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

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

1、在java中,无论在何处调用,使用静态属性必须以类名做前缀。

正确答案: B 你的答案: B (正确)

正确

错误


题解:

1、如果是本类使用,可以直接就用静态变量名。

2、如果是其他类使用,可以使用类名来调用,也可以创建一个实例对象来调用。

3、如果静态变量所在的类是静态类,那么不管在本类里或者在其他外部类,都可以直接使用静态变量名。


2、若有定义语句: int a=10 ; double b=3.14 ; 则表达式 ‘A’+a+b 值的类型是()

正确答案: C 你的答案: C (正确)

char

int

double

float


题解:

char < short < int < float < double 不同类型运算结果类型向右边靠齐。

选C,double类型,因为按照类型大的与类型小的运算,强制转换类型小的进行运算的规则,double>int>char,因此结果是double类型。


3、SSH MVC开发模式说法正确的是( )

正确答案: B 你的答案: B (正确)

Struts进行业务流转

Hibernate进行数据库操作的封装

Spring进行流程控制

其他选项均不正确


题解:

MVC 的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结果,并通过视图呈现给用户。

Struts 主要控制逻辑关系的处理

Spring 是一个轻量级的控制反转 (IoC) 和面向切面 (AOP) 的容器框架

Hibernate 是数据持久化层 , 是一种新的对象、关系的映射工具 , 提供了从 Java 类到数据表的映射,也提供了数据查询和恢复等机制


4、下面关于垃圾收集的说法正确的是

正确答案: D 你的答案: D (正确)

一旦一个对象成为垃圾,就立刻被收集掉。

对象空间被收集掉之后,会执行该对象的finalize方法

finalize方法和C++的析构函数是完全一回事情

一个对象成为垃圾是因为不再有引用指着它,但是线程并非如此


题解:

a. 不能确定回收时间

b. 回收前调用该方法

c. c++可以明确回收时间


5、下列语句正确的是:

正确答案: D 你的答案: D (正确)

形式参数可被字段修饰符修饰

形式参数不可以是对象

形式参数为方法被调用时真正被传递的参数

形式参数可被视为local variable


题解:

A:形式参数只能被final修饰

B:形式参数可以是对象

C:形式参数被调用时被传递的是实际参数的拷贝

D:local variable:局部变量


6、结构型模式中最体现扩展性的模式是()

正确答案: A 你的答案: A (正确)

装饰模式

合成模式

桥接模式

适配器


题解:

结构型模式是描述如何将类对象结合在一起,形成一个更大的结构,结构模式描述两种不同的东西:类与类的实例。故可以分为类结构模式和对象结构模式。

在GoF设计模式中,结构型模式有:

1.适配器模式 Adapter

适配器模式是将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

两个成熟的类需要通信,但是接口不同,由于开闭原则,我们不能去修改这两个类的接口,所以就需要一个适配器来完成衔接过程。

2.桥接模式 Bridge

桥接模式将抽象部分与它的实现部分分离,是它们都可以独立地变化。它很好的支持了开闭原则和组合锯和复用原则。实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这些多角度分离出来让他们独立变化,减少他们之间的耦合。

3.组合模式 Composite

组合模式将对象组合成树形结构以表示部分-整体的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。

4.装饰模式 Decorator

装饰模式动态地给一个对象添加一些额外的职责,就增加功能来说,它比生成子类更灵活。也可以这样说,装饰模式把复杂类中的核心职责和装饰功能区分开了,这样既简化了复杂类,有去除了相关类中重复的装饰逻辑。 装饰模式没有通过继承原有类来扩展功能,但却达到了一样的目的,而且比继承更加灵活,所以可以说装饰模式是继承关系的一种替代方案。

5.外观模式 Facade

外观模式为子系统中的一组接口提供了同意的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

外观模式中,客户对各个具体的子系统是不了解的,所以对这些子系统进行了封装,对外只提供了用户所明白的单一而简单的接口,用户直接使用这个接口就可以完成操作,而不用去理睬具体的过程,而且子系统的变化不会影响到用户,这样就做到了信息隐蔽。

6.享元模式 Flyweight

享元模式为运用共享技术有效的支持大量细粒度的对象。因为它可以通过共享大幅度地减少单个实例的数目,避免了大量非常相似类的开销。.

享元模式是一个类别的多个对象共享这个类别的一个对象,而不是各自再实例化各自的对象。这样就达到了节省内存的目的。

7.daili模式 Proxy

为其他对象提供一种daili,并由daili对象控制对原对象的引用,以间接控制对原对象的访问。


7、当我们需要所有线程都执行到某一处,才进行后面的的代码执行我们可以使用?

正确答案: B 你的答案: B (正确)

CountDownLatch

CyclicBarrier

Semaphore

Future


题解:

CountDownLatch 是等待一组线程执行完,才执行后面的代码。此时这组线程已经执行完。

CyclicBarrier 是等待一组线程至某个状态后再同时全部继续执行线程。此时这组线程还未执行完。


8、假设 a 是一个由线程 1 和线程 2 共享的初始值为 0 的全局变量,则线程 1 和线程 2 同时执行下面的代码,最终 a 的结果不可能是()

boolean isOdd = false;

for(int i=1;i<=2;++i)

{

if(i%2==1)isOdd = true;

else isOdd = false;

a+=i*(isOdd?1:-1);

}

正确答案: D 你的答案: D (正确)

-1

-2

0

1


题解:

不管怎样线程对a的操作就是+1后-2

1.线程1执行完再线程2执行,1-2+1-2=-2

2.线程1和2同时+1,再-2不同时,1-2-2=-3

3.线程1和2不同时+1,同时-2,1+1-2=0

4.线程1和2既同时+1又同时-2,1-2=-1

没有结果为1的情况


9、下面哪个流类不属于面向字符的流()

正确答案: B C 你的答案: B C (正确)

BufferedWriter

FileInputStream

ObjectInputStream

InputStreamReader


题解:

既然是字符流,那么就是reader和writer结尾,那么就选BC了

1.png


10、以下JAVA程序的运行结果是什么( )

public static void main(String[] args) {

Object o1 = true ? new Integer(1) : new Double(2.0);

Object o2;

if (true) {

o2 = new Integer(1);

} else {

o2 = new Double(2.0);

}

System.out.print(o1);

System.out.print(" ");

System.out.print(o2);

}

正确答案: D 你的答案: D(正确)

1 1

1.0 1.0

1 1.0

1.0 1


题解:

三元操作符类型的转换规则:

1.若两个操作数不可转换,则不做转换,返回值为Object类型

2.若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换,int类型转换为long类型,long类型转换为float类型等。

3.若两个操作数中有一个是数字S,另外一个是表达式,且其类型标示为T,那么,若数字S在T的范围内,则转换为T类型;若S超出了T类型的范围,则T转换为S类型。

4.若两个操作数都是直接量数字,则返回值类型为范围较大者符合4,所以选D


答案汇总:

1、正确答案: B

2、正确答案: C

3、正确答案: B

4、正确答案: D

5、正确答案: D

6、正确答案: A

7、正确答案: B

8、正确答案: D

9、正确答案: B C

10、正确答案: D


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

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