栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-09-27

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-09-27

牛客网每日一刷

1.下列符号中可以在 java 程序里表示单行注释的是( )
正确答案: C 你的答案: C (正确)

A.–

B.

C.//

D.
分析:B为Java的块注释;C为单行注释;D为文档注释,并写入javadoc文件;

2.下列表述错误的是?()
正确答案: D 你的答案: D (正确)

int是基本类型,直接存数值,Integer是对象,用一个引用指向这个对象。

在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过

封装的主要作用在于对外隐藏内部实现细节,可以增强程序的安全性

final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性。
分析:D选项final关键字不能修饰接口和抽象类,因为我们的抽象类和接口是定义功能(即能干什么),不关注实现的细节,它是用来让子类继承和实现的,而final修饰的类是不能被继承的所以它们不能搭配使用。

3. 假设 A 类有如下定义,设 a 是 A 类的一个实例,下列语句调用哪个是错误的?()

public class A

{

public int i;

static String s;

void method1(){}

static void method2(){}

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

System.out.println(a.i);

a.method1();

A.method1();

A.method2();

分析:因为a是A类的一个实例,所以它可以调用普通方法和变量,所以A,B是正确的,通过类名只能调用静态方法和静态变量,所以C是错误的。

4.执行如下程序,输出结果是( )
class Test
{
private int data;
int result = 0;
public void m()
{
result += 2;
data += 2;
System.out.print(result + " " + data);
}
}
class ThreadExample extends Thread
{
private Test mv;
public ThreadExample(Test mv)
{
this.mv = mv;
}
public void run()
{
synchronized(mv)
{
mv.m();
}
}
}
class ThreadTest
{
public static void main(String args[])
{
Test mv = new Test();
Thread t1 = new ThreadExample(mv);
Thread t2 = new ThreadExample(mv);
Thread t3 = new ThreadExample(mv);
t1.start();
t2.start();
t3.start();
}
}
正确答案: C 你的答案: C (正确)

0 22 44 6

2 42 42 4

2 24 46 6

4 44 46 6
分析:Test mv =newTest()声明并初始化,然后通过同步线程依次调用m()方法三次,所以按顺序执行即可,data 和result 每次加2,所以选C。

5. 以下程序段的输出结果为:
public class EqualsMethod
{
public static void main(String[] args)
{
Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.print(n1 == n2);
System.out.print(",");
System.out.println(n1 != n2);
}
}
正确答案: B 你的答案: B (正确)

false,false

false,true

true,false

true,true

分析:因为new 了2个Integer对象,分配了2个内存,==当它是基本类型比较时判断的是值是否相等;而当时引用类型时,比较的是地址和内容是否都相同,也就是判断是否为同一个对象。

  1. 下列语句中,正确的是
    正确答案: B 你的答案: B (正确)

float x=0.0

boolean b=3>5

、char c=“A”

double =3.14

分析:Java中小数默认是double类型,所以float型后面数值要加f;char 是字符,Java中为字符时用单引号引起来,D选项没有变量名哦。

7.下面有关JVM内存,说法错误的是?
正确答案: C 你的答案: D (错误)

程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的

虚拟机栈描述的是Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的

方法区用于存储JVM加载的类信息、常量、静态变量、以及编译器编译后的代码等数据,是线程隔离的

原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的

分析:暂时不会。

8.ResultSet中记录行的第一列索引为?
正确答案: C 你的答案: C (正确)

-1

0

1

以上都不是

分析:ResultSet数组是从1开始遍历。ResultSet是jsp,用来接收获取的数据库信息,查询时也是从第1列开始。

9.关于 java 的异常处理机制的叙述哪些正确?
正确答案: A B 你的答案: A B (正确)

不论程序是否发生错误及捕捉到异常情况,都会执行finally部分

当try区段的程序发生异常时,才会执行catch区段的程序

catch部分捕捉到异常情况时,才会执行finally部分

其它选项都不正确

分析:在异常内容中,try{}catch(){}finally{};finally块是无论如何都会去执行的,当try块中抛出异常时才会执行catch块内容,对于catch的异常,越小的子类异常要在前面的catch,因为父类在前它会直接捕获,子类就永远不可能捕获到。
还有我见过一个题挺好的,如try{throw 10;}catch(Exception e){}finally{};它会怎么执行呢;是执行完没有报错,还是编译出错,还是抛出10;答案是编译出错,为什么呢?我们要知道throw抛出的是异常对象,而int 是基本数据类型,不是对象,所以会编译出错。

10.以下程序执行后,错误的结果是()
public class Test {
private String name = “abc”;
public static void main(String[] args) {
Test test = new Test();
Test testB = new Test();
String result = test.equals(testB) + “,”;
result += test.name.equals(testB.name) + “,”;
result += test.name == testB.name;
System.out.println(result);
}
}

正确答案: A B C 你的答案: A B D (错误)

true,true,true

true,false,false

false,true,false

false,true,true

分析:还是一样test和testB是new出来的两个对象,分配了两个内存空间,Test类没有重写equals()方法,所以用的是object的equals()方法,它使用==比较的,也就是比较两个对象的地址,所以为false;
test.name.equals(testB.name) ,它俩都是Test的实例,所以调用的是name属性,test调用name时是第一次,所以常量池中没有“a,b,c”这个字符串,所以会创建String对象,拿到String对象的引用,而当testB再调用name属性时,发现常量池中已经有了这个String对象,所以它会拿到String对象的引用,所以结果为true;
test.name == testB.name,比较的是对象的地址;因为常量池有,所以两个实例的name属性指向的是同一个String对象,也就是同一个内存,所以结果为true。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270116.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号