如何在JShell中查看变量或表达式结果的类型?
在JShell中查看位运算表达式的结果类型
嘿,刚好我之前也在JShell里折腾过类似的需求,来给你几个实用的方法,替代Python里type()的功能:
方法1:用getClass()直接打印类型
Java里虽然没有原生的type()函数,但可以利用自动装箱和反射来查看结果类型。直接把表达式包裹后调用getClass()就行:
System.out.println((5 << -1).getClass());
执行后会输出class java.lang.Integer——这是因为基本类型int会自动装箱成Integer包装类,但你要知道,实际运算结果的原生类型是int。如果是long类型的运算(比如加L后缀),就会得到class java.lang.Long:
System.out.println((5L << -1).getClass());
方法2:利用JShell的自动变量和/vars命令
JShell有个很方便的特性:它会把你执行的每一个表达式结果自动存在$1、$2这类变量里。你可以直接对这些变量做类型查询:
- 先执行你的位运算表达式:
JShell会返回结果,同时自动创建5 << -1$1变量存储这个值。 - 然后查看这个变量的类型:
或者用JShell的内置命令$1.getClass()/vars,它会列出所有已定义的变量,包括自动生成的$n,并显示它们的原生类型(比如int $1 = ...):/vars
额外提示:Java位运算的类型规则
其实不用查也能大致判断结果类型:
- 只要操作数是
byte、short、char或int,位运算的结果都是int - 如果有一个操作数是
long(比如带L后缀),结果就会是long
内容的提问来源于stack exchange,提问作者Sundar Rajan
相关产品推荐
相关产品推荐

