相关疑难解决方法(0)

为什么Java的+ =, - =,*=,/ =复合赋值运算符需要转换?

直到今天,我还以为:

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

3547
推荐指数
11
解决办法
28万
查看次数

Java中的最终字符

以下代码段发出编译时错误.

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修改有所作为吗?

java final char

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

在Java推广?

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

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

那为什么会这样呢?

java

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

可以为char指定整数值,但不能将整数变量赋给char

为什么不编译以下代码

int n = 5;
char c = n;
Run Code Online (Sandbox Code Playgroud)

但以下编译

char c = 5;
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我不只是为char分配一个整数值吗?

java int char

6
推荐指数
2
解决办法
4128
查看次数

为什么7/3不总是int?为什么它可以分配到字节或短,而x/3不能?

我认为任何算术表达式的结果至少是一个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)

java

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

在java中增加char数据类型

我有以下代码

 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为什么我会收到这样的错误?请帮我.谢谢.

java

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

Java 字符加法(char1 = char2 + 10)

为什么我不能这样做?

public class test123 {
    public static void main (String [] args) {
        char c = 34;
        char a = c + 10;

    }
}
Run Code Online (Sandbox Code Playgroud)

java新手,如果这个问题实际上很愚蠢,我很抱歉。

java

0
推荐指数
1
解决办法
128
查看次数

为什么System.out.println()中没有字符增量?

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 ++)打印增量字符,而另外两个呢?

java increment char println

-3
推荐指数
1
解决办法
7208
查看次数