当前位置: 首页 > 面试题库 >

强制转换为基本类型的怪异Java行为

刘博文
2023-03-14
问题内容

这可能是在某个地方被问到的,但我找不到。有人可以澄清为什么此代码可以编译并打印出来1吗?

long i = (byte) + (char) - (int) + (long) - 1;
System.out.println(i);

问题答案:

它被解析为:

long i = (byte)( +(char)( -(int)( +(long)(-1) ) ) );

所有+-运算符都是一元+或的-

在这种情况下,1两次取反,因此将其打印为1



 类似资料:
  • 问题内容: 我对shortJava中的原始类型有疑问。我正在使用JDK 1.6。 如果我有以下情况: 编译器不想进行编译-它说它“不能从int转换为short”,并建议我进行强制转换为short,因此: 确实有效。但是我的问题是为什么我需要演员表?a和b的值在的范围内short-短值的范围是。当我想执行操作(我没有检查其他操作)时,也需要进行强制转换。 如果对原始类型执行相同的操作int,则无需将

  • 问题内容: 我对 Java中的原始类型有疑问。我正在使用JDK 1.6。 如果我有以下情况: 编译器不想进行编译-它说它“不能从int转换为short”,并建议我进行强制转换为short,因此: 确实有效。但是我的问题是为什么我需要演员表?a和b的值在的范围内short-短值的范围是{-32,768,32767}。当我想执行操作-,(我没有检查其他操作)时,还需要进行强制转换。 如果对原始类型执行

  • 问题内容: 我有以下两节课: 和: 当我运行测试时,一切都是笨拙的。如果我将类型参数化更改为: 编译器抱怨,报告: 错误:类型不兼容的整数不能转换为T number = new Integer(11); 其中T是类型变量T扩展了在方法getSomeValue(boolean)中声明的Object 它同样对Double有所抱怨。为什么? 编辑:我犯了一个错误。这实际上是有效的代码。 现在我明白了@S

  • 强制类型转换 隐式类型转换:隐式类型转换又称为自动类型转换,隐式类型转换可分为三种:算术转换、赋值转换和输出转换。 显式类型转换:显式类型转换又称为强制类型转换,指的是使用强制类型转换运算符,将一个变量或表达式转化成所需的类型,这种类型转换可能会造成数据的精度丢失。 数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。 转换的方法有两种: 自动转换(隐式转换):遵循一定的规则

  • 调用AffineTransform: 它驻留在自定义形状类(YingYang)中。 当我进行调用时,当我试图从绘图面板或在类本身(如果我将返回类型更改为YingYang)中将它转换回一个YingYang时,我会得到一个类转换异常。 java.lang.ClassCastException:java.awt.Geom.Path2D$Double不能强制转换为Animation.Yingyang 任何

  • 更新: 下面的编辑#2显示了此问题的临时解决方案,但提出了一个新问题。 我正在为我的视图开发一个使用Spring MVC和Thymeleaf的客户端。 我有两个用户,一个基本用户和一个管理员。当基本用户登录时,其个人信息将显示在主页上。当管理员登录时,他可以执行各种搜索操作以在后端数据库(MongoDB)中查找用户。他可以按州、市、用户名等查找。。。。 我得到这个错误:: 以管理员身份登录 就像我