Java经典笔试题—day09

简介: Java经典笔试题—day09

🔎选择题

(1)下面程序的输出是 ( )

String x=“fmn”;

x.toUpperCase();

String y=x.replace(‘f’,‘F’);

y=y+“wxy”;

System.out.println(y);

A.FmNwxy

B.fmnwxy

C.wxyfmn

D.Fmnwxy

D

toUpperCase() 方法会返回一个字符串作为转换成大写字母后的结果

x.toUpperCase() 只是调用该方法, 并没有去接受返回值, 所以 x 的值依然是 “fmn”

字符串 y 将 x 中的 f 替换为 F, 拼接 wxy, 输出 Fmnwxy

(2)在 java 中,一个类可同时定义为许多同名的方法,这些方法的形式参数个数,类型或顺序各不相同,传回的值可能各不相同,这种面向对象的特性称为()

A.隐藏

B.覆盖

C.重载

D.无此特性

C

重载的特性

方法名相同, 参数列表不同(参数的类型, 参数的个数, 参数的顺序), 返回值不做要求

(3)关于 JAVA 的堆,下面说法错误的是()

A.所有类的实例和数组都是在堆上分配内存的

B.对象所占的堆内存是由自动内存管理系统回收

C.堆内存由存活和死亡的对象,空闲碎片区组成

D.数组是分配在栈中的

D

A. 类的实例化和数组的开辟都是需要 new 的, 因此都是在堆上分配内存的

B. 对象所占的堆内存是由自动内存管理系统回收

C. 堆内存由存活和死亡的对象,空闲碎片区组成

D. 数组分配在堆中

(4)一个以“.java”为后缀的源文件 ( )

A.只能包含一个public类,类名必须与文件名相同

B.只能包含与文件名相同的public类以及其中的内部类

C.只能有一个与文件名相同的public类,可以包含其他非public类(不考虑内部类)

D.可以包含任意public类

C

A. 没考虑内部类

B. 还能包含其他的类

D. 只能包含一个 public 类(不考虑内部类)

(5)JAVA 语言的下面几种数组复制方法中,哪个效率最高?

A.for循环逐一复制

B.System.arraycopy

C.Arrays.copyOf

D.使用clone方法

B

执行效率

System.arraycopy() > Object.clone() > Arrays.copyof() > for

(6)()仅包含方法定义和常量值

A.接口

B.变量

C.单元

D.成员

A

接口是一种规范, 需要类去实现接口中的方法, 因此接口中仅包含方法的定义和常量值

(7)对文件名为Test.java 的 java 代码描述正确的是 ( )

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

实例化 Employee 类时, 由于 Employee 继承了 Person, 因此先去调用 Person 类的构造方法

系统提供的 super() 默认是无参数的, 而 Person 类的构造方法需要参数, 因此编译报错

(8)有关下述 Java 代码描述正确的选项是 ( )

public class TestClass {
   private static void testMethod(){
        System.out.println("testMethod");
   }
   public static void main(String[] args) {
        ((TestClass)null).testMethod();
   }
}

A.编译不通过

B.编译通过,运行异常,报NullPointerException

C.编译通过,运行异常,报IllegalArgumentException

D.编译通过,运行异常,报NoSuchMethodException

E.编译通过,运行异常,报Exception

F.运行正常,输出testMethod

F

testMehod() 被 static 修饰, 属于静态方法, null 被强转为 TestClass 类, 因此可以调用 testMethod() 方法

(9)下列 java 程序的输出结果为 ( )

public class Example{
    String str=new String("hello");
    char[]ch={'a','b'};
    public static void main(String args[]){
        Example ex=new Example();
        ex.change(ex.str,ex.ch);
        System.out.print(ex.str+" and ");
        System.out.print(ex.ch);
    }
    public void change(String str,char ch[]){
        str="test ok";
        ch[0]='c';
    }
}

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

change() 方法是引用传递

进入 change() 方法的形参 str 最初指向的是 “hello” 的地址

当执行到 str = “test ok” 时, 形参 str 指向的是 “test ok” 的地址

而实参 str 仍然指向的是 “hello” 的地址

ch[0] = ‘c’ 是将 ch 所指向地址的值进行了修改, 即 char[] ch = {‘c’, ‘b’}

但 ch 所指向的对象未发生改变

(10)在jdk1.5之后,下列 java 程序输出结果为 ( )

int i=0;

Integer j = new Integer(0);

System.out.println(i==j);

System.out.println(j.equals(i));

A.true,false

B.true,true

C.false,true

D.false,false

E.对于不同的环境结果不同

F.程序无法执行

B

基本类型和包装类型进行 == 比较时, 包装类型会自动拆包变为基本类型再去进行比较, 因此 Integer(0) 会变为 int j = 0 再去进行 == 比较, 结果为 true

两个 Integer 类型进行 == 比较, 如果其值在 -128 ~ 127(闭区间), 返回 true. 否则返回 false

两个包装类进行 equals() 比较, 首先会判断类型是否相同, 如果类型相同, 则继续比较值, 如果值相同, 则返回 true

🔎编程题

🥝另类加法


题目描述

给定两个int A和B。编写一个函数返回A+B的值,但不得使用+或其他算数运算符

解题思路

  • 通过异或与按位与进行操作
  • 异或表示无进位相加
  • 按位与表示两数相加后需要进位的部分
  • << 1 表示将需要进位的部分进1位
  • 当按位与的结果为0, 此时异或的结果就是最后的答案(因为需要进位的没有了)

public static int addAB(int A, int B) {
        // write code here
        int Eor = A;
        while(B != 0) {
            Eor = A ^ B;
            B = (A & B) << 1;
            A = Eor;
        }
        return Eor;
}

📢题目链接

链接: link


🥝走方格的方案数


题目描述

请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)从棋盘左上角出发沿着边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。

注:沿棋盘格之间的边缘线行走

输入描述

输入两个正整数n和m,用空格隔开。(1≤n,m≤8)

输出描述

输出一行结果

解题思路

采用递归求解

//走方格的方案数
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(scan.hasNextInt()) {
            int n = scan.nextInt();//横向(行)
            int m = scan.nextInt();//纵向(列)
            int ret = getRet(n,m);
            System.out.println(ret);
        }
    }
    private static int getRet(int n,int m) {
        if((n == 1 && m >= 1) || (n >= 1 && m == 1)) return n + m;
        int bottomArea = getRet(n - 1, m);
        int rightArea = getRet(n, m - 1);
        return rightArea + bottomArea;
    }
}

📢题目链接

链接: link


🔎结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍

大家有什么不太理解的,可以私信或者评论区留言,一起加油

相关文章
|
6月前
|
存储 安全 Java
冒死潜入某个外包公司获得的珍贵Java基础笔试题(附答案)
冒死潜入某个外包公司获得的珍贵Java基础笔试题(附答案)
164 0
|
3月前
|
存储 Java 编译器
刷完一千道java笔试题的常见题目分析
这篇文章是关于刷完一千道Java笔试题后的常见题目分析,涵盖了Java基础知识点,如标识符命名规则、抽象类与接口的区别、String类的equals方法、try-catch-finally块的执行逻辑、类与实例方法的区别、this与super关键字的用法、面向对象的基本概念、重写与重载的原则等,并建议结合JVM内存结构图加深理解。
刷完一千道java笔试题的常见题目分析
|
6月前
|
SQL Java 数据库连接
Java笔试题
Java笔试题
|
SQL 存储 数据管理
Java经典笔试题—day13
Java经典笔试题—day13
112 0
|
机器学习/深度学习 SQL 关系型数据库
Java经典笔试题—day14
Java经典笔试题—day14
Java经典笔试题—day12
Java经典笔试题—day12
|
算法 Java 数据库
Java经典笔试题—day11
Java经典笔试题—day11
|
存储 安全 Java
Java经典笔试题—day10
Java经典笔试题—day10
182 0
|
存储 机器学习/深度学习 Java
Java经典笔试题—day08
Java经典笔试题—day08
106 0
|
存储 Java 数据安全/隐私保护
Java经典笔试题—day07
Java经典笔试题—day07