目录
一、选择题
二、编程题
2.1Fibonacci数列
2.2合法括号序列判断
一、选择题
1.JAVA属于( )。
A 操作系统
B 办公软件
C 数据库系统
D 计算机语言
计算机软件主要分为系统软件与应用软件两大类。系统软件主要包括操作系统、语言处理系统、数据库管理系统和系统辅助处理程序。应用软件主要包括办公软 件和多媒体处理软件。Java是一门面向对象编程语言,属于计算机语言。
所以正确答案是 D
2.类声明中,声明抽象类的关键字是 ( )
A public
B abstract
C final
D class
抽象类定义方法就是public abstract class 类名。abstract是声明抽象类的关键字,class是类名,public是权限修饰符,final是java中的一个关键字,意思为“恒定不变”。
所以正确答案是 B
3.在使用 interface 声明一个接口时,只可以使用()修饰符修饰该接口
A private
B protected
C 默认
D public
接口默认形式就是public interface class 类名
所以正确答案是 D
4.Math.round(11.5) 等于()
A 11
B 11.5
C 12
D 12.5
round方法意味着四舍五入,原则上是在数上加0.5然后向下取整
所以正确答案是 C
5.以下对继承的描述错误的是()
A Java中的继承允许一个子类继承多个父类
B 父类更具有通用性,子类更具体
C Java中的继承存在着传递性
D 当实例化子类时会递归调用父类中的构造方法
在继承关系中只允许一个子类继承一个父类,父类更具有通用性,子类更具体,Java中的继承存在着传递性,当实例化子类时会递归调用父类中的构造方法
所以正确答案是 A
6.在 java 中 , 一个类()
A 可以继承多个类
B 可以实现多个接口
C 在一个程序中只能有一个子类
D 只能实现一个接口
在java中一个类只能那个继承一个类,但是可以实现多个接口,并且一个程序中可以有多个子类。
所以正确答案是 B
7.关于以下程序代码的说明正确的
class HasStatic{
private static int x = 100;
public static void main(String args[ ]){
HasStatic hs1 = new HasStatic();
hs1.x++;
HasStatic hs2 = new HasStatic();
hs2.x++;
hs1=new HasStatic();
hs1.x++;
HasStatic.x--;
System.out.println( "x=" +x);
}
}
A 5行不能通过编译,因为引用了私有静态变量
B 10行不能通过编译,因为x是私有静态变量
C 程序通过编译,输出结果为:x=103
D 程序通过编译,输出结果为:x=102
x是私有静态变量,但是主方法在内的内部所以可以调用x,三个++一个--,所以最后的值为x+2。
所以正确答案是 D
8.以下 _____ 不是 Object 类的方法
A clone()
B finalize()
C toString()
D hasNext()
clone() 是Objcet的克隆方法,finalze() toString() hasNext()
所以正确答案是 D
9.下面哪一项不是 java 类访问权限控制关键字
A public
B this
C private
D protected
java的四大权限控制关键字:private(私有权限,类内部权限)<default(包访问权限,包内部可见)<protected(继承权限)<public(公开的,所有对象可见)
所以正确答案是 B
10.java 语言使用的字符码集是
A ASCII
B BCD
C DCB
D Unicode
Java语言使用的是Unicode字符集。而ASCII是国际上使用最广泛的字符编码。BCD是一种数字压缩存储编码方法。
所以正确答案是 D
二、编程题
2.1Fibonacci数列
Fibonacci数列是这样定义的: F[0] = 0 F[1] = 1 for each i ≥ 2: F[i] = F[i-1] + F[i-2] 因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。
创建一个fib方法用来寻找到大于和小于n的两个最接近的Fibonacci数列中的数。
然后在主方法中判断他们和n的差距最小的值。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
if (n == 1 || n == 0) {
System.out.println(0);
return;
}
int[] num = fib(n);
int a = Math.abs(num[0]-n);
int b = Math.abs(num[1]-n);
int c = Math.min(a,b);
System.out.println(c);
}
public static int[] fib(int n){
int[] num =new int[2];
num[0] = 0;
num[1] = 1;
while(num[1]<n){
int k = num[0]+num[1];
num[0] = num[1];
num[1] = k;
}
return num;
}
2.2合法括号序列判断
给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)。
首先判断一下特殊情况,如果n不是一个偶数那么字符串A一定不是合法括号串,然后对整个字符串进行遍历,需要利用到栈的后进先出原则,如果是 ( 那么就入栈,如果是)但是栈是空的那么就不是合法括号串,如果不是空则出栈即可,剩余的情况直接返回false,如果能进行到循环跳出并且栈为空,那么它是一个合法的括号串,那么返回true,如果不是空,证明还有 ( 没有配对,那么返回false。
public boolean chkParenthesis(String A, int n) {
if(n%2!=0){
return false;
}
Stack<Character> s = new Stack<>();
for (int i = 0; i < n; i++) {
char c = A.charAt(i);
if (c == '(') {
s.push(A.charAt(i));
} else if (c == ')') {
if (s.isEmpty()) {
return false;
}else{
s.pop();
}
} else {
return false;
}
}
if (s.isEmpty()) {
return true;
} else {
return false;
}
}