1. 单选
1. 下列运算符合法的是( )
A : && B: <> C: if D : =
答案 : A , && 与运算符 , <> 指定泛型的值 , if 条件 语句 , = 赋值
2. 下面代码运行结果是 ()
A catch语句块 和是:43
B 编译异常
C finally语句块 和是:43
D 和是:43 finally语句块
答案 : C
3. 下列Java代码中的变量a、b、c分别在内存的____存储区存放。
A 堆区、堆区、堆区
B 堆区、栈区、堆区
C 堆区、栈区、栈区
D 堆区、堆区、栈区
E 静态区、栈区、堆区
F 静态区、栈区、栈区
答案 : C
4. 以下声明合法的是
A default String s
B public final static native int w( )
C abstract double d
D abstract final double hyperbolicCosine( )
答案 : B
A : default String s , default 不是一个访问权限限定符
复习一下 访问权限修饰符 :
- public : 修饰的成员变量 或者 方法,可以直接被其他类的调用者使用
- private : 是实现封装的关键字 ,被 private 修饰的成员变量或成员方法,不能被其他类的调用者使用
- default : 包访问权限 ,在类中一般不写, 这里为了对标其他访问权限才写的 , 简单来说 我们想要这个成员变量 或成员方法是 具有包访问权限 只需要 String name = “xxx” 即可
- proteced : 对于 类 的 子类(包含了 不同 包 和 同一个 包 ) 和 同一个包的 其他 类 来说 ,protected 修饰的字段和 方法是 可以 访问 的
B : public final static native int w() , 是正确的 注意 : 这里被 final 修饰 是不能被重写的.
C : abstrace double d, 这里 abstrace 是定义抽象类的关键字 , 这想要通过 abstrace 定义一个变量是不能的 。
关于抽象类不太熟可以看这个
D :这里想要通过 abstract 定义一个抽象方法 ,但是它加上了 一个 final , 关于我们的抽象类 被创建出来的意义就是用来继承的 ,里面的抽象方法就是用来重写的, 如果 加上了 final 就会让方法不能重写 此时就违背了 抽象方法的本意 ,那么肯定会报错.
5. 在使用super 和this关键字时,以下描述正确的是
A 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B super()和this()不一定要放在构造方法内第一行
C this()和super()可以同时出现在一个构造函数中
D this()和super()可以在static环境中使用,包括static方法和static语句块
答案 : A
关于 super 和 this 不熟悉可以看这个 : 继承 Inheritance_
A :正确
B : super() 和 this() 一定需要放在 构造方法内的第一行 .
C : super() 和 this() 两个 都是放在 第一行,如果两个同时出现,就会出问题 , 所以 C 是错误的
D : super() 和 this () 不能在 static 环境下使用,被 static 修饰的 方法 或 变量 都只有一份 ,属于类本身的 ,this() 和 super() 是在 new 类
的时候使用, 即创建类的时候调用 , 如果在 static 环境下 能使有 this() 或 super () , 那么 this () 和 super 是只有一个 还是多个呢 ? 此时
就自相矛盾了.
下面代码的输出结果是什么?
A 3 B 123 C 1 D 12
答案 : D
7. 有代码片段如下:
byte b1=1,b2=2,b3,b6;
final byte b4=4,b5=6;
b6=b4+b5;
b3=(b1+b2);
System.out.println(b3+b6);
关于上面代码片段叙述正确的是()
A 输出结果:13
B 语句:b6=b4+b5编译出错
C 语句:b3=b1+b2编译出错
D 运行期抛出异常
答案 : C
8. 以下java程序代码,执行后的结果是()
A Fred
B true
C 编译错误
D 运行时抛出异常
答案 : B
9. 执行以下程序后的输出结果是()
A : A,A
B : A,B
C : B,B
D : AB,B
答案 : D
10. 下面所示的java代码,运行时,会产生()类型的异常
int Arry_a[] = new int[10];
System.out.println(Arry_a[10]);
A ArithmeticException
B NullPointException
C IOException
D ArrayIndexOutOfBoundsException
答案 : D , 这里很明显 是数组越界异常 , 创建了一个 10 个大小的 数组 ,最大的下标是 9 , 而 访问的 是 Array_a[10] , 肯定是越界了
2. 编程题
题目一 : 井字棋__牛客网 (nowcoder.com)
图 :
附上代码 :
import java.util.*;
public class Board {
public boolean checkWon(int[][] board) {
// write code here
// 记录行
int cnt = 0;
// 记录列
int cnt2 = 0;
// 记录左对角线
int cnt3 = 0;
// 记录 右对角线
int cnt4 = 0;
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
// 1. 考虑行
cnt += board[i][j];
// 2. 考虑列
cnt2 += board[j][i];
// 3. 考虑左对角线
if (i == j) {
cnt3 += board[i][j];
}
if (i + j == 2) {
cnt4 += board[i][j];
}
}
// 判断是否获胜
if (cnt == 3) {
return true;
}
if (cnt2 == 3) {
return true;
}
if (cnt3 == 3) {
return true;
}
if (cnt4 == 3) {
return true;
}
}
// 此时说明平局
return false;
}
}
题目二 : 密码强度等级_牛客题霸_牛客网 (nowcoder.com)
代码 :
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
// 1. 密码长度
Scanner sc = new Scanner(System.in);
String str = sc.next();
if (str.length() < 0 || str.length() > 300) {
System.out.println("错误密码");
return;
}
// 1. 判断 密码长度
int cnt = 0;
if (str.length() <= 4) {
cnt += 5;
} else if (str.length() <= 7) {
cnt += 10;
} else {
// >= 8
cnt += 25;
}
int cntSz = 0;
int cntZf = 0;
// 大写字母
int zmD = 0;
// 小写字母
int zmX = 0;
// 判断密码中含有的东西 :
for (int i = 0; i < str.length(); i++) {
char a = str.charAt(i);
// 含有数字
if (a >= '0' && a <= '9') {
cntSz++;
} else if (a >= 'a' && a <= 'z') {
// 含有了 小写
zmX++;
} else if (a >= 'A' && a <= 'Z') {
// 含有了 大写
zmD++;
} else {
// 含有字符
cntZf++;
}
}
// 判断字母 :
if (zmX + cntSz + cntZf == str.length()) {
// 此时全是小写
cnt += 10;
} else if (zmD + cntSz + cntZf == str.length()) {
cnt += 10;
} else if (zmD + cntSz + cntZf + zmX == str.length()) {
cnt += 20;
}
// 判断数字 :
if (cntSz == 1) {
cnt += 10;
} else if (cntSz > 1) {
cnt += 20;
}
// 判断字符
if (cntZf == 1) {
cnt += 10;
} else if (cntZf > 1) {
cnt += 25;
}
// 奖励
if (cntSz != 0) {
// 此时说明 有小写 有大写 有数字有字符
if (zmD != 0 && zmX != 0 && cntZf != 0) {
cnt += 5;
// 此时有 纯大写 或 纯小写 和 字符
} else if ((zmD == 0 || zmX == 0) && cntZf != 0) {
cnt += 3;
} else {
// 此时只有数字 和 字母
cnt += 2;
}
}
if (cnt >= 90) {
System.out.println("VERY_SECURE");
} else if (cnt >= 80) {
System.out.println("SECURE");
} else if (cnt >= 70) {
System.out.println("VERY_STRONG");
} else if (cnt >= 60) {
System.out.println("STRONG");
} else if (cnt >= 50) {
System.out.println("AVERAGE");
} else if (cnt >= 25) {
System.out.println("WEAK");
} else {
System.out.println("VERY_WEAK");
}
}
}