java中biginger的初始化

java中biginger的初始化,java,biginteger,Java,Biginteger,我不理解Java中biginger的以下初始化中“”+1的含义: BigInteger fact = new BigInteger("" + 1); 这是一种将整数转换为字符串的惰性方法 ""+1 是空字符串和int 1的串联,int 1附加到空字符串后,生成字符串“1” 你也可以直接写 BigInteger fact = new BigInteger("1"); 如文件中所述: BigInteger有一个接受字符串的构造函数。当您将表达式声明为“”+1时,该类型将从左到右计算为第一个

我不理解Java中
biginger
的以下初始化中
“”+1
的含义:

BigInteger fact = new BigInteger("" + 1);

这是一种将整数转换为字符串的惰性方法

""+1
是空字符串和int 1的串联,int 1附加到空字符串后,生成字符串
“1”

你也可以直接写

BigInteger fact = new BigInteger("1"); 
如文件中所述:

BigInteger有一个接受
字符串的构造函数。当您将表达式声明为
“”+1
时,该类型将从左到右计算为第一个类型,因此它将是一个字符串

""+1
它与新的BigInteger(“1”)


我无法理解为什么会有人在课堂上欺骗学生或在面试时欺骗别人:)

这只是一种将int转换成字符串的懒惰方式。当int是一个变量时,它可能更有意义。乙二醇

public void doStuff(int i) {
    BigInteger fact = new BigInteger("" + i) ;
    ...
}

正如其他人指出的,还有其他方法可以实现这一点,但在这种情况下(当int是一个变量时),它可能是最少的字符

新的BigInteger(“1”)相同。Java使用了
String.valueOf(1)
,创建了一个中间的
StringBuilder
,并使之成为
字符串。这是构建字符串的简写。我看不出
“+1
”1“
更懒。这至少是一个完整的字符更长的时间…因为我认为它是“我不知道更好的”把数字转换成<代码>字符串< /代码>的例子。@ Mal物理学家:我把“懒惰”替换为更不友好的东西。在编程环境中,“lazy”已经不够友好:)@SiddharthVarshney,因为BigInteger应该表示一个数字,而您必须提供一个。它可以来自简化代码,如“new BigInteger(“+n)”,这并没有那么可怕。我不确定((整数)1).toString()对于这种类型的演示是否更清晰。@bko。可能有人编写得很快,并且对变量进行了编码,但却暂时忘记了可以将文本直接插入字符串中。像
“+x
这样的东西更有意义。@BillK。更简单的“正确”方法是
String.valueOf(1)
,不?在参数括号内执行任何类型的操作都是超级脏的imho,或者将其上移一行,并将显式强制转换声明为您可能需要的任何类型,并显式声明该类型。我不是说一种方法是好的还是坏的,我是说它们都一样坏,如果我不得不选择我同意@MadPhysicast的方法,那么它更好的共同调用
String.valueOf(1)
。为什么?您可以阅读有效的Javascript,“+x”习语并不罕见或缓慢。我个人并不经常使用它,但如果习惯了它的人想争辩说它比方法调用更具可读性,显示出更清晰的意图,我不会太不同意。它还可以处理空值,而不会引发异常,根据您的目的,异常可能会更好(比如添加用于调试的快速日志语句)。此外,您可能已经在添加字符串,以便它适合现有模式,其中方法调用可能会破坏某些东西。System.out.println(“+lineNo+”:“+lineData”)可能比备选方案更清晰。