记录了一次JAVA笔试的部分题目及自己后续的理解
Posted taozi1115402474
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录了一次JAVA笔试的部分题目及自己后续的理解相关的知识,希望对你有一定的参考价值。
笔试一个小时一共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可以根据windows 和linux 而选择不同的换行方式 } //这份代码的返回结果为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<Integer> set = new TreeSet<>(); TreeSet<Integer> subSet = new TreeSet<>(); for (int i = 606; i < 613; 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<E>,该接口继承自SortedSet<E>,然后该方法返回的是集合中[fromElement,toElement]的所有元素,两个boolean为是否包含首尾 //public NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) { // return new TreeSet<>(m.subMap(fromElement, fromInclusive, toElement, toInclusive)); //}
以上是关于记录了一次JAVA笔试的部分题目及自己后续的理解的主要内容,如果未能解决你的问题,请参考以下文章