Java每日一练(7)
单选
1. JAVA属于( )。
A 操作系统
B 办公软件
C 数据库系统
D 计算机语言
答案 : java 是属于一门语言,是 计算可以识别的语言, 所以 答案 D
2. 类声明中,声明抽象类的关键字是 ( )
A public
B abstract
C final
D class
答案 : 本题也非常简单, 声明抽象类的关键字为 abstract , 所以答案 B ,
A : public 修饰访问限定符 表示公有的
C :final 表示常量 , 常数的意思,修饰类表示真个类不能被继承的,修饰方法表示真个方法不能重写的 , 修饰一个引用,引用指向的实例不能改变,但是实例的属性可以改变.
D :class 定义类的关键字 。
3. 在使用 interface 声明一个接口时,只可以使用()修饰符修饰该接口
A private
B protected
C private protected
D public
答案 : 这里 只能使用 public 来修饰接口, 所以答案选D
4. Math.round(11.5) 等于()
A 11
B 11.5
C 12
D 12.5
答案 : round 是一个数学上的函数 表示 四舍五入 , 这里的结果 ,就会以一个 int 或long 输出, 这里5 入 ,所以结果为 12 ,选 C
5. 以下对继承的描述错误的是()
A Java中的继承允许一个子类继承多个父类
B 父类更具有通用性,子类更具体
C Java中的继承存在着传递性
D 当实例化子类时会递归调用父类中的构造方法
答案 :
A : 错误 ,在java中不允许 一个子类继承多个父类
演示 : C 尝试继承 A 和 B 类
B :正确 ,父类代表这一个类型共同的特点 (对多个类中共性的抽取),子类可以在自己的类中加上自己特有的属性 。
C : 正确 ,
B 继承了 A , C 继承了 B , 此时 C 同样也可以拥有 A 的属性,这里就是 java继承中的传递性.
D :正确 , 在学习继承的时候,就重点说过,当我们 new 子类对象的时候,会先调用 子类的构造方法, 在调用子类的构造方法的时候,会先显示的帮助父类进行构造 (通过 super() , 注意 : 我们没写不代表没有,编译器会默认提供一个不带参数的构造方法),父类构造完成,才会轮到子类自己 .
6. 在 java 中 , 一个类()
A 可以继承多个类
B 可以实现多个接口
C 在一个程序中只能有一个子类
D 只能实现一个接口
答案 :
A :上面说过 ,所以错误 ,
B : 正确 , 我们的类是可以实现多个接口的,通过关键字 implements , 接口之间使用 逗号 隔开 .
C : 错误 ,一个类 可以派生出多个子类 。
这里的 B 和 C 都是 A 的子类
D : 错误 , 我们的类可以实现多个接口.
7. 关于以下程序代码的说明正确的
A 5行不能通过编译,因为引用了私有静态变量
B 10行不能通过编译,因为x是私有静态变量
C 程序通过编译,输出结果为:x=103
D 程序通过编译,输出结果为:x=102
答案 : 这里 x 被 static 修饰 是放在方法区的,只有一份, 我们不管new 多少个实例,调用 这个 x 都是同一份 ,所以 new hs1.x++ , x变为了 101 , hs2.x++ 变成了 102 , 再后来 又被 hs1.x++ 变成了103 , 最后 我们通过 类名进行调用 ,让x-- ,所以 最终 x = 102 ,
注意 : 被static 修饰的静态成员变量或方法我们一般推荐直接使用类名来调用 , 你看编译器上 通过 实例来调用的直接报警告也能证明 .
运行 得出结果 :
8. 以下 _____ 不是 Object 类的方法
A clone()
B finalize()
C toString()
D hasNext()
答案 : 如果不熟悉 Object 源码, 这道题就比较难选 ,下面观察 Object 的方法, 就能够发现 只有 D 是没有的。
这里 hashNext() ,是属于迭代器 Iterator
中的方法 。
9. 下面哪一项不是 java 类访问权限控制关键字
A public
B this
C private
D protected
答案 : 本题非常简单 B ,我们的访问权限修饰限定符 又 public ,protected ,default 包访问权限限定符(一般什么都不加) ,这里是为了与其他对标,才写了个 default
, private
this 当前的, 主要用法, 1.调用当前类 中的方法或变量,2.调用当前类的构造方法。
10. java 语言使用的字符码集是
A ASCII
B BCD
C DCB
D Unicode
A : ASCII 主要是 对 特殊字符 0 - 9 , 大小写字母 进行编码
B : BCD 对数字进行编码
C : DCB 不做讨论
D : Unicode , java 中使用的就是 Unicode .
简单了解 , 记住java 使用的 就是 Unicode 进行编码的即可.
Unicode又称为统一码、万国码、单一码,是国际组织制定的旨在容纳全球所有字符的编码方案,包括字符集、编码方案等,它为每种语言中的每个字符设定了统一且唯一的二进制编码,以满足跨语言、跨平台的要求。
编程题
题目一 : Fibonacci数列_牛客题霸_牛客网 (nowcoder.com)
附上代码 :
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
int n = in.nextInt();
int a = 0;
int b = 1;
int c = a + b;
while(c < n){
// 求出第一个大于 n 的斐波那契数
a = b;
b = c;
c = a + b;
}
// 此时 b 为 第一次大于 n 的上一个斐波那契数
int result = n - b < c - n ? n - b : c - n;
System.out.println(result);
}
}
题目二 :
代码如下 :
import java.util.*;
public class Parenthesis {
public boolean chkParenthesis(String A, int n) {
// write code here
// 创建我们的栈用于保存 ( 括号
Stack<Character> stack = new Stack<>();
for (int i = 0; i < A.length(); i++) {
char c = A.charAt(i);
if (c == '(') {
// ( 直接入栈
stack.push(c);
} else if (c == ')') {
// 此时 为 ) ,判断 栈是否为空 ,
// 为空 就是 ))) 这种情况 返回 false
if (stack.isEmpty()) {
return false;
}
// 此时不为空 , 出栈
stack.pop();
} else {
// 字母部分
return false;
}
}
// 走到这里 判断一下栈是否为空 ,防止出现 (((( ))) 这种情况
return stack.isEmpty() ? true : false;
}
}