0
点赞
收藏
分享

微信扫一扫

Java学习记录——错题总结(三)

dsysama 2022-03-11 阅读 35

第一套

1.编译java程序的命令文件是( )
B
A. java.exe
B. javac.exe
C. applet.exe

javac.exe是编译功能javaCompiler
java.exe是执行程序,用于执行编译好的.class文件
javadoc.exe用来制作java文档
jdb.exe是java的调试器
javaprof.exe是剖析工具

2.在java中,无论在何处调用,使用静态属性必须以类名做前缀。

错误

如果是本类使用,可以直接就用静态变量名。

如果是其他类使用,可以使用类名来调用,也可以创建一个实例对象来调用。

如果静态变量所在的类是静态类,那么不管在本类里或者在其他外部类,都可以直接使用静态变量名。

3.我们在程序中经常使用“System.out.println()”来输出信息,语句中的System是包名,out是类名,println是方法名。

错误

System是java.lang中的类,out为System中的一个静态成员,out是java.io.PrintStream类的对象,而println()是java.io.PrintStream类的方法,所有可以调用类.静态方法.println()方法。

4.以下代码的输出的正确结果是

public class Test {
    public static void main(String args[]) {
        String s = "祝你考出好成绩!";
        System.out.println(s.length());
    }
}

8

s.length()最终得到的是字符数而不是字节数
中英文均视为一个字符,如果考虑字节数,一个中文字符占两个字节(GBK),若采用UTF-8则占三个字节。

5.根据以下接口和类的定义,要使代码没有语法错误,则类Hero中应该定义方法( )。

interface Action{  
    void fly();  
}
class Hero implements Action{  //……  }

正确答案:public void fly(){}

接口中方法默认为public abstract,实现接口的的类中的对应方法的可见性不能小于该接口方法的可见性,所以必须采用public。

6.知识点:构造函数不能被继承,只能被调用。子类默认调用父类的无参构造器,需要使用super()调用父类的有参构造器,且super()位于子类构造器的第一行。

7.检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。

package algorithms.com.guan.javajicu; 
public class Inc { 
    public static void main(String[] args) { 
       Inc inc = new Inc(); 
       int i = 0; 
       inc.fermin(i); 
       i= i ++; 
       System.out.println(i);
    
    } 
    void fermin(int i){ 
       i++; 
    } 
}

输出结果:0
参考以下四种情况

int i = 0;  
i++;
System.out.println(i);  //值为1    打印的是表达式的结果

int i = 0;  
++i;
System.out.println(i);  //值为1     打印的是表达式的结果 

int i = 0;  
i = i++;
System.out.println(i);  //值为0      打印的是中间变量(JVM中间缓存变量机制)

int i = 0;  
i = ++i;
System.out.println(i);  //值为1    打印的是表达式的结果

第二套

1.关于Java以下描述正确的有( )
正确答案: A
A.native关键字表名修饰的方法是由其它非Java语言编写的
B.能够出现在import语句前的只有注释语句
C.接口中定义的方法只能是public
D.构造方法只能被修饰为public或者default

B:前面可以出现用于声明包的package
C.接口方法的修饰符可以是:public,abstract,default,static(后两者需要有{}),C正确
D:构造方法可以用private,protected,default,private,D错误

2.下面有关 Java ThreadLocal 说法正确的有?
正确答案: A B C D
A.ThreadLocal存放的值是线程封闭,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递
B.线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收
C.在Thread类中有一个Map,用于存储每一个线程的变量的副本。
D.对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式

第三套

1.下面代码将输出什么内容:()

public class SystemUtil{
    public static boolean isAdmin(String userId){
        return userId.toLowerCase()=="admin";
    }
    public static void main(String[] args){
        System.out.println(isAdmin("Admin"));
    }
}

在源码中 toLowerCase 是重新 new String()
== 是比较对象是否是同一个对象,所以为 false 。

2.以下哪些继承自 Collection 接口()

正确答案: A B
List
Set
Map
Array

collection接口有哪些?:

  1. list接口
    list中:ArrayList、LinkedList、Vector
  2. set接口
  3. queue接口
  4. sortedset接口:单值排序接口

map接口有哪些?:
后接map或者table的
1.HashMap:无序、key不重复
2.HashTable:无序、key不重复 线程安全
3.TreeMap:按key排序 key不重复
4.IdentityHashMap:key可重复
5.WeakHashMap:弱引用map集合

3.关于下面这段Java程序,哪些描述是正确的:( )

public class ThreadTest extends Thread {
    public void run() {
        System.out.println("In run");
        yield();
        System.out.println("Leaving run");
    }
    public static void main(String []argv) {
        (new ThreadTest()).start();
    }
}

正确答案: C
程序运行输出只有In run
程序运行输出只有Leaving run
程序运行输出先有In run后有Leaving run
程序运行输出先有Leaving run后有In run
程序没有任何输出就退出了
程序将被挂起,只能强制退出

这道题考察Thread.yield()方法
作用为:暂停当前正在执行的线程对象,执行其他线程

本题中只有一个线程,采用Thread.yield()方法也不会有效果。

4.下列哪些方法是针对循环优化进行的
正确答案: A B D
强度削弱
删除归纳变量
删除多余运算:会自动优化
代码外提

5.于ThreadLocal类 以下说法正确的是
正确答案: D E
ThreadLocal继承自Thread:并不是
ThreadLocal实现了Runnable接口:并不是
ThreadLocal重要作用在于多线程间的数据共享:重在数据的独立

ThreadLocal是采用哈希表的方式来为每个线程都提供一个变量的副本
ThreadLocal保证各个线程间数据安全,每个线程的数据不会被另外线程访问和破坏

举报

相关推荐

0 条评论