zoukankan      html  css  js  c++  java
  • java中的那些坑

       最近准备换工作,为了少让人家鄙视,就要狠狠地藐视这些面试题目。找了本电子书,发了有好多坑,都是特别简单,但是很少有人做对的题目。面对这样的题目,我却有一种兴奋的感觉,也许是因为一直做着重复的工作没有新鲜感了,偶尔掉坑了还自得其乐来着。好了,言归正传,待我细细说来,欢迎拍砖啊。

    1.坑1,关于三目运算符

       先看题目:char x = 'x';System.out.println(true?120:x);请问输出结果是什么?

       我想大多数人的结果是120,而且还用很蔑视的态度回答,先不用着急,三目运算符,大家很熟悉的嘛,那你花几秒钟在命令行或者是编译器中执行下看看是什么结果,没错,就是x。是不是有种诧异的感觉,是不是觉得被带沟里去了?不知道大家感觉如何,反正我看到这个结果都惊呆了。对于三目运算符中的两个结果,如果一个是常量,一个是类型T的变量,则常量会被转型为类型T,这个据说是java编程规范中规定的,反正我是没看过,就此记住一条。所以常量120被转型为char,对应于x(小写)

    2.坑2,{}真是可有可无吗?

         先看题目:

           for(int i=0;i<10;i++)

              Integer k=new Integer(i);

               System.out.println("hello world");

    请问结果如何?

    我第一反应没有认真看,然后觉得直接输出hello world.但是实际上呢,根本编译不过去。

    平时我的感觉就是,如果for中只有一行语句,那就不加{}了,免得看得那么多,所以印象中,对于一行的循环体,觉得{}是可有可无的。然而,事实是,java中的局部变量应该是在一个代码块中,也可以理解为是在{}中。for可以不加{},但是只限于执行语句,不包括局部变量声明的语句,而在本例中,就出现了局部变量重复定义的错误,改正的办法是加上{}。可见,{}还真不是可有可无的,怪不得刚开始学编程时候老是说用不用带带着呢,还是有道理的呀

    3.突然不好使的replaceall

     今天处理一个关于版本判断的问题,规定好版本号是从小到大递增,用字符串格式来存储,要比较两个字符串的版本号,将其中的.(点号)全部去掉,在java中算是很简单的一个操作的,用replaceall可以解决。我也没把这事放在心上,就随手写了个String mt=str.replaceAll(".","");结果到测试时候才发现得到的结果是个空的字符串,很郁闷,查了半天,想起来,可能是因为正则表达式的原因,因为.也算是正则的一个元素啊,所以要先转义一下,改成String mt=str.replaceAll("\.","");好了,大功告成了。关于java中正则的用法,还应该好好巩固下。

  • 相关阅读:
    Redis学习--命令执行过程中写AOF日志和同步从库顺序
    MySQL Innodb Engine--MVCC代码瞎猜
    MySQL Innodb Engine--DML操作时先生成Undo Log还是先生成Redo Log
    MySQL InnoDB Engine--自适应哈希索引总结
    MySQL InnoDB Engine--自适应哈希索引代码瞎猜03
    MySQL InnoDB Engine--自适应哈希索引代码瞎猜02
    MySQL InnoDB Engine--自适应哈希索引代码瞎猜01
    expect,传入数组进行SSH
    在底图不变的基础上,切换腾讯地图的文字注记(让底图更“干净”)
    十六进制透明颜色 转换成 RGBA 颜色(腾讯地图 与 微信地图组件所需颜色格式不同)
  • 原文地址:https://www.cnblogs.com/lxy15329/p/3570352.html
Copyright © 2011-2022 走看看