直到今天,我还以为:
i += j;
Run Code Online (Sandbox Code Playgroud)
只是一个捷径:
i = i + j;
Run Code Online (Sandbox Code Playgroud)
但是如果我们试试这个:
int i = 5;
long j = 8;
Run Code Online (Sandbox Code Playgroud)
然后i = i + j;将不会编译但i += j;将编译正常.
这是否意味着事实上i += j;是这样的捷径
i = (type of i) (i + j)?
java casting operators variable-assignment assignment-operator
以下代码段发出编译时错误.
char c = 'c';
char d = c + 5;
Run Code Online (Sandbox Code Playgroud)
第二行的错误说,
possible loss of precision
required: char
found: int
Run Code Online (Sandbox Code Playgroud)
该错误消息基于NetBeans IDE.
当此字符c声明final如下时.
final char c = 'c';
char d = c + 5;
Run Code Online (Sandbox Code Playgroud)
编译器时间错误消失了.
它与最终字符串的情况无关
什么是final修改有所作为吗?
促销的规则是"当操作数具有不同类型时,自动二进制数字促销发生,较小的操作数类型转换为较大的".但操作数是相同类型的,例如,
byte=byte+byte // Compile time error... found int..
Run Code Online (Sandbox Code Playgroud)
那为什么会这样呢?
为什么不编译以下代码
int n = 5;
char c = n;
Run Code Online (Sandbox Code Playgroud)
但以下编译
char c = 5;
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我不只是为char分配一个整数值吗?
我认为任何算术表达式的结果至少是一个int.7/3是一个表达式 - 它有一个运算符(除法).
但为什么编译好呢?
byte b1 = 7 / 3; // 7/3 is not a literal?
short b2 = 7 / 3; // 7/3 is not a literal?
char b3 = 7 / 3; // 7/3 is not a literal?
Run Code Online (Sandbox Code Playgroud)
和f1()编译好吗?
byte f1() {
return 7 / 3; // Why is it allowed? Why isn't 7 / 3 an int ?
}
byte f2(int x) {
return x / 3; // c.ERR - type mismatch
}
byte f3(byte x) { …Run Code Online (Sandbox Code Playgroud) 我有以下代码
class arr
{
public static void main(String a[])
{
char c='A';
c+=10;
System.out.println(c);
}
}
Run Code Online (Sandbox Code Playgroud)
从java 8编译时,它编译成功.
output ķ
但是当我编译下面的代码时:
class arr
{
public static void main(String a[])
{
char c='A';
c=c+10;
System.out.println(c);
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
logic.java:6: error: incompatible types: possible lossy conversion from int to char
c=c+10;
^
Run Code Online (Sandbox Code Playgroud)
我不明白c=c+10,c+=10为什么我会收到这样的错误?请帮我.谢谢.
为什么我不能这样做?
public class test123 {
public static void main (String [] args) {
char c = 34;
char a = c + 10;
}
}
Run Code Online (Sandbox Code Playgroud)
java新手,如果这个问题实际上很愚蠢,我很抱歉。
char char1 = 'a';
System.out.println(char1); //prints char 1
System.out.println(char1+1); //prints char 1
System.out.println(char1++); //prints char 1
System.out.println(char1+=1); //prints incremented char1
char1 += 1;
System.out.println(char1); //prints incremented char1
Run Code Online (Sandbox Code Playgroud)
在上面,为什么不(char1 + 1)或(char ++)打印增量字符,而另外两个呢?