public class TypeCast { public static void main(String[] args) { short i1 = 10; short i2 = 20; i1 = (short) (i1 + i2); //必须显式cast 回short,否则编译错误 i1 = (short) (i1 >> 2); i1 += i2; //+=运算符会自动将运算结果cast为 运算符左边的类型,所以不需要显式cast int i3 = 100; i3 = (int) (i3 + 100L); //当运算数类型比int大时,运算结果转换为较大的类型 System.out.println(new Integer(1) == 1); System.out.println(new Integer(1) != 1); System.out.println(new Integer(1) != 2); System.out.println(new Integer(1) > 1); System.out.println(new Integer(1) >= 1); System.out.println(new Integer(1) < 1); System.out.println(new Integer(1) <= 1); System.out.println("======================="); Integer obj = new Integer(1); System.out.println(obj == new Integer(1)); System.out.println(obj != new Integer(1)); System.out.println(obj > new Integer(1)); System.out.println(obj >= new Integer(1)); System.out.println(obj < new Integer(1)); System.out.println(obj <= new Integer(1)); System.out.println("======================="); System.out.println(new Boolean(null)); System.out.println(new Boolean("")); System.out.println(new Boolean("obj")); System.out.println(new Boolean("false")); System.out.println(new Boolean("true")); System.out.println(new Boolean("TRUE")); System.out.println("======================="); Integer obj1 = 1; //相当于Integer.valueOf(1) Integer obj2 = Integer.valueOf(1); System.out.println(obj1 == obj2); System.out.println(obj1 != obj2); System.out.println(obj1 == new Integer(1)); System.out.println(obj1 > new Integer(1)); System.out.println(obj1 >= new Integer(1)); System.out.println(obj1 < new Integer(1)); System.out.println(obj1 <= new Integer(1)); //常量赋值相当于使用Integer.valueOf(int),该方法会缓存对象实例, //相同常量的多次调用返回的是同一个封箱对象。 //This method will always cache values in the range -128 to 127 Integer obj3 = 1024; Integer obj4 = 1024; System.out.println(obj3 == obj4); System.out.println("======================="); String str = null System.out.println(str instanceof String); //编译错误: //System.out.println(new TypeCast() instanceof String); //编译通过,但运行期会抛出异常ClassCastException TypeCast tc = (TypeCast) new Object(); } }
输出为:
true
false
true
false
true
false
true
=======================
false
true
false
true
false
true
=======================
false
false
false
false
true
true
=======================
true
false
false
false
true
false
true
false
=======================
false
Java语言规范规定,复合赋值(E1 op= E2)等价于简单赋值(E1 = (T) ((E1) op (E2))),其中T是E1的类型。
* 假若对基本数据类型执行任何算术或按位运算,只要它们“比int 小”(即char,byte 或者short),
那么在正式执行运算之前,那些值会自动转换成int。这样一来,最终生成的值就是int 类型。
当把一个int类型运算结果赋回较小的类型,就必须使用“造型”。
此外,由于是将值赋回给较小的类型,所以可能出现信息丢失的情况。
* 通常,表达式中最大的数据类型是决定了表达式最终结果大小的那个类型。
* 若将一个float 值与一个double 值相乘,结果就是double;如将一个int 和一个long 值相加,则结果
为long。
* 逻辑运算符:== != 和 > >= < <=
* (1) 在其中一个运算项是基本数据类型时,自动拆箱。
* (2) 运算项都是封箱对象时,== != 比较对象引用, > >= < <= 会自动拆箱。
* Java 的判等操作符(==和!=)在作用于对象引用时,执行的是引用ID 的比较,而不是值的比较。
这是为了兼容5.0以前版本。
* 判等操作符在其两个操作数中只有一个是被包装的数字类型,而另一个是原始类型时,执行的确实是
数值比较。这种比较在5.0以前是非法的,所以不会出现不兼容。
* 常量赋值相当于使用Integer.valueOf(int),该方法会缓存对象实例,相同常量的多次调用返回的是
同一个封箱对象。
* Boolean的构造函数Boolean(String name) return (name != null) && name.equalsIgnoreCase("true")
* instanceof运算符:
尽管null 对于每一个引用类型来说都是其子类型,但是instanceof 操作符被定义为在其左操作数为null
时返回false。这被证明是实践中非常有用的行为。如果instanceof 告诉你一个对象引用是某个特定类
型的实例,那么你就可以将其转型为该类型,并调用该类型的方法,而不用担心会抛出
ClassCastException 或NullPointerException 异常。
instanceof 操作符有这样的要求:如果两个操作数的类型都是类,其中一个必须是另一个的子类型。
所以,new TypeCast() instanceof String是非法的。
相关推荐
Java运算符是编程语言中用于执行特定操作的关键符号,它们在Java程序中起着至关重要的作用,帮助我们处理数据和控制程序流程。在这个"java运算符小程序"中,我们可以探索和学习Java中的各种运算符及其用法。 1. **...
非常详细的java运算符优先级表,帮助记住优先级顺序
28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符...
Java运算符是编程语言中不可或缺的部分,它们帮助程序员执行各种计算和逻辑判断。在Java中,运算符主要分为四大类:算术运算符、关系运算符、逻辑运算符和位运算符。 1. **算术运算符** - 加法运算符 (+):将两个...
JAVA运算符思维导图,便捷整理思路,算数运算符、连接运算符、赋值运算符、扩展赋值运算符、三目运算符、逻辑运算符、关系运算符
Java运算符+(优先级、目数)
java运算符与优先级,完善版本。 谢谢,
Java运算符是编程中至关重要的组成部分,它们用于执行各种计算和逻辑操作。了解运算符的优先级和目数对于编写高效、准确的代码至关重要。在Java中,运算符按照其功能分为不同的类别,并且有不同的结合性和目数。 1....
Java运算符是编程语言中用于执行特定计算或操作的符号。了解这些运算符对于编写高效、清晰的Java代码至关重要。以下是对Java运算符及其优先级的详细解释: 1. **点运算符** (.): 用于访问类的成员,如属性和方法。...
### Java运算符详解 在Java编程语言中,运算符是一种特殊的符号,用于执行特定的计算或操作。根据给定文件中的信息,我们将深入探讨运算符的优先级、类型、转义字符、Math函数以及数据类型转换等内容。 #### ...
### Java运算符优先级详解 在Java编程语言中,了解并正确使用运算符优先级对于构建高效、可读性强的程序至关重要。虽然建议在实际开发过程中通过使用括号来明确表达式的计算顺序,而非依赖于复杂的优先级规则,但...
Java运算符是编程中不可或缺的部分,它们用于执行各种计算和逻辑操作。Java提供了四大类运算符:算术运算符、位运算符、关系运算符和逻辑运算符。 1. **算术运算符**: - `+`:加法运算,可用于整数、浮点数的相加...
java 运算符学习笔记
Java 运算符可以分为以下几类:算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、三元运算符等。 1. 算术运算符 算术运算符是最基本的运算符,包括加法 (+)、减法 (-)、乘法 (*)、除法 (/)、取余 (% )...
Java 运算符优先级和异常处理 Java 是一种面向对象的编程语言,它提供了丰富的运算符和异常处理机制,以帮助开发者更好地编写程序。在本文中,我们将详细介绍 Java 运算符的优先级和常见的异常类型,以及它们的解决...
Java运算符是编程语言中不可或缺的部分,它们用于执行各种计算、比较和逻辑操作。在Java中,运算符主要分为四大类:算数运算符、关系运算符、逻辑运算符和位运算符。 **算数运算符** 包括加(+), 减(-), 乘(*), 除(/...
JAVA运算符是Java编程语言中用于执行各种计算的特殊符号和字符。运算符可以是单一的符号,如加号(+),也可以是关键字,如`instanceof`。Java语言支持多种类型的运算符,主要可以分为以下几类: 1. 算术运算符:...
Java 运算符优先级 Java 运算符优先级是指 Java 语言中各种运算符的执行优先级顺序。正确理解运算符优先级对于编写正确的 Java 程序至关重要。 以下是 Java 运算符优先级的详细说明: 1. 点运算符(.) 点运算符...
在Java编程语言中,运算符、流程控制和数组是核心概念,它们构成了程序的基本结构。...通过解决相关的题目,开发者可以更好地掌握Java运算符、流程控制和数组的使用,从而编写出更高效、更清晰的代码。