1、运算符优先级问题,下面代码的结果是多少?

publicclassTest {publicstaticvoidmain(String[] args){ int k = 0; int ret = ++k + k++ + ++k + k; // ret的值为多少 System.err.println(ret); } }

解答:主要考察++i和i++的区别。++在前则先自增再赋值运算,++在后则先赋值再自增运算。因此,结果为8。

2、运算符问题,下面代码分别输出什么?

publicclass Test { public static void main(String[] args) { int i1 = 10, i2 = 10; System.err.println("i1 + i2 = " + i1 + i2); System.err.println("i1 - i2 = " + i1 - i2); System.err.println("i1 * i2 = " + i1 * i2); System.err.println("i1 / i2 = " + i1 / i2); } }

解答:主要考察两点,运算符的优先级、字符串与数字中的+为连接符号。

第一条中,都是相加,则从前到后的顺序运算,字符串与数字相加,连接为一个字符串,再与后面的数字相加,再次连接为字符串,因此结果为“i1 + i2 = 1010”。

第二条编译错误,字符串无法与数字用减号连接。

第三条、第四条中乘除的优先级高,会先运算,而后再与字符串连接,因此结果分别为:“i1 * i2 = 100”、“i1 * i2 = 1”。

3、下面代码的结果是什么?

publicclassTest { publicvoidmyMethod(String str) { System.err.println("string"); } publicvoidmyMethod(Object obj) { System.err.println("object"); } publicstaticvoidmain(String[] args) { Test t = new Test(); t.myMethod(null); } }

解答:这道题考察重载方法参数具有继承关系时的调用问题,还有对null的认识。如果是一般具有继承关系的对象分别作为参数,看对象的引用,如:

classA {}classBextendsA {}publicclassTest {publicstaticvoidmain(String[] args) { A b1 = new B(); B b2 = new B();get(b1);// Aget(b2);// B }publicstaticvoidget(A a) { System.out.println("A"); }publicstaticvoidget(B a) { System.out.println("B"); }}

这道题中,Object是一切类的父类,具有继承关系,那null是指向什么呢?null是任何引用类型的初始值,String和Object的初始值都是null,但是null会优先匹配引用类型参数为String的方法,因此这道题答案是string。假设这道题中还有其他同是引用类型的重载方法呢?如:

publicvoidmyMethod(Integer obj){ System.err.println("Integer"); }

如果是这样的话,调用这个方法传入参数null时会报错,他不知道选哪个方法进行匹配调用了。

4、假设今天是9月8日,下面代码输出什么?

publicclass Test { public static void main(String[] args) { Datedate = newDate(); System.err.println(date.getMonth() + " " + date.getDate()); } }

解答:这道题考察的是日期中获取的月份是从0开始的,因此会比我们日常的月份少1,这个题答案是8 8。

5、下面代码的输出结果是什么?

publicclassTest {publicstaticvoidmain(String[] args){ double val = 11.5; System.err.println(Math.round(val)); System.err.println(Math.floor(val)); System.err.println(Math.ceil(val)); } }

解答:这个是在考Math取整数的三种方法。round()是四舍五入取证,floor()是舍去小数位,ceil()是向上进一位。floor是地板ceil是天花板,一个在下,则舍去,一个在上,则向上进1。那是不是结果应该为12、11、12呢?还要考虑返回值类型,round()返回值类型为long长整型,floor()和ceil()返回值的是double类型,因此正确的答案应该是12、11.0、12.0。

6、编程输出一个目录下的所有目录及文件名称,目录之间用tab。

publicclassTest { publicstaticvoidmain(String[] args) { new Test().read("D:/test", ""); } publicvoidread(String path, String tab) { File file = new File(path); File[] childFiles = file.listFiles(); for (int i = 0; childFiles != null && i < childFiles.length; i++) { System.err.println(tab + childFiles[i].getName()); if (childFiles[i].isDirectory()) { read(childFiles[i].getPath(), tab + "\t"); } } } }

这个主要是考察IO部分知识点了。

7、从键盘读入10个整数,然后从大到小输出。

publicclassTest { publicstaticvoidmain(String[] args) { Scanner in = new Scanner(System.in); // 注意这里的数组,不是int的 Integer[] arr = new Integer[10]; for (int i = 0; i < 10; i++) { arr[i] = in.nextInt(); } Arrays.sort(arr, new Comparator() { @Override publicintcompare(Integer o1, Integer o2) { if (o1 > o2) return-1; if (o1 < o2) return1; return0; } }); System.err.println(Arrays.toString(arr)); } }

8、下面代码的结果是什么?

publicclassTestextendsBase{ publicstaticvoidmain(String[] args){ Base b = new Test(); b.method(); Test t = new Test(); t.method(); } @Overridepublicvoidmethod(){ System.err.println("test"); } } classBase{ publicvoidmethod()throws InterruptedException { System.err.println("base"); } }

解答:两次调用输出都是test。多态的情况下,尽管是父类的引用,调用方法时,还是调用子类的方法。

9、以下代码的结果是什么?

package test; publicclassTestextendsBase{ publicstaticvoidmain(String[] args){ new Test().method(); } publicvoidmethod(){ System.err.println(super.getClass().getName()); System.err.println(this.getClass().getSuperclass().getName()); } } classBase{ }

解答:第一个输出test.Test、第二个输出test.Base。super很容易让人以为也是调用了父类,实际上还是本类。

10、true or false?

public classTest{ public staticvoid main(String[] args) { String str1 = newString("abc"); String str2 = newString("abc"); System.err.println(str1.equals(str2)); StringBuffer sb1 = newStringBuffer("abc"); StringBuffer sb2 = newStringBuffer("abc"); System.err.println(sb1.equals(sb2)); } }

解答:第一个true,第二个false。String重写了Object中的equals方法,会将string拆分为字符数组,逐个比较各个字符,代码如下:

public boolean equals(Object anObject) {if (this == anObject) {returntrue; }if (anObject instanceof String) { String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])returnfalse; i++; }returntrue; } }returnfalse; }Object中的equests方法如下:public boolean equals(Object obj) {return (this == obj); }

11、输出的结果是什么?

publicclassTest { publicstaticvoidmain(String[] args) { System.err.println(new Test().method1()); System.err.println(new Test().method2()); } publicintmethod1() { int x = 1; try { return x; } finally { ++x; } } publicintmethod2() { int x = 1; try { return x; } finally { return ++x; } } }

解答:第一个返回1,第二个返回2。finally中的代码是一定会被执行的且在try中的代码执行完之后,因此若在其中return返回,会覆盖掉try中的返回值。

如果这样呢?

publicclassTest{ publicstaticvoidmain(String[] args){ System.err.println(method()); } publicstaticbooleanmethod(){ try { returntrue; } finally { returnfalse; } } }

很明显返回值应该为false。

12、方法m1和m2有区别吗?

解答:这里考察的是同步方法的问题。synchronized修饰方法时锁定的是调用该方法的对象。它并不能使调用该方法的多个对象在执行顺序上互斥,静态修饰符很有必要。因此当不适用静态时,创建多个对象执行该方法,锁都不一样,还同步什么呢,因此用static修饰后才能实现想要的效果。

13、true or false?

publicclassTest {publicstaticvoidmain(String[] args){ Integer i1 = 127; Integer i2 = 127; System.err.println(i1 == i2); i1 = 128; i2 = 128; System.err.println(i1 == i2); } }

解答:第一个为true,第二个为false。这个是对Integer包装类型中应用的享元模式的考察。

14、true or false?

publicclass Test { public static void main(String[] args) { String str1 = "a"; String str2 = "a"; String str3 = newString("a"); System.err.println(str1 == str2); System.err.println(str1 == str3); str3 = str3.intern(); System.err.println(str1 == str3); } }

解答:这个是对String Pool的考察。答案为true、false、true

15、true or false?

publicclassTest {publicstaticvoidmain(String[] args){ System.err.println(12 - 11.9 == 0.1); } }

解答:结果为false。这个题我只说下我的想法,12-11.9进行运算后会转换成对象,不在是基本数据类型,因此在进行恒等判断时,就会是false。

16、以下代码输出是什么?

publicclassTest { publicstaticvoidmain(String[] args) { BigInteger one = new BigInteger("1"); BigInteger two = new BigInteger("2"); BigInteger three = new BigInteger("3"); BigInteger sum = new BigInteger("0"); sum.add(one); sum.add(two); sum.add(three); System.out.println(sum.toString()); } }

解答:这个是对大整数的考察。结果是不是6呢?看起来好像没毛病,其实不然。sum.add(one)与我们基本类型的sum+=one可不同,前者不会讲结果赋值给sum对象,结果被赋值了这条语句的返回值。因此不管怎么add,sum对象的值是没有变化的,因此结果为0。

18、如何迭代Map容器?

*/

解答:0.

20、下面为一个单例的实现代码,请指出代码中有几个错误或不合理之处,并改正。

publicclassTest { public Test instance = null; publicstatic Test getInstance() { if (instance == null) { instance = new Test(); return instance; } } }

解答:单例模式要满足三点:1、私有化构造方法;2、创建私有静态对象;3、提供公有静态方法获取唯一实例。

因此错误包含,1构造函数没有私有化,2对象非私有静态,3获取实例的方法中return不应包含在条件中。

java代码题_精选20道Java代码笔试题相关推荐

  1. java正则题_牛客网java编程题整理(不定期更新)

    文章目录 190516 - 调整数组顺序使奇数位于偶数前面 题目 我的代码 高赞代码(via:海天一色) 190517 - 链表中倒数第k个结点 题目 我的代码 高赞代码(via:渡不过己) 1905 ...

  2. security面试_精选41 道 Spring Boot 面试题,附答案!

    今天跟大家分享下SpringBoot 常见面试题的知识. 1 什么是springboot ? 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件 ...

  3. python游戏代码五子棋_用20行Python代码实现2048小游戏,你会吗?

    前些天在b站上看到有个大佬用c写了一个2048小游戏,我便一下来了兴趣.心想着,我貌似也能用Python来整一波,话不多说,直接开搞. 2048的游戏规则: 2048游戏总共有16个格子,初始时会有两 ...

  4. 【Java刷题特辑第三期】——这些经典笔试题,你确定都做过吗?

    前言: 秋招在即,我们到底要刷多少题?才能进大厂 作者介绍:

  5. python删除符合条件的行_这十道经典Python笔试题,全做对算我输

    经常有小伙伴学了Python不知道是否能去找工作,可以来看下这十道题检验你的成果: 1.常用的字符串格式化方法有哪些?并说明他们的区别 a. 使用%,语法糖 print("我叫%s,今年%d ...

  6. 精选30道Java笔试题解答

    精选30道Java笔试题解答       都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进 ...

  7. 精选30道Java多线程面试题

    转载自 精选30道Java多线程面试题 1.线程和进程的区别 2.实现线程有哪几种方式? 3.线程有哪几种状态?它们之间如何流转的? 4.线程中的start()和run()方法有什么区别? 5.怎么终 ...

  8. Java编程题_面向对象和常用API01_B级

    Java编程题_面向对象和常用API01_B级 第1题 面向对象.异常.集合.IO 题干: 请编写程序,完成键盘录入学生信息,并计算总分将学生信息与总分一同写入文本文件 需求:键盘录入3个学生信息(姓 ...

  9. java笔试30_精选30道Java笔试题解答

    精选30道Java笔试题解答 1. 下面哪些是Thread类的方法() A start() B run() C exit() D getPriority() 答案:ABD 解析:看Java API d ...

最新文章

  1. 献给那些怀揣IT梦想的北漂一族
  2. ASP .NET Core Web MVC系列教程四:添加模型
  3. 【设计模式】备忘录模式
  4. python运行程序-一文看懂python程序的执行过程
  5. 计算 的程序java_数学表达式计算程序(java)
  6. docker自动部署
  7. Eclipse4.5 mars 配置Velocity插件
  8. 【英语学习】【Daily English】U12 E-World L02 All you have to do is download this taxi app
  9. JDK 15 正式发布,划时代的 ZGC 同时宣布转正!
  10. Python接口自动化之使用requests库发送http请求
  11. PayPal贝宝工商银行无法提现,怎么办?
  12. 1.9w粉丝带动近100w播放量,推广黑马不止一位
  13. LeCo-88.合并两个有序数组
  14. P35-前端基础-新闻列表
  15. 数据库常用增删改查sql语句(二)
  16. oracle中treat函数,PL/SQL Challenge 每日一题:2016-3-24 面向对象编程:向下转型TREAT...
  17. java国际象棋棋牌_用java画国际象棋棋盘
  18. Linux 各种top命令
  19. 操作系统--进程锁算法1(两个进程的锁)
  20. 智能优化算法:变色龙算法 -附代码

热门文章

  1. linux-文件的类型
  2. python-二级补充-idle的了解
  3. 递归和尾递归的区别和原理
  4. 三元表达式、列表推导式、生成器表达式、递归、内置函数、匿名函数
  5. Wannafly模拟赛2
  6. 关于js字符串替换的一道笔试题目
  7. ASP.NET MVC PartialView用法
  8. 关于nginx,你不可不知的几大特色功能
  9. 使用 javascript 标记高亮关键词
  10. VB100十月测试:360可牛凯歌高奏 金山失利瑞星缺席