哪位大神能告诉我account为什么long类型说out of range,然后用String也不可以呢

qq_41405005 2017-12-19 07:49:16
...全文
473 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2018-02-08
  • 打赏
  • 举报
回复
上面说错了,Java 是数字固定有符号。
「已注销」 2018-02-08
  • 打赏
  • 举报
回复
Java 继承了 C 语言了很多东西,可惜这个鬼特性,对于 Java 这种语言而言,实在没必要继承。 C/C++ 在数字常量末尾加入一些后缀,来区分数字常量的类型。 比如:
1    int
1U   unsigned int
1L   long
1UL  unsigned long
1LL  long long
1ULL unsigned long long
这些后缀的作用通常是在赋值或者比较或者传入 sizeof 计算大小的时候,可以严格区分类型,减少编译警告。然而对于 Java 这种,一数字无符号,二没有 sizeof 运算符的语言,实在没必要搞什么 L 后缀。如果数字常量的值超出了 Integer.MAX_VALUE,而不加 L 加后缀的话,会报编译错误。搞不懂 Java 将数字常量赋值给 long 还要强制加 L 后缀的设计意义何在?如果在 L 后缀用于区分重载时,还可以理解。如:
public class DummyMethod {
	public static void fuck(byte v) {
		System.out.println("byte => [" + v + "]");
	}
	public static void fuck(short v) {
		System.out.println("short => [" + v + "]");
	}
	public static void fuck(int v) {
		System.out.println("int => [" + v + "]");
	}
	public static void fuck(long v) {
		System.out.println("long => [" + v + "]");
	}
	public static void main(String[] args) {
		fuck(1);  // void fuck(int v);
		fuck(1L); // void fuck(long v);
	}
}
然而不过可以区分 int 和 long。如果要调用参数是 byte、char、short 类型的版本,还是要靠强制转换。
yasashii 2018-01-12
  • 打赏
  • 举报
回复
需要在数据的后面加一个L
逗比123号 2017-12-20
  • 打赏
  • 举报
回复
因为你的那一串数字是int类型的,而且超过了int的最大值所以报错,在数字后面加L就行
「已注销」 2017-12-20
  • 打赏
  • 举报
回复
在数字末尾加上 L
qq_41405005 2017-12-20
  • 打赏
  • 举报
回复
我用String会报错,然后让我改成int型
xiaovhao 2017-12-19
  • 打赏
  • 举报
回复
String怎么不可以?

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧