相关疑难解决方法(0)

将字符串与==进行比较,这些字符串在Java中声明为final

我有一个关于Java中的字符串的简单问题.以下简单代码段仅连接两个字符串,然后将它们与之进行比较==.

String str1="str";
String str2="ing";
String concat=str1+str2;

System.out.println(concat=="string");
Run Code Online (Sandbox Code Playgroud)

比较表达式concat=="string"返回false那么明显(I明白之间的差值equals()==).


当这两个字符串被声明时final,

final String str1="str";
final String str2="ing";
String concat=str1+str2;

System.out.println(concat=="string");
Run Code Online (Sandbox Code Playgroud)

比较表达式concat=="string",在这种情况下返回true.为什么会final有所作为?它是否必须与实习生池做某事或我只是被误导?

java string final

217
推荐指数
4
解决办法
1万
查看次数

Java - char,int转换

在Java中,允许以下内容:

char c = 'A' + 1;
Run Code Online (Sandbox Code Playgroud)

这里,c将保持值'B'.在上面,首先评估表达式.所以'A'被转换为65,整个表达式的计算结果为66,然后66被转换为'B',因为我们将值存储在char中.

但是,以下内容会产生编译时错误:

char c = 'A';
c = c + 1;
Run Code Online (Sandbox Code Playgroud)

Java如何以不同方式查看表达式的解释是什么?顺便说一句,以下工作也很好:

char c = 'A';
c++;
Run Code Online (Sandbox Code Playgroud)

java int type-conversion char variable-assignment

39
推荐指数
1
解决办法
2万
查看次数

为什么我不能添加两个字节并得到一个int,我可以添加两个最后的字节得到一个字节?

public class Java{
    public static void main(String[] args){
        final byte x = 1;
        final byte y = 2;
        byte z = x + y;//ok
        System.out.println(z);

        byte a = 1;
        byte b = 2;
        byte c = a + b; //Compiler error
        System.out.println(c);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果涉及任何int-sized或者更小的表达式的结果总是为int,即使两个字节的总和适合一个字节.

当我们添加两个适合字节的最终字节时,为什么会这样? 没有编译器错误.

java int scjp variable-assignment ocpjp

27
推荐指数
2
解决办法
2万
查看次数

在Java推广?

促销的规则是"当操作数具有不同类型时,自动二进制数字促销发生,较小的操作数类型转换为较大的".但操作数是相同类型的,例如,

byte=byte+byte // Compile time error... found int..
Run Code Online (Sandbox Code Playgroud)

那为什么会这样呢?

java

24
推荐指数
2
解决办法
2万
查看次数

标签 统计

java ×4

int ×2

variable-assignment ×2

char ×1

final ×1

ocpjp ×1

scjp ×1

string ×1

type-conversion ×1