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++) ...
随机推荐
- js加解密
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- CE程序
注:开发工具用VS2008 安装Windows mobile设备中心进行调试. 项目平台 1.窗体属性设置,然后将size改成238, 320 2.效果 3.调试过程选择“部署” 4.配置文件的简单读 ...
- 简单了解undo
ORACLE 数据库 DML语句执行之前,会将数据块修改前的信息 镜像保存到 undo 段 insert语句 rollback 将会执行一条deleter操作 (相对数据量最小,只需利 ...
- Bugtags 实时跟踪插件 - BugtagsInsta
BugtagsInsta 是 Bugtags SDK 的官方插件,应用集成成功后,可以在 Bugtags 云端管理平台实时查看应用的运行时数据:操作步骤.用户数据.控制台日志.Bugtags 日志.网 ...
- [DFNews] Cellebrite UFED Physical Analyzer 3.8
Cellebrite 两周前正式发布了UFED设备所附带的Physical Analyzer和Logical Analyzer软件,更新后版本为3.8 下载地址已更新至置顶资源下载页面. 主要更新如下 ...
- 压测如何观测jvm,就是使用jmx来实现jvm监控
jps.jstack.jmap.jhat.jstat.hprof 基于jmx可以开发web版本,方便压测的时候观测jvm以及线程的信息 ================================ ...
- Django HTML 显示文章摘要
在用Django写个人博客,发现一般都是标题加上文章摘要,然后点击标题可以看详细内容.这样主页就可以多显示几篇文章. 那么就要用到文章摘要功能. 比如要100个字的文章摘要,就可以这样写: {{art ...
- [python实现设计模式]-5.迭代器模式-一起撸串嗨皮啦
迭代器模式是一个我们经常使用但是出境不高的模式. 为啥捏?因为大部分的语言都帮我们实现了细节,我们不许关注他的实现就能用的很嗨皮了. 不管怎样.这也是个非常常用的模式. 俗话说得好,这个世界上没有事情 ...
- 用MyEclipse自动生成SessionFactory文件
1.Hibernate1->MyEclipse->Capabilities->Install Hibernate Facet.如图所示. 2.选择Hibernate的版本. 3.创建 ...
- IntelliJ IDEA 使用说明(For Eclipse user)
IDEA和Eclipse主要在用户界面,编译方法和快捷键上有所差别. 1. 用户界面 1.1 No workspace IDEA 的Project相当于Eclipse的workspace,具体概念对比 ...