为什么char = char -32显示松散的转换错误,而char - = 32则没有?

时间:2018-03-11 01:35:44

标签: java

class lower_caseToUpperCase {
public static void main(String[] args)
throws java.io.IOException {
     char ch, ignore;
     int case_change = 0;
     do {
      System.out.print("Enter any number of characters: ");
      ch = (char) System.in.read();
         do {
         ignore = (char) System.in.read();
              }while(ignore != '\n'); 
         if(ch >= 'a' && ch <= 'z') {
           ch -= 32;//shows error if you use ch = ch - 32;
            System.out.println(ch);
               case_change++;
             }
          else if(ch >='A' && ch <='Z') {
             ch += 32;//same as above
               System.out.println(ch);
                 case_change++;
              }
         } while(ch != '.');
       System.out.print("No. of case changes = " + case_change);
    }
   }

每当我使用char = char +32时,它都会显示松散的转换错误 但是当我使用char + = 32时它运行正常。为什么会这样? 请帮忙..

1 个答案:

答案 0 :(得分:1)

这是因为32是整数,所以当你写char = char + int时你会收到警告

但是运算符+=是特殊的,在java中它被解析为char = (char)(char + int)所以你没有因为隐式的情况而看到警告