相关疑难解决方法(0)

数字推广是否适用于Java中的常量?

§5.1.2§5.6.2没有提到常量的数字推广和扩展工作.

以下给出了预期的错误:

short a = 2;
short b = 3;
short s = a + b; // error: incompatible types: possible lossy conversion from int to short
Run Code Online (Sandbox Code Playgroud)

但如果它们被宣布为final,则编译没有错误:

final short a = 2;
final short b = 3;
short s = a + b; // no error
Run Code Online (Sandbox Code Playgroud)

这是为什么?规格的哪一部分解释了这一点?

我的猜测是它们是编译时常量,因此被视为整数.

java constants

6
推荐指数
1
解决办法
48
查看次数

Java中"abc"+"de"和"abc"+ de(de ="de")之间的区别?

我运行以下代码并获得评论中显示的结果.我知道之间的差异==.equals().我不明白的是为什么我的第二行代码与第三行代码的结果不同.

    String de = "de";
//  String abcde = "abc" + "de"; // abcde == "abcde" reture true
    String abcde = "abc" + de;   // abcde == "abcde" reture false;
    System.out.println();
    System.out.println(abcde=="abcde");
    System.out.println(de=="de");
Run Code Online (Sandbox Code Playgroud)

在尝试调试时,我使用了javap -c命令并为第一个字符串连接获得了以下输出'code':

         Code:
 0:   ldc     #9; //String de
 2:   astore_1
 3:   new     #10; //class java/lang/StringBuilder
 6:   dup
 7:   invokespecial   #11; //Method java/lang/StringBuilder."<init>":()V
 10:  ldc     #4; //String abc
 12:  invokevirtual   #12; //Method java/lang/StringBuilder.append:(Ljava/lang
 String;)Ljava/lang/StringBuilder;
 15:  aload_1
 16:  invokevirtual   #12; //Method java/lang/StringBuilder.append:(Ljava/lang
 String;)Ljava/lang/StringBuilder;
   19:  invokevirtual …
Run Code Online (Sandbox Code Playgroud)

java string

5
推荐指数
1
解决办法
472
查看次数

标签 统计

java ×2

constants ×1

string ×1