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中正则的用法,还应该好好巩固下。
java中的那些坑的更多相关文章
- java 中==符号的坑
在某技术群看到这样的一个面试题目: 这是一个4年经验的java 从业者的答案. 你的答案是什么呢? 正确的答案是true. 为什么? 其实当使用String a="a"+" ...
- Java中三目运算符不为人知的坑
一.思考题 以下代码可能有什么错误?为什么? import java.util.HashMap; import java.util.Map; public class Test { public st ...
- Java中浮点数的坑
基本数据类型 浮点数存在误差 浮点数有一个需要特别注意的点就是浮点数是有误差的,比如以下这段代码你觉得输出的什么结果: public class Demo { public static void m ...
- 在Java中==的一个坑
观察下面代码,输出结果是什么? public static void main(String[] args) { Integer p = 10000; Integer q = 10000; Syste ...
- Java中常见的坑
概述 Java是门极简风格的语言,比其它语言相比,它故意保持较少的特性,不仅在有些不常见的情况下会出些奇奇怪怪的错误,即使很一般的情况下也有可能让人栽根头.如果你习惯了别的语言,你读Java 的代码很 ...
- Java中net.sf.json包关于JSON与对象互转的坑
在Web开发过程中离不开数据的交互,这就需要规定交互数据的相关格式,以便数据在客户端与服务器之间进行传递.数据的格式通常有2种:1.xml:2.JSON.通常来说都是使用JSON来传递数据.本文正是介 ...
- Java中net.sf.json包关于JSON与对象互转的问题
在Web开发过程中离不开数据的交互,这就需要规定交互数据的相关格式,以便数据在客户端与服务器之间进行传递.数据的格式通常有2种:1.xml:2.JSON.通常来说都是使用JSON来传递数据.本文正是介 ...
- Java表达式中的那些坑
[1]您确定真正了解后缀表达式与前缀表达式的区别吗? public class IncrementDemo{ public static void main(String[] args) { int ...
- Java中的for each实现原理与坑
文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 在Java中,遍历集合和数组一般有以下三种形式: for (int i = 0; i < list.size(); i++) ...
随机推荐
- jQuery选择器大全
1. id选择器(指定id元素) 将id="one"的元素背景色设置为黑色.(id选择器返单个元素) $(document).ready(function () { $('#one ...
- 如何用 .Net 开发
1. 使用最新的技术() 2. 模块拆分,(保持单一,不要把所有的功能都在一起) 3.使用轻量级的外部框架 : :TinyMapper MVC6
- Netty服务端与客户端(源码一)
首先,整理NIO进行服务端开发的步骤: (1)创建ServerSocketChannel,配置它为非阻塞模式. (2)绑定监听,配置TCP参数,backlog的大小. (3)创建一个独立的I/O线程, ...
- es6 const
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- windows下安装xgboost
Note that as of the most recent release the Microsoft Visual Studio instructions no longer seem to a ...
- eclipse中 报出The type javax.servlet.http.HttpServlet cannot be resolved. It is indirect错误
在Myeclispe部署项目后 报错 The type javax.servlet.http.HttpServlet cannot be resolved. It is indirect错误 如果在M ...
- 学习游戏渲染(Shader)的用处
本文在讨论的主题并不限于具体引擎或具体语言,为了说明方便可能会提到Unity的一些内容. 最近渐渐发现很多从事游戏开发的新人,对于学会写Shader似乎总是有几分神往,但一般入了门或者学了一段时间后 ...
- tiny4412学习一:编译uboot,体验裸机
首先,我们在ubuntu建立一个自己的文件夹,我的是: /home/wang/tiny_4412下有 datasheet shc(原理图PCB文件夹) src tools src下有 codes ...
- 图形学基础教程02--顶点数据和SHADER寄存器 (带演示程序)
本文系原创,欢迎转载,请标明链接 http://www.cnblogs.com/luming1979 有问题欢迎加qq群讨论:366239605
- Win10光驱不见了
1. 网上教程试了很多,如下: http://jingyan.baidu.com/article/02027811656a8b1bcd9ce570.html http://jingyan.todgo. ...