文章目录
- 1. 单选
- 2. 编程
1. 单选
1. 下面程序的输出是:()
A : FmNwxy B :fmnwxy C :wxyfmn D : Fmnwxy
答案 : D , 这里主要考察 toUpperCase 和 replace 方法 , 注意点 : toUpperCase 方法 将小写字母转为大写字母并不会影响原字符串而是生成一个新的字符串.
2. 在 java 中,一个类可同时定义为许多同名的方法,这些方法的形式参数个数,类型或顺序各不相同,传回的值可能各不相同,这种面向对象的特性称为()
A : 隐藏 B : 覆盖 C : 重载 D :无此特性
答案 : C
A : java 中并没有 隐藏
B : 覆盖 其实就是 重写 , 子类继承 父类 ,将父类的方法进行了重写 , 重写 : 方法名相同 ,参数列表相同 (数据类型 ,个数 ,顺序) 返回值相同 (有一个特例,就是 返回值构成父子类).
C : 重载 : 方法名相同 , 参数列表不同 (数据类型, 个数, 顺序 ) , 返回值不做要求.
D : 根据题目 分析 很明显 有这个特性 ,这个特性就是 重载.
3. 关于 JAVA 堆,下面说法错误的是()
A 所有类的实例和数组都是在堆上分配内存的
B 对象所占的堆内存是由自动内存管理系统回收
C 堆内存由存活和死亡的对象,空闲碎片区组成
D 数组是分配在栈中的
答案 : D
A : 正确 , 类的实例 和 数组 都是通过 new 关键字 创建的 ,通过 new 关键字创建出来的都是分配在堆上的 .
这种静态初始化数组, jvm 会通过 new 来创建数组对象.
B : 正确
C :正确
D : 错误 数组分配在 堆上
4.一个以“.java”为后缀的源文件
A 只能包含一个public类,类名必须与文件名相同
B 只能包含与文件名相同的public类以及其中的内部类
C 只能有一个与文件名相同的public类,可以包含其他非public类(不考虑内部类)
D 可以包含任意public类
答案 : C
A : 一个 .java 为后缀的 源文件 ,可以包含 一个 public 修饰的类 (这个类名与 .java 名相同) ,还可以包含 其他类 (外部类,内部类) 所以 A 错误
B : 错误 , 看可以包含 外部类 .
C : 正确
D : 错误 只能包含一个 public 修饰的类
5. JAVA语言的下面几种数组复制方法中,哪个效率最高?
A for循环逐一复制 , B System.arraycopy ,C Arrays.copyOf , D 使用clone方法
答案 : B
A : for 循环逐一复制效率是最低的 , for的速度之所以最慢 是因为下标表示法每次都从起点开始询问道指定下标出,另外 就是它每一次循
环就要判断依次是否达到最大长度和进行一次额外的记录下标值的加法运算.
B : System.arraycopy 是比较推荐的方法 , 这个方法 针对非基本类型拷贝,拷贝的是对象,效率是非常高的
C : Arrays.copyOf
D : clone 方法 对于 对象来说是深拷贝 ,对于 数组来说是浅拷贝 , 它的效率要高于 Arrays.copyOf , 低于 System.arraycopy
总结 : System.arraycopy > Object.clone > Arrays.copyOf > for
如不不太清楚 clone 这个方法 ,可以看这个回顾一下
这篇文章关于 ,Cloneable 接口
6. ()仅包含方法定义和常量值。
A : 接口 B: 变量 C : 单元 D : 成员
答案 : A , 这里 B , C , D 都不符合实际 , 接口 是可以定义 方法 和常量值的.
7. 对文件名为Test.java的java代码描述正确的是()
这里先不放在 IDEA 上展示 ,因为放上去 一下就知道答案了
class Person {
String name = "No name";
public Person(String nm) {
name = nm;
}
}
class Employee extends Person {
String empID = "0000";
public Employee(String id) {
empID = id;
}
}
public class Test {
public static void main(String args[]) {
Employee e = new Employee("123");
System.out.println(e.empID);
}
}
A : 输出:0000 B : 输出:123 C 编译报错 D 输出:No name
答案 : C
8. 有关下述Java代码描述正确的选项是____。
A 编译不通过
B 编译通过,运行异常,报NullPointerException
C 编译通过,运行异常,报IllegalArgumentException
D 编译通过,运行异常,报NoSuchMethodException
E 编译通过,运行异常,报Exception
F 运行正常,输出testMethod
答案 : F , 本题 主要考察 static , 关于 static 修饰的方法 无论 new 多少个 实例对象, 被 static 修饰的 只有一份 , 属于类本身 , 这里 testMethod 方法 被 static 修饰 , 这个方法属于类的, 就可以直接通过类名.testMethod()
调用这个方法. ,我们这里将 null 强转为 Test2 就可以 通过 . 来调用 testMethod 方法
运行结果 :
关于 static 修饰的 方法 和变量 知识点
下列java程序的输出结果为____。
A hello and ab
B hello and cb
C hello and a
D test ok and ab
E test ok and cb
F test ok and c
答案 : B
10. 在jdk1.5之后,下列 java 程序输出结果为______。
A true,false
B true,true
C false,true
D false,false
E 对于不同的环境结果不同
F 程序无法执行
答案 : B
关于装箱拆箱相关知识
2. 编程
题目一 : 另类加法_牛客题霸_牛客网 (nowcoder.com)
图一 :
代码 :
题目二 : 走方格的方案数_牛客题霸_牛客网 (nowcoder.com)
解析 :
图一 :
图二 :
附上代码 :
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static int cnt = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
int[][] arr = new int[m + 1][n + 1];
dp(arr, 0, 0);
System.out.println(cnt);
}
private static void dp(int[][] arr, int i, int j) {
// 判断当前的 i , j 是否越界
if (i > arr.length || j > arr[0].length) {
return;
}
// 判断是否走到了 预期地点
if (i == arr.length - 1 && j == arr[0].length - 1) {
// 让 全局变量 ++
cnt++;
}
// 递归 走右边
dp(arr, i + 1, j);
// 递归 走下面
dp(arr, i, j + 1);
}
}
方法二 :
图一 :
图二 :
附上代码 :
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int cnt = dp(m, n);
System.out.println(cnt);
}
private static int dp(int m, int n) {
if (m == 1 && n >= 1 || n == 1 && m >= 1) {
return m + n;
}
return dp(m - 1, n) + dp(m, n - 1);
}
}