0
点赞
收藏
分享

微信扫一扫

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

Xin_So 2022-04-01 阅读 62

第一套

1.JDK中提供的java、javac、jar等开发工具也是用Java编写的。

正确答案: A 你的答案: B (错误)

除了jre中的JVM不是用java实现的,jdk的开发工具包应该都是用java写的

2.character流和byte流的的说法错误的是
正确答案: A B D 你的答案: B D (错误)
每次读入的字节数不同
前者带有缓冲,后者没有。
前者是字符读入,后者是字节读入。
二者没有区别,可以互换。

字符流和字节流每次读入的字节数是不确定的,可能相同也可能不相同;字符流和字节流都有缓冲流

常识:

对于GBK编码标准,英文占用1个字节,中文占用2个字节
对于UTF-8编码标准,英文占用1个字节,中文占用3个字节
对于Unicode编码标准,英文中文都是2个字节。这也是为什么叫做unicode

Java的流操作分为字节流和字符流两种。
字节流与字符流主要的区别是他们的处理方式
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的。但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化
这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联。

在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的。
字节流---->字符流
字节流转化为字符流,实际上就是byte[]转化为String时,
public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang
字符流---->字节流

第二套

public class IfTest{
    public static void main(String[]args){
        int x=3;
        int y=1;
        if(x=y)
            System.out.println("Not equal");
        else
            System.out.println("Equal");
     }
}

下面结果输出是?

正确答案: C 你的答案: B (错误)
The output is “Equal”
The output in “Not Equal”
An error at line 5 causes compilation to fall.
The program executes but does not print a message.

这个题考查两个知识点。
1、Java中,赋值是有返回值的 ,赋什么值,就返回什么值。比如这题,x=y,返回y的值,所以括号里的值是1。
2、Java跟C的区别,C中赋值后会与0进行比较,如果大于0,就认为是true;而Java不会与0比较,而是直接把赋值后的结果放入括号。

if()语句括号中为比较表达式,返回值要么是true,要么是false,if(x=y)是将y赋值给x,但是数据类型是int类型的,编译不能通过。

2.通过HttpServletRequest. getParameter获取的参数.
正确答案: C 你的答案: A (错误)
总是采用UTF-8编码
总是采用lS08859-1编码
由客户端浏览器和Web容器配置共同决定编码
由服务器所在的操作系统决定编码

编码格式由浏览器决定,浏览器根据html中指定的编码格式进行编码,tomcat根据指定的格式进行解码,另外get请求和post请求对编码格式的处理也是不同的

3.关于java编译和运行命令叙述不正确的是? ( )

正确答案: A 你的答案: B (错误)
运行“java Scut.class”
运行“java Scut”
编译 Scut.java文件,使用“javac Scut.java”命令的输出文件是Scut.class
java这个命令的运行对象是Scut.class

A 错误 运行命令是 java + 你的 Java 程序的名字但是不加后缀 所以这道题错在多了 .class这个后缀
B 正确
C javac 是编译命令,后跟 你的 Java 程序名字加后缀,也就是 YourClassName.java 所以答案正确
D JVM (Java 虚拟机)运行的是编译后的字节码文件(以.class为后缀的文件),也就是 YourClassName.class 所以答案正确

4。对于构造方法,下列叙述正确的是( )。
正确答案: A C D 你的答案: C D (错误)
构造方法的优先级一般比代码块低。
构造方法的返回类型只能是void型。
构造方法的主要作用是完成对类的对象的初始化工作。
一般在创建新对象时,系统会自动调用构造方法。

A:静态成员变量或静态代码块>main方法>非静态成员变量或非静态代码块>构造方法
B:think in java中提到构造器本身并没有任何返回值。
C: 构造方法的主要作用是完成对类的对象的初始化工作。
D: 一般在创建(new)新对象时,系统会自动调用构造方法。

第三套

1.假如某个JAVA进程的JVM参数配置如下:
-Xms1G -Xmx2G -Xmn500M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=3,
请问eden区最终分配的大小是多少?
正确答案: C 你的答案: B (错误)
64M
500M
300M
100M

先分析一下里面各个参数的含义:
-Xms:1G , 就是说初始堆大小为1G
-Xmx:2G , 就是说最大堆大小为2G
-Xmn:500M ,就是说年轻代大小是500M(包括一个Eden和两个Survivor)
-XX:MaxPermSize:64M , 就是说设置持久代最大值为64M
-XX:+UseConcMarkSweepGC , 就是说使用使用CMS内存收集算法
-XX:SurvivorRatio=3 , 就是说Eden区与Survivor区的大小比值为3:1:1
题目中所问的Eden区的大小是指年轻代的大小,直接根据-Xmn:500M和-XX:SurvivorRatio=3可以直接计算得出
500M*(3/(3+1+1))
=500M*(3/5)
=500M*0.6
=300M
所以Eden区域的大小为300M。

2.Java8中,下面哪个类用到了解决哈希冲突的开放定址法
正确答案: C 你的答案: A (错误)
LinkedHashSet
HashMap
ThreadLocal
TreeMap

threadlocalmap使用开放定址法解决hash冲突,hashmap使用链地址法解决hash冲突

举报

相关推荐

0 条评论