编译xx.java文件时,未生成对应class文件
现象:编译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();