Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中获得基本文本的类型?_Java_Int_Long Integer - Fatal编程技术网

如何在Java中获得基本文本的类型?

如何在Java中获得基本文本的类型?,java,int,long-integer,Java,Int,Long Integer,我刚刚学习了在长值之后使用L来表示它们是长类型,就像在浮点类型之后使用f一样。我想知道当你写作时会发生什么 long value = 3; 而不是 long value = 3L; 所以我想知道 编译器是否考虑3个整数,然后将其隐式转换为长? 然后我尝试使用instanceof检查值3的类型,但我不能使用它,因为它是一个基元类型或反射getClass,但显然我不能,因为它不是引用类型。是否需要检查值3是什么类型,或者这是不可能的,因为Java是静态类型的 谢谢, Bernard根据Java

我刚刚学习了在长值之后使用L来表示它们是长类型,就像在浮点类型之后使用f一样。我想知道当你写作时会发生什么

long value = 3;
而不是

long value = 3L;
所以我想知道

编译器是否考虑3个整数,然后将其隐式转换为长?

然后我尝试使用instanceof检查值3的类型,但我不能使用它,因为它是一个基元类型或反射getClass,但显然我不能,因为它不是引用类型。是否需要检查值3是什么类型,或者这是不可能的,因为Java是静态类型的

谢谢, Bernard

根据Java 14语言规范:

如果整数文字的后缀是ASCII字母L或L ell,则其类型为long;否则它是int类型的


不@dontknowmuchbuttingbetter为什么不呢?请使用该问题的答案显示您的代码,并说明它是如何工作的。因为OP讨论的不是字段的类型,而是表达式的类型。我们知道3是int文本;这是必然的。Java会自动将其转换为long@BernardBorg:您可以通过在JLS中查找来轻松检查3的类型。这回答了我最初的问题,即3是int还是long,但没有回答是否有任何方法可以检查原语值的类型。@BernardBorg:再次,重复问题中的答案完全回答了第二部分。@BernardBorg:Java语言规范告诉您3的类型。你可以通过在那里查找来检查它。字面意思是它所代表的值。文本由源代码中的一系列“标记”组成。您可以通过查看标记来确定类型,作为程序员,您需要知道如何做到这一点-您需要知道3是一个int,3L是一个长int,'3'是一个char,3是一个字符串。因此,在编写代码时必须知道这一点,因此不需要运行时工具进行检查。