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++) ...
随机推荐
- Python六大开源框架对比:Web2py略胜一筹
Python是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准库也是值得大家称赞的,Python甚至还自带 ...
- Redis应用配置项说明
近期整理了下项目中Redis配置参数,以便学习备用~ #指定内存大小,格式为1k 1GB 1M,单位不区分大小写 # 1k => 1000 bytes # 1kb => 1024 byt ...
- mysql 查询数据时按照A-Z顺序排序返回结果集
mysql 查询数据时按照A-Z顺序排序返回结果集 $sql = "SELECT * , ELT( INTERVAL( CONV( HEX( left( name, 1 ) ) , 16, ...
- JS中两个感叹号!!的意义
var foo = true; console.log(!foo); // false console.log(!!foo); // true 两个 !! 就是 非非 如果值为boolean值 两个感 ...
- C++中三种new的用法
转载自:http://news.ccidnet.com/art/32855/20100713/2114025_1.html 作者: mt 1 new operator,也叫new表达式:new表达式比 ...
- [C#对Oracle操作]C#操作调用Orcale存储过程有参数
/// <summary> /// 获取ERP固定资产计提数据 /// </summary> /// <param name="strCompanyCode&q ...
- 在windows编译MariaDB
OS: Windows XP sp3 IDE: VS2010 MariaDB: V5.5 (到目前为止2016.5,中文域(.cn)只有清华大学 TUNA 镜像源可用) (.tar.gz为源码:.zi ...
- 天地图应用ArcGIS发布的服务
本文包含三个部分:利用ArcMap将Excel的数据转化为ArcGIS MXD文件.利用ArcMap发布服务.天地图添加ArcGIS发布的服务. 一 MXD文件的生成 假设在Excel中存有两个点的坐 ...
- MS AX 技术相关网站收藏
Microsoft Dynamics AX Developer Centerhttps://msdn.microsoft.com/en-us/dynamics/ax/default.aspx From ...
- linux查看负载
LINUX下查看负载 1,查看磁盘 df -h 2,查看内存大小 free free [-m|g]按MB,GB显示内存 vmstat 3,查看cpu cat /proc/cpuinfo 只看cpu数量 ...