Knowledge Point 20180308 Dead Code
不知道有没有前辈注意过,当你编写一段“废话式的代码时”会给出一个Dead Code警告,点击警告,那么你所写的废物代码会被编译器消除,那么如果你不理睬这个警告呢?编译后会是什么样的呢?下面我们写点代码,来查看一下编译后的结果,这里使用反编译工具jd-gui.exe。代码如下:
package cn.five.four;
public class Test {
public static void main(String[] args) {
int a = 7;
int b = 9;
test1();
test2(a, b);
}
//废话代码--条件语句中,已经可以确定条件真假的会被认为是死代码(Dead Code),也叫无效代码
public static void test1(){
if(5>6){
System.out.println("jdk1.7输出废话代码!!");
}else {
System.out.println("都不用编译,你自己都知道要输出这段代码!");
}
}
//条件不确定的不是死代码
public static void test2(int a,int b){
if(a>b){
System.out.println("条件语句块中只有一句代码!");
}else if (a == b) {
System.out.println("条件语句块中只有两句代码!");
System.out.println("条件语句块中只有两句代码!");
}else {
System.out.println("会输出这句吗?");
}
}
}
反编译
package cn.five.four; import java.io.PrintStream; public class Test
{
public static void main(String[] args)
{
int a = 7;
int b = 9;
test1();
test2(a, b);
} public static void test1()
{
System.out.println("都不用编译,你自己都知道要输出这段代码!");
} public static void test2(int a, int b)
{
if (a > b)
{
System.out.println("条件语句块中只有一句代码!");
}
else if (a == b)
{
System.out.println("条件语句块中只有两句代码!");
System.out.println("条件语句块中只有两句代码!");
}
else
{
System.out.println("会输出这句吗?");
}
}
}
上面我们知道了编译器在编译后会自动将死代码优化为已知的结果,这是编译器的优化。不过聪明如我们的程序员应该不至于写出这样的代码,在这里仅仅是表明编译器也是可以优化我们的代码的。
Knowledge Point 20180308 Dead Code的更多相关文章
- 查找无用代码Dead Code的一些心得
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:查找无用代码Dead Code的一些心得.
- myeclipse 写java代码提示 dead code 原因
经常使用MyEclipse要么Eclipse编辑写java程序猿代码.您可能经常会遇到一个黄色警戒线:dead code:一般程序猿遇到这些问题都会置之不理,反正也不影响程序的编译运行.对,这不是bu ...
- java 异常 之 实战篇(trows 和 try catch Dead Code)
一:throws 和 trycatch 差别 (1)比如.publicFileWriter(String fileName) throws IOException{} 我在mian中创建一个FileW ...
- Unused Method(不再使用的方法)——Dead Code(死亡代码)
系列文章目录: 使用Fortify进行代码静态分析(系列文章) Unused Method(不再使用的方法) 示例: private bool checkLevel(strin ...
- dead code 死代码 无作用的代码
DatasetVector datasetvector=(DatasetVector)dataset; if (datasetvector == null) ...
- myeclipse 编写java代码提示 dead code 原因
经常使用MyEclipse或Eclipse编辑器编写java代码的程序员,可能经常遇到一个黄线警告提示:dead code:一般程序员遇到这些问题都会置之不理,反正也不影响程序的编译执行.对,这不是b ...
- Knowledge Point 20180308 拔下forEach的外衣
剖析加强for 很长一段时间对于foreach都有一种误解,那就是foreach只是普通for的包装,底层还是普通for循环,直到深入了解迭代器的时候,才发现自己错了,本节就来探讨一下foreach, ...
- 10 Code Coverage Tools for C & C++
Code coverage is a measure used in software testing that describes the degree to which the source co ...
- Code Review Checklist
左按:当年需要一份详细的代码评审清单作参考,翻译了此文. 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] General Code Smoke Test 通用测试 Comm ...
随机推荐
- Cocos2d-js 开发记录:骨骼动画载入
不得不说cocos2d-js的文档实在是少,骨骼动画的载入和C++版本的好像还有些不同不能直接依样画葫芦. 一个由cocos studio编辑生成的骨骼动画一般会包含如下几个文件: .ExportJs ...
- div居中方式
1. position: absolute; top:50%:left: 50%; margin-top: -高度的一半; margin-left: -宽度的一半(此方法适用于固定宽高的元素) 注: ...
- javascript判断一个元素是另外一个元素的子元素
javascript判断一个元素是另外一个元素的子元素用途有很多,最常用的就是当点击页面的空白处去执行某些操作,比如弹出层等. function isParent (obj,parentObj){ w ...
- js和jq获取宽度和高度
Javascript: console.log(document.body.clientWidth); //网页可见区域宽(body) console.log(document.body.client ...
- 关于 ie9 不执行 js 的问题
当写js用 console.log()调试,但没有注释,在ie 9 浏览器上运行时,console.log() 后面的脚本不能再执行了. 为了ie,记得把console.log() 注释
- JavaEE中表现层、持久层、业务层的职责分析(转载)
表现层.持久层.业务层 注:本文转载于:http://www.blogjava.net/jiabao/archive/2007/04/08/109189.html 为了实现web层(struts)和持 ...
- OSGEarth加载 geoserver 发布 TMS
geoserver配好数据并用自带的gwc切片好后, 访问 http://localhost:9999/geoserver/gwc/service/tms/1.0.0/ 在OsgEarth的earth ...
- js 显示 base64编码 的二进制流 图片
Data URI scheme.Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入.比如上面那串字符,其实是一张小图片,将这些字 ...
- classifier.cc-recv() [ns2.35]
//without comments int chooseECNSlot() { ; ;i<=nslot_;i++) { *count) { *count); )*ti; ;j<=nslo ...
- Oracle数据库从入门到精通 单行函数问题
视频课程:李兴华 Oracle从入门到精通视频课程 学习者:阳光罗诺 视频来源:51CTO学院 Oracle数据库从入门到精通-单行函数 在数据库中,为了方便用户的数据开发,往往会提供一系列的支持函数 ...