编译xx.java文件时,未生成对应class文件

97gogo / 2024-07-16 / 原文

现象:编译xx.java文件时,未生成对应class文件;或报错:不可映射字符

原因:文件中有中文,编码模式不匹配

控制台-属性-选项,可看见控制台的编码是GBK编码;

如果.java文件里含有中文,需将.java文件的编码模式也改为GBK保存。

 


 

现象:执行命令>java Hello.class,报错:找不到或无法加载主类

原因:添加了后缀,程序认为需要找到Hello.class这个类来执行,实际需要执行的是Hello这个类

运行的是编写的Hello这类,不必加后缀。

 


 

Memo1

int i = 1;
i = i ++;
System.out.println(i);
int i = 1;
i = ++ i;
System.out.println(i);

问:结果是多少,为什么?

结果分别是 1,2

赋值时,规则使用临时变量。

1:(1) i = 1;  (2) temp = i = 1,i = i + 1 = 2;  (3) i = temp = 1

2:(1) i = 1;  (2) i = i + 1 = 2;  temp = i = 2;  (3) i = temp = 2


 

现象:执行以下代码,无论temperature赋值多少,输出结果都是0

double temperature = 235.6
sheshi =  5/9*(temperature - 100);
System.out.println(i);

原因:计算机计算 5/9 时返回值是int 0 ; 将 5 改为 5.0 可解决该问题。 

 


 Memo2

以下赋值语句是否正确

 

A) int num1 = (int)"18"; 

B)  int num2 = 18.0; 

C)  int i = 48; char ch = i +1; 

D)  byte b = 19; short s = b+2;

 

//error, String 类转换为int应为 Interger.parseInt("18")
//error,double类不能赋值给int类,不能自动转换,只能强制转换
//error,int类不能赋值给char类,只能强制转换,char ch = (char) i+1 则是对的
//error,byte参与运算,自动转换为int型,int不能赋值给short

 

 Memo3

其他类型转换为String:+ ""

String转成 char 类型:stringInstace.charAt(index); 

String 转成其他 XX 类型:XX.parseXX();