Java println输出中的加法
我在浏览一些java拼图时发现了这个Java println输出中的加法,java,Java,我在浏览一些java拼图时发现了这个 public class Elementary { public static void main(String[] args) { System.out.println(12345 + 5432l); } } 它不是应该打印66666,而是打印17777。有人能解释一下吗?你现在的号码写为char l。你必须写数字1。 你看到l和1的区别了吗?你现在把数字写成了字符l。你必须写数字1。 你看到l和1的区别了吗?我认为,由于
public class Elementary {
public static void main(String[] args) {
System.out.println(12345 + 5432l);
}
}
它不是应该打印66666,而是打印17777。有人能解释一下吗?你现在的号码写为char l。你必须写数字1。
你看到l和1的区别了吗?你现在把数字写成了字符l。你必须写数字1。
你看到l和1的区别了吗?我认为,由于5432l中的最后一个不是数字“1”,而是字母“l”,因此编译器会跳过它,结果是将12345与5432相加,我认为,由于5432l中的最后一个不是数字“1”,而是字母“l”,因此编译器会跳过它,结果是将12345与5432相加
public class Elementary {
public static void main(String[] args) {
System.out.println(12345 + 5432l);
}
}
如果你仔细看它最后的字符“l”,5432l不是“1”
这意味着它是“长”类型值
如果没有后缀,且为整型,如5623,则假定为int。如果不是整型,如3.14159,则假定为double
long有特定的后缀,例如39832L,float有2.4f,double有-7.832d。
除此之外,我们还需要计算数字
现在你们的问题是,若你们把这两个数字12345+5432相加,你们会得到17777
如果你仔细看它最后的字符“l”,5432l不是“1”
这意味着它是“长”类型值
如果没有后缀,且为整型,如5623,则假定为int。如果不是整型,如3.14159,则假定为double
long有特定的后缀,例如39832L,float有2.4f,double有-7.832d。
除此之外,我们还需要计算数字
现在在你们的问题中,若你们把这两个数字12345+5432相加,你们会得到17777,我同意上面的答案。但也值得一提的是,这是一个非常常见的错误,这也是为什么人们非常欣赏以这种方式编写代码的原因:
System.out.println(12345 + 5432L);
L-大写,更直观地显示变量的类型我同意上面的答案。但也值得一提的是,这是一个非常常见的错误,这也是为什么人们非常欣赏以这种方式编写代码的原因:
System.out.println(12345 + 5432L);
L-大写,更直观地显示变量的类型下面是答案的说明:- 1.如果打印12345+54321=66666。 2.您的情况是12345+5432l =12345+5432此数字以ll为前缀,长度较长 =12345整数+5432长 =长12345+5432 =17777 更多说明请查看下面的代码
int i=12345;
long j=5432l;
int sum = (i + j); //compilation issue
long sum = (i + j); // no compilation
int sum = (int) (i + j); //Type cast works fine.
以下是答案的说明:- 1.如果打印12345+54321=66666。 2.您的情况是12345+5432l =12345+5432此数字以ll为前缀,长度较长 =12345整数+5432长 =长12345+5432 =17777 更多说明请查看下面的代码
int i=12345;
long j=5432l;
int sum = (i + j); //compilation issue
long sum = (i + j); // no compilation
int sum = (int) (i + j); //Type cast works fine.
请注意l和1之间的差异,这是一个多么可怕的难题。谁会这样写代码?我太笨了。。我没注意到。@duffymo有人在演示为什么用L代替L。是的,@AndyTurner。仍然很糟糕。请注意l和1之间的差异,这是一个多么糟糕的难题。谁会这样写代码?我太笨了。。我没注意到。@duffymo有人在演示为什么用L代替L。是的,@AndyTurner。还是很糟糕。因此编译器会跳过它。是的,编译器会将它视为一个长文本,这意味着第一个数字也会被加宽为一个长的、长的加法,并且会调用PrintStream.printlnlong重载。是的,你是对的,因此编译器会跳过它,它使编译器将其视为一个长文本,这意味着第一个数字也被加宽为一个长文本,执行长加法,并调用PrintStream.printlnlong重载。是的,你是对的