记录了一次JAVA笔试的部分题目及自己后续的理解

2021-04-10 23:30

阅读:619

标签:字母   linux   span   boolean   new t   正确答案   格式   影响   sub   

笔试一个小时一共37个题,有单选多选最后2题程序设计。没有正确答案所以是按照我的理解写的,有问题希望各位大佬指出。

最后两个程序设计题1.整数翻转。2.合并数组。

总结:题目比较基础,做起来还算顺利,但在spring、epoll和select、会话跟踪、linux命令、dns上比较薄弱,后续会加强学习这些方面的知识。

//本题考察的是==和equals的区别,和string常量
String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x == y);//==号比较的是地址,但String类型常量存放在常量池中,取得时候直接去常量池取出数据比较
System.out.println(x == z);//z由于是一个引用对象,指向的是堆内存,所以不同
System.out.println(x.equals(y));//equals跟==的区别就是一个是比较值,一个是比较地址
System.out.println(x.equals(z));
//这份代码的返回结果为True False True True
//本题考察的是类型转换
public static void main(String[] args) {
    class Foo {
        public int i = 3;
    }
    Object o = (Object) new Foo();//根据Foo来创建一个Object对象。请注意此时o是Object类型的引用,不能根据o来访问Foo对象的field,比如这里的i
    Foo foo = (Foo) o;//将Object对象转型为Foo类型,并赋给引用foo。请注意这里并没有生成新对象,所以o==foo的结果是true。但是foo是一个Foo类型的引用,所以可以直接使用foo.i的方式来访问Foo对象的field
    System.out.println(foo.i);
}
//这份代码的返回结果为3
//本题考察的是包装类,==和equals的区别
Integer x = 128;
Integer y = 128;
Integer a = new Integer(128);
Integer b = new Integer(128);
System.out.println(x == y);//常量池[-128,127],若Integer的值在范围内则会直接返回常量池中的值,否则会new Integer()出一个对象
System.out.println(a == b);//比较的是地址不是值
System.out.println(x.equals(a));
//这份代码的返回结果为False False True
//本题考察的是try/catch/finally和return的关系
int add() {
    int a = 10;
    try {
        System.out.println(a / 0);//1.抛出异常
        a += 10;
    } catch (ArithmeticException e) {//2.catch到异常,此时a=20,执行return
        a += 10;
        return a;
    } finally {//3.执行return后暂存返回的内容后接着执行finally,最后return
        a += 10;
    }
    return a;
}
//这份代码的返回结果为20
//本题考察的知识点如上
public static void main(String[] args) {
    AtomicInteger A = new AtomicInteger(10);
    System.out.println(getA(A).get());
}

private static AtomicInteger getA(AtomicInteger A) {//传入引用,返回引用
    try {
        System.out.println(A.get() / 0);//1.抛出异常
        A.addAndGet(10);
    } catch (ArithmeticException e) {//2.catch住,A=20,return
        A.addAndGet(10);
        return A;
    } finally {//3.执行return后会暂存返回的内容后接着执行finally,最后return,这里因为返回的内容是引用,所以出现finally代码块中的修改有效
        A.addAndGet(10);
    }
    return A;
}
//这份代码的返回结果为30

//总结try/catch/finally和return的关系
//try和catch中的return先于finally,若finally块对返回值为引用类型的进行修改则会影响return的结果
//1.try中有return
//2.catch中有return
//3.finally中有return,注意finally中的return会覆盖try和catch的return,不建议写
//本题考察的是格式化日期
public static void main(String[] args) {
    Date date = new Date();
    System.out.printf("%tD%n", date);//首先%n和\n都是换行,但%n可以根据windows \r\n和linux \n而选择不同的换行方式
}
//这份代码的返回结果为07/22/20

//使用printf格式化日期,使用两个字母表示,它以%t开头并以下面的一个字母结尾
//c 包括全部日期和时间信息 星期三 七月 22 17:25:51 CST 2020
//F "年-月-日"格式 2020-07-22
//D "月/日/年"格式 07/22/20
//r "HH:MM:SS PM"格式(12时制)05:25:51 下午
//T "HH:MM:SS"格式(24时制)17:25:51
//R "HH:MM"格式(24时制)17:28
//本题考察的是TreeSet中的subSet方法
public static void main(String[] args) {
    TreeSet set = new TreeSet();
    TreeSet subSet = new TreeSet();
    for (int i = 606; i ) {
        if (i % 2 == 0) {
            set.add(i);
        }
    }
    subSet = (TreeSet)set.subSet(608, true, 611, true);
    set.add(629);
    System.out.println(set + " " + subSet);
}
//这份代码的返回结果为[606, 608, 610, 612, 629] [608, 610]
//TreeSet底层红黑树,实现了NavigableSet,该接口继承自SortedSet,然后该方法返回的是集合中[fromElement,toElement]的所有元素,两个boolean为是否包含首尾
//public NavigableSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) {
//  return new TreeSet(m.subMap(fromElement, fromInclusive, toElement, toInclusive));
//}

 

记录了一次JAVA笔试的部分题目及自己后续的理解

标签:字母   linux   span   boolean   new t   正确答案   格式   影响   sub   

原文地址:https://www.cnblogs.com/taozi1115402474/p/13363970.html


评论


亲,登录后才可以留言!