1.找不到符号;程序包不存在
1 //此类在控制台打印HelloWorld 2 class HelloWorld 3 { 4 public static void main(string[] args) 5 { 6 system.out.println("Hello World!"); 7 } 8 }
原因:string和system首字母小写
解决方法:string和system首字母大写
2.NoClassDefFoundError
1 //[F:JavaTrainingElementaryClass20170402Day01AssignmentsCodeDay01Student.java]
原因:运行.class文件时文件名没有和编译java源文件后生成的类文件的文件名一样
解决方法:修改类文件名和编译后的文件名一致
3.可能尚未初始化变量var
1 //[F:JavaTrainingElementaryClass20170403Day02AssignmentsCodeDay02VariableUsageErrorDemo.java] 2 /* 3 错误: 可能尚未初始化变量var 4 int var; 5 System.out.println("var=" + var); 6 */
原因:未给变量初始化值
4.找不到符号
1 //[F:JavaTrainingElementaryClass20170403Day02AssignmentsCodeDay02VariableUsageErrorDemo.java] 2 { 3 int i = 5; //定义变量i并赋初始值5 4 } 5 System.out.println("i=" + i);//打印i
原因:打印引用的变量i超出了其存在的域(int i = 5作用范围只存在{}内)
解决方法:将System.out.println("i=" + i);放入{}内或将int i = 5;放入{}外
5.int类型数据可能损失精度
1 /** 2 //[F:JavaTrainingElementaryClass20170403Day02AssignmentsCodeDay02 IntDemoOfEzraOholiab.java] 3 { 4 byt = 200;//将200赋给byt 5 System.out.println("byt=" + byt);//打印byt 6 } 7 */
原因:200默认为int型,占4个字节,而byte型占1个字节,将占4个字节的200放入占1个字节的内存空间中会损失精度
解决方法:将右侧的初始值调整到byte类型的范围内
6.过大的整数
1 //[F:JavaTrainingElementaryClass20170403Day02AssignmentsCodeDay02 IntDemoOfEzraOholiab.java] 2 //定义一个long型变量lo并赋初值为500亿 3 long lo = 50000000000; 4 //打印lo 5 System.out.println("lo=" + lo);
原因:出现整数时系统默认为int类型,其范围为-20亿多~20亿多,500亿超出了其范围
解决办法:在500亿后加’L’
7.double类型数据可能损失精度
1 //[F:JavaTrainingElementaryClass20170403Day02AssignmentsCodeDay02DoubleDemoOfEzraOholiab.java] 2 //定义一个float型变量f并赋初始值为5.03 3 float f = 5.03; 4 //打印f 5 System.out.println("f=" + f);
原因:double是默认的小数类型,其占用8个字节,而float占用4个字节,double类型小数赋值给float类型小数时会损失精度。
8.5种常见运行时异常
①java.lang.NullPointerException
②java.lang.ArrayIndexOutOfBoundsException
③java.lang.InputMismatchException
④java.lang.ArithmeticException
⑤java.io.FileNotFoundException