原文:http://www.ituring.com.cn/article/27186#jtss-tqq
今天跟公司的童鞋聊天的时候,谈到了关于短码和代码的精简的方式,所以整理出来。
需求很简单。
首先定义一个类
classItem{publicint key;publicint l;publicint r;};
然后主函数的场景大概是这样
publicstaticvoid main(String[] args){Item x;
x =newItem();
x.key =1;
x.l =10;
x.r =20;int i =0;if(x.key > i){
i = x.l;}else{
i = x.r;}
i =0;if( x.key > i){
x.l = i;}else{
x.r = i;}}
这里面有两个子场景,就是接下来要讨论的。
子场景1
if(x.key > i){
i = x.l;}else{
i = x.r;}
子场景2
if( x.key > i){
x.l = i;}else{
x.r = i;}
-
子场景1 的规律是 左面的值都是一样的,都是赋值给i
-
子场景2 的规律是 右面的值都是一样的,都是用i赋给别的变量。
那么我们如何来简化实现这两类场景呢?
第一个场景很简单,可以如下优化:
i =( x.key >i ? x.l : x.r);
第二个场景比较棘手!
因为表达式不能被赋值。
那么我们需要一个传值函数。
publicstatic<T>boolean to_(T s , T d){if( s.getClass()!= d.getClass()){returnfalse;}
d = s;returntrue;}
有了如上函数我们就可以这样写
boolean r =( x.key >i ? to_(i,x.l): to_(i,x.r));
r是一个结果值用来检测类型是否正确。
如下是完整的代码。
package tPackge;classItem{publicint key;publicint l;publicint r;};publicclass test01 {publicstatic<T>boolean to_(T s , T d){if( s.getClass()!= d.getClass()){returnfalse;}
d = s;returntrue;}/**
* @param args
*/publicstaticvoid main(String[] args){Item x;
x =newItem();
x.key =1;
x.l =10;
x.r =20;int i =0;if(x.key > i){
i = x.l;}else{
i = x.r;}System.out.println(x.l);System.out.println(x.r);System.out.println(i);System.out.println("--------------------------");
i =( x.key >i ? x.l : x.r);System.out.println(x.l);System.out.println(x.r);System.out.println(i);/*
if ( x.key > i){
x.l = i;
}else{
x.r = i;
}
*/System.out.println("--------------------------");
i =0;//if ( x.key > i ) { x.l = i; } else { x.r = i; } System.out.println(x.l);System.out.println(x.r);if(( x.key >i ? to_(i,x.l): to_(i,x.r))){System.out.println(i);}}}
相关推荐
在标题“JAVA趣味编程100实例”下,描述中提到“很实用的java趣味编程小程序”,这说明本文件旨在通过有趣的编程实例来帮助学习者加深对Java语言的理解和应用能力。通过解决实际问题来提高编程技能,这些实例很可能...
在Java中实现DES算法,我们需要使用`javax.crypto`包中的相关类。首先,我们需要创建一个密钥,这通常通过`KeyGenerator`类完成。DES的密钥生成器需要指定为`DESKeySpec`,然后使用`KeyGenerator.getInstance("DES")...
二维码(Quick Response Code)是二维条形码的一种,最初由日本Denso Wave公司于1994年开发,它将大量的数据编码在小块的图形中,可以通过手机等设备快速扫描读取。个性二维码制作工具 1.0 利用了这一技术,让用户...
每个字符由一组点(短信号)和划(长信号)组成,如字母"A"用"."和"- "表示,即".-"。摩尔斯电码的使用需要对编码表有一定的熟悉,但在无线通信和紧急求救信号中仍占有一定地位。 "谜"程序将这两种编码方式结合在...
九宫格日记将一天的事件划分为九个主题,使用户能在短时间内总结并记录自己的日常。 **项目详情** 在第一阶段,项目主要功能包括用户注册、登录、修改个人信息,创建、编辑和删除九宫格日记,并支持在日记中插入...
公司定位为Total Platform Service Provider (TPSP),专注于2.5G和3G平台,如彩信(MMS)、WAP、JAVA等产品和服务。凭借其在WAP业务和彩信业务中的领先地位,空中网已经成为中国移动增值业务领域的领头羊。截至当时...
此系统旨在通过一系列趣味性的活动与挑战,帮助参与者在限定的时间内(如三天)加深对彼此的了解,从而促进感情的发展。该系统的独特之处在于它不仅适用于现实中的情侣,也适合于网络社交平台上的朋友,甚至是陌生人...
- **C++、Java、SQL**:这些编程语言中有大量的语法和函数需要记忆,通过超级记忆法可以帮助程序员更快地掌握和运用。 **2. 程序逻辑的理解** - **算法与数据结构**:理解复杂的算法逻辑和数据结构布局,对于编程...
- **吉安地区资源**:吉安拥有丰富的红色旅游资源,但由于景点分布广泛,游客难以在短时间内逐一游览。建设多彩吉安红色旅游网站能够有效解决这一问题。 #### 二、多彩吉安红色旅游网站的设计目标与功能 - **设计...