自然语言交流系统 phxnet团队 创新实训 个人博客 (二)
因为项目用的到条件编译,遂专门记载:
众所周知在C和CPP中可以通过预处理语句来实现条件编译,但是在java中没有预处理语句,我们该如何实现条件编译呢?
这是一个简单的demo
- Java代码
- public class Hello {
- public static void main(String[] args) {
- System.out.println("Hello, world!");
- }
- }
保存为Hello.java并编译,得到一个class文件,并且观察到文件大小是417字节。然后我们对这个文件进行反编译,用jd-gui。得到代码如下:
Java代码- import java.io.PrintStream;
- public class Hello
- {
- public static void main(String[] paramArrayOfString)
- {
- System.out.println("Hello, world!");
- }
- }
得到这个有什么用呢?
现在我们再来对源代码进行修改,修改后的代码如下。Java代码- public class Hello {
- public static void main(String[] args) {
- if(false) {
- System.out.println("Hello, world!");
- }
- }
- }
进行编译,这时我们再看它的大小,只有255字节。怎样?想到什么了吧?没错,编译器会对代码进行优化,对于条件永远为false的语句,JAVA编译器将不会对其生成字节码。下面我们再来对该class文件进行反编译,果然代码如下:
- public class Hello
- {
- public static void main(String[] paramArrayOfString)
- {
- }
- }
利用JAVA编译的这一优化机制,我们就可以实现JAVA的条件编译了。
- public class Hello {
- public static void main(String[] args) {
- if(false) {
- System.out.println("Hello, world!");
- }
- }
- }
定义一个final的变量,然后再在if语句中使用。代码如下:
- public class Hello {
- public static void main(String[] args) {
- final boolean DEBUG = true;
- if(DEBUG) {
- System.out.println("Hello, world!");
- }
- }
- }
当条件编译使用得多时,上面将极不利于代码的修改及维护,这时就可以用一种更为灵活的方法。定义一个静态类,里面专门定义用来控制条件编译的变量。然后再在具体的代码中导入该类,使用这些final变量。代码如下:
- public class DebugConfig {
- public static final boolean BLUETOOTH_DEBUG = false;
- public static final boolean WIRELESS_DEBUG = false;
- }
- if ( DebugConfig.BLUETOOTH_DEBUG) {
- // TODO
- }
自然语言交流系统 phxnet团队 创新实训 个人博客 (二)相关推荐
- 自然语言交流系统 phxnet团队 创新实训 个人博客 (五)
有关我们这个项目:智能自然语言交流系统,所借鉴的技术有: 第一:我们使用了科大讯飞的在线语音转换,涉及的有文本传给云端服务器的文字转换成语音和本地的语音上传给服务器转换成文字. 涉及的相关的代码有: ...
- 自然语言交流系统 phxnet团队 创新实训 项目博客 (五)
3DMax方面所涉及的专业知识: (1)一下的关于3DMax中对于人物的设计和操作均需要在对3DMax基础知识熟练掌握的情况下进行的. (2)骨骼架设:首先 ...
- 自然语言交流系统 phxnet团队 创新实训 项目博客 (十三)
对我们项目中的关键技术实现进行总结: 一.3DMax关键技术实现 1.一下的关于3DMax中对于人物的设计和操作均需要在对3DMax基础知识熟练掌握的情况下进行的. 2. 骨骼架设:首先对导入到3DM ...
- Spring实训 个人博客二 详情页
1.在index导航栏中添加归档: 2.创建详情页文件blog.html: 3.添加文章头部: <div class="ui container"><div cl ...
- 创新实训——飞讯(二)
因计划调整缘故,可直接从(五)看起. 目录 一.设计登录.注册界面 二.实现登录注册功能 一.设计登录.注册界面 利用所学的QT知识,利用可视化设计了一个基础的界面: 由于QT窗口自带一个较为丑陋的边 ...
- 山东大学软件学院创新实训——飞讯(二)
目录 一.后端框架-springboot 二.springboot项目的创建 1.启动idea,依次选择File -->> New -->> project,弹出下框 编辑2 ...
- 创新实训团队记录:为BR-MTC问题设计一个近似算法
创新实训团队记录 : 为BR-MTC问题设计近似算法 阅读书籍和论文 近似算法设计思路变化总结 算法框架 改变初始顶点集 继续添加路径,作为新的初始顶点集 程序验证 近似解与最优解存在差距&& ...
- (个人)AR电子书系统创新实训第四周(1)
(个人)AR电子书系统创新实训第四周(1) 宣传册设计周记07 01宣传册目录 ①拷贝封面底层的云纹. ②设计印象济宁方形框,包括文字的创意与排版,方框的位置摆放,印章的位置摆放. ③目录的设计,包括 ...
- (个人)AR电子书系统创新实训第四周(2)
(个人)AR电子书系统创新实训第四周(2) 宣传册设计周记08 01五与六页 该页的主要内容是介绍济宁的几个代表性文化,分别是孔孟文化,运河文化,水浒文化,佛教文化,梁祝文化,和师祖文化. 这一页面主 ...
最新文章
- Apache Thrift - java开发详解
- 35 个 Java 代码性能优化总结
- Linux下command not found(以CentOS下没有telnet为例)
- Python第00次作业
- rar 文件头crc版本_php实现rar文件的读取和解压
- xampp php连接mysql数据库_关于PHP xampp连接数据库之后查询失败,数据库连接成功,表中也有数据...
- HDU 2516 (Fabonacci Nim) 取石子游戏
- 使用自定义表类型(SQL Server 2008)
- 计算机网络客户服务器应用,计算机网络工程教学资料-项目九 Internet服务器应用.pptx...
- 礼品盒子插画素材丨节日设计加上它之后价值翻倍!
- CCF201312--模拟练习试题参考答案(Java)
- SQL中GROUP BY语句介绍
- Citrix XenServer
- “只要就“其实是废话,没有任何用处
- ictclas linux 64 java 下载,Ubuntu下ICTCLAS JNI的使用
- 计划任务linux每天执行一次,linux 每天执行任务计划
- 全网最全-探花交友项目-面试总结-简历优化
- Linux下删除文件时出现rm: cannot remove ‘***/.user.ini’: Operation not permitted
- 2021上半年全国计算机二级报名江苏,江苏2021年3月全国计算机等级考试报名公告...
- 铁道中文应用开发现状综述
热门文章
- SugarSync网盘之XML解析
- 所有的经历都是财富 --致我的2016
- xmake 新增对 Qt 编译环境支持,用自己最喜爱的编辑器去开发 Qt 程序
- 机器学习中涉及的概率论知识回顾(一)
- 【小松教你手游开发】【unity实用技能】计算目标物体是否在自己的扇形视野范围...
- video标签 在微信浏览器打开,不弹出大的独立窗口 而是直接播放。
- [机器学习]机器学习笔记整理12-线性回归概念理解
- 关于DJANGO和JAVASCRIPT的时间
- 虚幻填坑004:减少starter content占用空间,只保留使用的assets
- python 安装easy_install和pip