java 考试易考识记题目(一)

2020年3月28日 2078点热度 0人点赞 0条评论
内容纲要

笔者擅长 C# 语言,4月份要考试,学习 JAVA 是为了考试罢了。
如何在最短时间内学习 JAVA 基础语法和通过考试考核呢~
学习 JAVA ,要为了应付考试,判断、循环这部分,C、C++、C#、JAVA 都是一样的,不需要重复学习。
基础语法上,C++ 跟 C# 接近,例如命名空间(namespace)、继承(:)。
高级语法 JAVA 跟 C# 接近,很多 API 甚至名字都一样。
笔者在学习和完成试卷练习时,将具有代表性的 JAVA 题目抽取出来,集中复习和了解习题的套类,这样最短时间能够通过考试,并且拿到高分。
啦啦啦啦啦~
注:以下题目内容从往年试题或者互联网中获取而来,侵删!

1,java语言最初的应用对象是 消费级电子产品
最初设计时,是为了应用到电子游戏机、电视机机顶盒等电子产品。

2,Java SDK 的核心中,解释器所对应的可执行文件是 java.exe
javac.exe 用于编译 .java 源文件,java.exe 用于解释执行编译后的程序。



3, 联编 是将发送给对象的消息与执行该消息方法的对象连接起来。
联编分为静态联编和动态联编。静态联编在编译时处理(就是平时的代码);动态联编,事先不确定实例化的对象类型,在编译后才确定。
动态联编用于在运行时,才确定需要的实例。
父类A,子类B、子类C。

public void Test( string str )
{
    A a;
    if ( str == "B" )
        a = new B();
}else if ( str == "C" )
{
    a = new C();
}else
    return;
}


4,java Date 时间字符串的默认顺序为 星期,月,日,小时,分,秒,年
格式如 Sat Mar 21 22:15:24 CST 2020


5, ((k-1)^k)&k 代表何种意义
答:取下非0整型变量k最右边为1的那一位。


6,super
java 中的 super 跟 c# 的 base一样。
java 称为 超类、子类;C# 称为 基类/父类、子类。

super 有多种作用:

  • 指定调用超类的哪个构造函数;
  • 访问被子类重写/覆盖的方法
  • 访问被子类隐藏的方法


7,&& 考核
阅读以下程序代码,写出程序的输出结果

    public static void main(String[] args) {
        int a, b, c;
        a = b = c = 1;
        boolean w;
        w = a++ > 1 && ++b > c++;
        System.out.println(a + "," + b + "," + c + "," + w);
    }

答案是 2,1,1,false
这题目有 误导 成分,咋一看,有 ++ii++ 这样的运行,实践上只需要运算 a++>1。原因在于 && 运算是从左到右,当左侧条件为 false 时,程序不会执行右侧的表达式了。


8,字符串等值
查看以下程序代码的输出

    public static void main(String[] args) {
        String a = new String("1");
        String b = new String("1");
        String aa = "1";
        String bb = "1";

        System.out.println(a == b);
        System.out.println(a == aa);
        System.out.println(aa == b);
        System.out.println(aa == bb);
    }

结果是

false
false
false
true

java 中,String 类型的 == 运算符,比较的是对象的引用。
不同的 new String() 对象,即使是相同的值,也不是同一个对象。

C# 中,string 类型 的 == 运算符经过了重写,比较的是字符串的值;

String aa = "1";String bb = "1"; 都是常量 1 ,没有 new,所以 == 的结果相同。

9,程序设计题
使用循环把26个大写英文字母按字典顺序存入一维数组,然后再使其逆序存放(不得使用另外的数组),最后再根据处理后的字符数组创建一个字符串,输出此字符串。编程完成以上要求。

解析:基础排序算法之一。刚开始时我想用冒泡算法解决。但是看到答案时,答案使用的是倒转的方法,过程更加简单。
原因在于 26 个字母已经是按顺序排序(乱序则使用冒泡算法),直接反转就行。

题目要求
循环存入26个字母(大写)的数组;
逆放(反转);
输出字符串;

第一步代码如下

        char a[] = new char[26];
        char c = 'A';
        for (int i = 0; i < 26; i++) {
            a[i] = (char) (c + i);
        }

第二步如下

        for (int i = 0; i < 13; i++) {
            char tmp = a[i];
            a[i] = a[25 - i];
            a[25 - i] = tmp;
        }

最后一步使用 String 的构造函数就行

        String str = new String(a);
        System.out.println(str);

10,程序设计题
编写用数组实现不超过200位的大整数的类 BigInteger,要求提供大整数的加运算。

解析:java 中,有 BigInteger 这个类,内部是对 int[] 的封装,可以表示任意长度的整数。
题目要求我们实现一个类似 BigInteger 的类。然后要实现 10 进制的 加法运算。
方法很多,而且不限定怎么写,能计算就行。
可以参考
https://wenku.baidu.com/view/6b050b976aec0975f46527d3240c844769eaa01b.html

痴者工良

高级程序员劝退师

文章评论