今天无意中看到我之前做的一个关于java面试题的小测试 ,发现今天还是不懂。如下面的代码:
private static void out(){
char x='x';
int i=10;
System.out.println(false?i:x);
System.out.println(false?10:x);
}
上面打印的结果是:
120
x
第一条打印结果应该是可以理解的,char类型像int类型转化了,但是第二条语句就不能理解了,当时有很多错误的猜测。
结果我的一很牛叉的同事很好的解释了这个问题。就是如果在这个三目表达式中,如果其中一个类型为常量,则按照变量的类型进行转换,前提是这个常量能被变量的类型表示。下面这个链接的15.25很好的解释了上面的问题。
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#290293
什么叫常量能被变量的类型表示呢?
10肯定是可以被char类型表示的
byte short int long都是带符号的整数,而char是无符号的。如 -10就不能被char类型表示。
如:System.out.println(false?-10:x); 这句话打印出来的结果就是x。所以一切问题就迎刃而解啦~~
分享到:
相关推荐
要说清这道题,首先看看java表达式类型转换规则。 【java表达式类型转换】 java是一门强类型语言,不仅每个变量具有指定的数据类型,它的表达式也有指定的数据类型。因此在不同类型之间进行赋值操作很容易遇到...
Jep是一个用来转换和计算数学表达式的java库,目前采用的是JEP这个开源类库 目前2.4版是免费的 3.0开始收费不过功能更强大更多可配置的东西.通过这个程序包,用户可以以字符串的形式输入一个、任意的公式,然后快速...
本程序是java堆栈的应用,实现中缀表达式转换成后缀表达式以及结果计算。
编译原理课程设计-布尔表达式转换为四元式 设计一个语法制导翻译器,将布尔表达式翻译成四元式。要求:先确定一个定义布尔表达式的文法,为其设计一个语法分析程序,为每条产生式配备一个语义子程序,按照一遍扫描的...
Java表达式工具类
day002 JAVA语法基础-表达式&类型转换&运算符.doc
Cron表达式生成器java版(需要jdk1.8)亲测好用!
本课程设计时利用java制作的实现表达式转换的功能。用eclipse制作的。这个课程设计时输入一个正常的表达式转换为先序遍历序列 中序遍历序列 和后序遍历序列
此文档中的代码实现了简单的计算中缀表达式的求值方法,通过把中缀表达式转换为后缀表达式,可以很方便的进行求值。
java使用堆栈实现的由中序表达式转换为后序表达式,并可进行计算,例如中序表达式为(34+(8+9*(2+2)))/(2+2);转换为后序表达式为34 8 9 2 2 + * + + 2 2 + /;计算结果为19.5
java使用后缀表达式实现计算器,其中有将一般数学运算式(7-9+5/5-5*6)转换成后缀表达式的方法,以及后缀表达式的求解方法
将简单中缀算术表达式变换成: (1)后缀形式 (2)生成书上描述的抽象堆栈机的代码 (3)对常量算术表达式,输出结果
08.中缀表达式转换后缀表达式算法.ppt
输入中缀表达式,转换为后缀表达式,并计算结果。输入的表达可以为数字,也可以是字母。
大郅算法如下,首先将表达式转换为后序表达式,然后对后序表达式求值。表示式求值的关键步骤式表达式语义的解析和分割,而对于表达式的求值反而简单。在实际应用中,经常会有如下的场景:1、对一行数据进行运算,...
将一个表达式转为后缀表达式,用堆栈计算 中缀转后缀的过程中遇到数字直接输出,遇到符号则判断优先级。
基于Java实现了DFA,NFA,DFA最小化,NFA转化为DFA以及正则表达式转化为NFA的算法,对于初学者来说,是学习词法分析的一份不错资源
EL语言是JSTL输出(输入)一个JAVA表达式的表示形式。 在JSTL中,EL语言只能在属性值中使用。EL语言只能通过建立表达式${exp1}来进行调用。在属性值中使用表达式有三种方式。 1、 value属性包含一个表达式 ${expr}...
Java把一个正则表达式转化为不确定的有穷自动机NFA算法,本实例的符号包括: 1. 基本正则表达式, 如ab 2. 重复, 如a* 3. 在各项中选择, 如a|b 使用时在Convert的Reg Exp中点击输入正则表达式, 然后...
一个json相互转换的万能java类(JsonUtil.java), 这个下面就是万能转换类的方法注释,懂java的相信都能看懂。 /** *//** * 从一个JSON 对象字符格式中得到一个java对象 * @param jsonString * @param ...