Java夯实基础 --》 练习题day01

Java夯实基础 --》 练习题day01

再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。
在这里插入图片描述

1.下面是findSum(int m.int n)方法的定义,方法调用findSum(1,5)的返回结果是( )

int findSum(int m, int n){
    int sum=0forint i=m;i<=n;i++{
        sum+=i;
    }
    return sum;
}

A.1
B.5
C.10
D.15

解析: 本题考察循环控制中的for循环
这题只是简单的考察for循环,没有什么难度,直接带入就好了。

for(int i = 1; i <= 5 ; i++){
sum += i;
}
即sum=1+2+3+4+5=15

正确答案:D

2.现有一变量声明为 boolean aa; 下面赋值语句中正确的是 ( )

A.aa=false;
B.aa=False;
C.aa=“true”;
D.aa=0;

解析: 本题考察基本数据类型中的boolean
boolean有两个值,一个是true,一个是false
显然除了A之外的其他赋值都是不合法的。
故选A
正确答案:A

3.以下关于Object类的说法正确的是()

A.Java中所有的类都直接或间接继承自Object,无论是否明确的指明,无论其是否是抽象类。
B.Java中的接口(interface)也继承了Object类
C.利用“==”比较两个对象时,Java调用继承自Object的equals方法,判断是否相等。
D.如果类的定义中没有重新定义toString()方法,则该类创建的对象无法使用toStrig()方法。

解析:本题考察所有类的超类Object类
接下来对各个选项逐个解析
A.Object类是所有类的超类,所有的类都继承自Object类,所以A是正确的。
B.Java中的接口不是继承Object类的。所以B是错误的。
C.前者比较的是两个对象引用的地址,而equals只是简单的比较两个对象的内容。前者是基本的运算符,并不会去调用equals方法,相反当调用equals方法时,反而会先通过==先去比较两个对象的地址是否相等,若不相等再去比较其内容。所以C是错误的。
D.所有的类都继承自Object类,在Object中定义了toString()方法,当一个类中没有重新定义toString()方法,该类创建的对象可以调用其父类的toString()方法。所以D是错误的。
正确答案:A

4.关于Java语言中的final关键字的使用,下列说法正确的是()

A.在使用final关键字定义的方法里面使用final关键字定义变量。
B.使用final关键字定义变量,必须在变量定义的同时给定变量的具体数值,完成变量初始化。
C.final关键字可以用来修饰方法,表明此方法不可以被子类重写。
D.使用final关键字定义变量,必须同时使用static关键字。

解析:本题考查final关键字
final关键字的主要用法如下:

1.用来修饰数据,包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时或者构造方法中对它赋值;
2.用来修饰方法参数,表示在变量的生存期中它的值不能被改变;
3.修饰方法,表示该方法无法被重写;
4.修饰类,表示该类无法被继承。

接下来对各个选项逐个解析
A.在使用final关键字定义的方法中不必要使用final定义变量,定义普通的变量也是合法的。所以A是错误的。
B.使用final关键字定义的变量,可以在声明时或者构造方法中对它赋值,并不是在定义变量的同时必须对其赋值。所以B是错误的。
C.final关键字可以用来修饰方法,表明此方法不可以被子类重写。所以C是正确的。
D.使用final关键字定义变量时,我们可以使用关键字static,也可以不使用。所以D是错误的。
正确答案:C

5.下列循环语句序列执行完成后,i的值是()

int i;
for(i=2;i<=10;i++){
System.out.println(i);
}

A.2
B.10
C.11
D.不确定

解析:本题考察的是循环控制的for循环
本题相较于第一题考察的更加深入了,我们需要了解for循环的执行顺序。

1.执行for循环体里的第一个表达式,将i初始化为2;
2.紧接着会执行第二个表达式,判断i是否小于等于10;
3.当第二个表达式为true时,会去执行循环体里的代码;
4.执行完循环体里的代码后,就会去执行for循环的第三个表达式也就是i++
5.当以上流程执行完成之后,进入非第一次执行循环时就不会执行for循环第一个参数了,而是直接去执行第二个参数里的判断表达式
6.然后再次判断第二个表达式为是否为true,若为true,执行循环体
7.然后再执行for循环的第三个参数

8.直到i<=10为False,结束循环

当i=10时,表达式2的值为true,执行循环体之后,执行表达式3使得i++等于11,此时再去判断表达式2的值已经为false了,循环结束,所以循环执行完之后i的值为11,故选C。
正确答案:C

6.JVM内存不包含如下哪个部分( )

A.Stacks
B.PC寄存器
C.Heap
D.Heap Frame

解析: 本题考察JVM的内存模型
在这里插入图片描述
如图,JVM内存中是没有Heap Frame的,故选D
正确答案:D

7.运行代码,结果正确的是:

Boolean flag = false;
if(flag = true){
System.out.println("true");
}else{
System.out.println("false");
}

A.编译错误
B.true
C.false
D.什么也没有输出

解析:本题考察的是条件语句和运算符
首先将flag赋值为false,if语句中的条件表达式flag = true将true赋值给flag,此时的flag的值为true,则顺序执行下面的语句System.out.println(“true”);
输出结果为true。故选B。
正确答案:B

8.以下哪个类包含方法flush()?()

A.InputStream
B.OutputStream
C.A 和B 选项都包含
D.A 和B 选项都不包含

解析:本题考察了IO流
对于本道题,首先我们得知道flush()这个函数是干嘛的。
flush()函数强制将缓冲区中的字符流、字节流等输出,目的是如果输出流输出到缓冲区完成后,缓冲区并没有填满,那么缓冲区将会一直等待被填满。所以在关闭输出流之前要调用flush()。
flush()是为输出流提供服务的,所以输出流OutputStream肯定包含了方法flush()。
而输入流InputStream则不需要。故选B。
正确答案:B

9.以下哪一个正则表达式不能与字符串“https://www.tensorflow.org/”(不含引号)匹配?()

A.[a-z]+://[a-z.]+/
B.https[: //]www[.]tensorflow[.]org[/]
C.[htps]+://www.tensorflow.org/
D.[a-zA-Z.: /]+

解析:本题考察的是正则表达式
本题考察的是正则表达式,那么我就需要对其有所了解。
规则罗列如下:

  1. 任意一个字符表示匹配任意对应的字符,如a匹配a,7匹配7,-匹配-。
  2. []代表匹配中括号中其中任一个字符,如[abc]匹配a或b或c。
  3. -在中括号里面和外面代表含义不同,如在外时,就匹配-,如果在中括号内[a-b]表示匹配26个小写字母中的任一个;[a-zA-Z]匹配大小写共52个字母中任一个;[0-9]匹配十个数字中任一个。
  4. 在中括号里面和外面含义不同,如在外时,就表示开头,如7[0-9]表示匹配开头是7的,且第二位是任一数字的字符串;如果在中括号里面,表示除了这个字符之外的任意字符(包括数字,特殊字符),如[^abc]表示匹配出去abc之外的其他任一字符。
  5. .表示匹配任意的字符。
  6. \d表示数字。
  7. \D表示非数字。
  8. \s表示由空字符组成,[ \t\n\r\x\f]。
  9. \S表示由非空字符组成,[^\s]。
  10. \w表示字母、数字、下划线,[a-zA-Z0-9_]。
  11. \W表示不是由字母、数字、下划线组成。
  12. ?: 表示出现0次或1次。
  13. +表示出现1次或多次。
  14. *表示出现0次、1次或多次。
  15. {n}表示出现n次。
  16. {n,m}表示出现n~m次。
  17. {n,}表示出现n次或n次以上。
  18. XY表示X后面跟着Y,这里X和Y分别是正则表达式的一部分。
  19. X|Y表示X或Y,比如"food|f"匹配的是foo(d或f),而"(food)|f"匹配的是food或f。
  20. (X)子表达式,将X看做是一个整体

拿到这一题,乍一看感觉都是对的,但是这个题目有个小小的陷阱。

[ : //]
[ ] 里面是不重复的,所以等价于[ : /]
那么在[: /]的后面并没有+号,只能匹配到其中的一个字符,那么对于://就不能匹配了,故选B。
正确答案:B

10.下面哪些类可以被继承? Java.lang.Thread、java.lang.Number、java.lang.Double、java.lang.Math、 java.lang.ClassLoader

A.Thread
B.Number
C.Double
D.Math
E.ClassLoader

解析:本题考察了一些常见的类的继承关系
这个没什么好讲的,罗列以下java.lang包中不能被继承的类:

public final class Byte
public final class Character
public static final class Character.UnicodeBlock
public final class Class
public final class Compile
public final class Double
public final class Float
public final class Integer
public final class Long
public final class Math
public final class ProcessBuilder
public final class RuntimePermission
public final class Short
public final class StackTraceElement
public final class StrictMath
public final class String
public final class StringBuffer
public final class StringBuilder
public final class System
public final class Void

在这里插入图片描述
点赞、收藏加关注,我两就是好朋友!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

难啊楠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值