草庐IT

Literals

全部标签

java - 为什么在 Java 中允许双文字的任意精度?

刚从PeterLawreyspost中了解到这是有效的表达式,计算结果为true。333333333333333.33d==333333333333333.3d我的问题是,为什么允许使用不能用double表示的double文字,而不允许使用不能表示的整数文字。这个决定的理由是什么。旁注,我可以实际上触发double文字的超出范围编译错误:-)9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

java - 为什么 -1001 不是有效的 Java 整数文字?

在Java中,-1001不被视为有效的整数文字。为什么? 最佳答案 Java中没有负十进制文字这样的东西;见JLS§3.10.1.-1001是一个编译时可计算常量表达式,由字面值1001的一元否定组成。(同样适用于C和C++)。 关于java-为什么-1001不是有效的Java整数文字?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/39032928/

java - JAVA中重载方法的调用顺序

我正在学习一些java考试,我遇到了这个问题://Writetheoutputofthisprogram:publicstaticvoidmethod(Integeri){System.out.println("Integer");}publicstaticvoidmethod(shorti){System.out.println("short");}publicstaticvoidmethod(longi){System.out.println("long");}//...publicstaticvoidmain(String[]args){method(10);}//ANSWER:

Java 二进制文字 - 字节值为 -128

从SE7开始,Java允许将值指定为二进制文字。文档告诉我“字节”是一种可以容纳8位信息的类型,值-128到127。现在我不知道为什么但我不能定义8位而只能定义7位如果我尝试将二进制文字分配给Java中的字节如下:byteb=0b000_0000;//solvestothevalue0byteb1=0b000_0001;//solvestothevalue1byteb3=0b000_0010;//solvestothevalue2byteb4=0b000_0011;//solvestothevalue3依此类推,直到我们找到使用这7位的最后几种可能性:byteb5=0b011_1111

java - 在Java中为int动态添加0x前缀

inti=16777215;voiddraw(intcolor){}假设voiddraw期望颜色以0x前缀开头,就像这样draw(0x16777215)如果我尝试这样做,它会抛出一个语法错误draw(0x+i)Invalidhexliteralnumberinti不能包含0x部分,需要动态添加谢谢 最佳答案 0x1234只是另一种写入整数值的方式。例如,0xff和255是完全相同的东西。draw(0x16777215)和draw(376926741)是相同的调用。在字节码级别,没有任何差异。唯一的区别在于它在阅读代码的人看来如何;有

java - Clojure 中的默认十进制文字不是 BigDecimal 类型有什么原因吗?

我了解到Clojure阅读器将带后缀“M”的十进制文字(如1.23M)解释为BigDecimal。而且我还知道没有“M”的十进制数字会变成Javadouble。但我认为普通十进制数是BigDecimal会更好,并且依赖于主机的十进制数有后缀,比如1.23H。因此,当数字由于IEEEdouble的精度限制而损坏或被截断时,我们可以很容易地注意到该数字是有精度限制的。另外,我认为更简单的表达应该是独立于主机的。除了时间性能之外,Clojure将文字十进制解释为Javadouble有什么原因吗?另外,我不认为时间性能是一个答案,因为它不是C/C++,并且可以像“1.23H”一样实现声明依赖于

java - 正确匹配 Java 字符串文字

这个问题在这里已经有了答案:RegextoreplaceallstringliteralsinaJavafile(4个答案)关闭8年前。我正在寻找一个正则表达式来匹配Java源代码中的字符串文字。这可能吗?privateStringFoo="Apotato";privateStringBar="A\"car\"";我的意图是用其他内容替换另一个字符串中的所有字符串。使用:StringA="Iwenttothestoretobuya\"coke\"";StringB=A.replaceAll(REGEX,"Pepsi");像这样。

java - 整数中的字母。这些是什么?

这是我在Java中使用的一个类的代码摘录(如下)。显然,代码定义了一个名为EPSILON的静态变量,数据类型为double。我不明白的是“1E-14”部分。那是什么数字?什么意思?最终双EPSILON=1E-14; 最佳答案 在您的情况下,这等同于编写:finaldoubleEPSILON=0.00000000000001;除了你不必数零。这叫做scientificnotation并且在编写非常大或非常小的数字时很有帮助。 关于java-整数中的字母。这些是什么?,我们在StackOve

java - 为什么 int j = 012 给出输出 10?

在我的实际项目中偶然发现这里是我修改的小程序。我不明白为什么输出是10?publicclassInt{publicstaticvoidmain(Stringargs[]){intj=012;//accidentalyiputzeroSystem.out.println(j);//prints10??}}在那之后,我放了两个零仍然给出输出10。然后我将012更改为0123,现在输出为83?谁能解释一下为什么? 最佳答案 ThanIchange012to0123andnowitisgivingoutput83?因为它被视为八进制基数(8

c++ - 禁用关于 "underscore-prefixed user-defined literals"的 GCC 警告

我的一个客户有很多代码使用了“ui64”、“ui32”等...后缀,我需要移植它。为了避免验证几个正则表达式查找+替换的可能漫长的夜晚,我将所述后缀重现为用户定义的文字。我正在寻找“-Wno-xxx”标志,用于作为结果弹出的“前面没有‘_’”警告。我搜索了警告列表here,但我的大脑目前正遭受相当严重的字母汤综合症,所以我可能错过了。我使用的是cygwin附带的g++4.8.2。 最佳答案 我相信您正在寻找-Wno-literal-suffix。从gcc-7开始(见此处liveongodbold),这个选项也是turnsoffwar