今天无意中看到我之前做的一个关于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是一门强类型语言,不仅每个变量具有指定的数据类型,它的表达式也有指定的数据类型。因此在不同类型之间进行赋值操作很容易遇到...
1. **Java表达式**: Java表达式是程序中的一部分,用于计算一个值。它可以是简单的变量引用、常量,也可以是复杂的运算组合,如算术、比较、逻辑或三元表达式。 2. **表达式语法**: 在Java中,表达式的语法遵循特定...
Java表达式编译器是一个用于解析、编译和执行Java语言中的表达式的工具。它在游戏娱乐领域有广泛应用,比如在游戏中动态计算角色属性、事件触发条件等。理解这个主题需要深入掌握Java语言的基础,包括语法、类型系统...
Fel Java表达式引擎是一款轻量级且高效的开源表达式计算引擎。它的全称是FastExpressionLanguage,专门设计用于满足不断变化的功能需求和性能需求。Fel的执行方式主要依赖于函数,运算符如加减乘除等被视为Fel函数,...
"Java表达式求值2.0"可能是指一个优化过的版本,用于更高效地处理Java中的数学或逻辑表达式。这个版本可能是针对早期版本的错误进行了修复,或者增加了新的功能。 在Java中,表达式求值通常涉及以下知识点: 1. **...
Java表达式解析是编程中的一个重要概念,特别是在设计编译器、解释器或脚本引擎时。这个程序可能是为了理解并执行简单的数学或逻辑表达式,比如`2 + 3 * (4 - 5)`。在Java中实现这样的解析器,我们需要理解表达式...
Java表达式工具类
3. **中缀表达式到后缀表达式转换**:后缀表达式(逆波兰表示法)是一种没有括号且运算符位于其操作数之后的表示方式,非常适合计算。对于中缀表达式(如"1*(2+2^3)"),我们可以使用栈数据结构来实现转换。遍历输入...
在本项目中,“java堆栈的应用--中缀表达式转换成后缀表达式和计算”具体涉及到了两个主要知识点:中缀表达式的转换与后缀表达式的计算。 1. **中缀表达式**:这是我们常见的数学表达式形式,如 `2 + 3 * 4`,其中...
JAVA 语法基础 - 表达式、类型转换、运算符 JAVA 语言中的表达式、类型转换、运算符是编程的基础知识,了解这些概念对于编写高效、正确的代码至关重要。在本文中,我们将详细讲解表达式、类型转换、运算符的概念、...
6. **表达式解析**:在Java实现的表达式计算器中,首先需要将输入的中缀表达式转换为逆波兰表达式,这通常通过扫描表达式并根据运算符的优先级将它们推入栈中来完成。一旦表达式被转换,就可以使用栈来逐步计算结果...
2. **解析逻辑**:Java程序需要能够将用户输入的字符串转换为Cron表达式对象,这通常涉及对字符串的验证和解析。可以自定义一个解析器类,处理每个字段的特殊语法。 3. **双向绑定**:界面到表达式和表达式到界面的...
# 基于Java的表达式转换系统 ## 项目简介 本项目是中山大学2022年春季学期编译原理课程的实验项目3,主要功能是将用户输入的中缀表达式转换为等价的后缀表达式。通过此项目,学生可以深入理解《龙书》第二版中关于...
### Java 实现中缀表达式转换为后缀表达式及计算 #### 概述 在计算机科学中,表达式的表示形式通常有三种:前缀、中缀和后缀。其中,中缀表达式是我们日常书写数学表达式时最常见的形式,如`2 + 3 * 4`。然而,在...
首先,我们需要一个函数来将常规表达式转换为RPN。这个过程通常涉及到一个词法分析器,它将输入字符串分解为数字、操作符和括号。然后,我们使用栈来存储操作符,遵循运算符优先级规则:括号最高,接着是乘法和除法...
在实际编程中,理解并熟练掌握这些基本数据类型和表达式是编写Java代码的基础,它们构成了程序的基本结构和逻辑。在编写程序时,合理地选择数据类型、正确地使用运算符和表达式,以及有效地管理变量和常量,能够提高...
在Java编程语言中,数据类型转换是至关重要的概念,它涉及到不同类型的变量之间的相互转化。Java分为两大类数据类型:基本数据类型(如int、char、float等)和引用数据类型(如类、接口和数组)。本文将深入探讨Java...
cron表达式是Unix/Linux系统中用于定时任务调度的一种机制,而在Java中,通过Quartz、Spring框架等库,也可以使用cron表达式来实现定时任务。本项目提供的"Cron表达式生成器java版"是一个基于Java 1.8的工具,能够...
此项目中的计算器允许用户直接输入数学表达式,无需转换,可以立即得到运算结果。 4. 知识点:GUI 设计 图形用户界面(GUI)设计是项目的重要组成部分。在这里,使用了 Java 的 Swing 库来创建界面,例如 JFrame ...
Jep是一个用来转换和计算数学表达式的java库,目前采用的是JEP这个开源类库 目前2.4版是免费的 3.0开始收费不过功能更强大更多可配置的东西.通过这个程序包,用户可以以字符串的形式输入一个、任意的公式,然后快速...