Java语言基础
分析了几种错误及解决方案,写出来跟大家分享
显式类型转化
public class Convert{
public static void main(String[]args){
//TODO AUTO-generated method stub
byte a=(byte)129.222;
System.out.println(a);
}
}
编译器显式转化结果为-127
解决方法:
转化时应该注意各变量的取值范围,byte的范围是-128-127,129.22已经超过范围,但编译器不会报错,应该注意此类问题
复合语句
输出局部变量时报错
在最外层输出局部变量时编译失败。
解决方法:
局部变量的作用域仅限于创建它的复合语句内,内部作用域可以访问外部作用域变量,反之不可以,所以解决上面问题只需要在变量对应的层输出就可以。
public class Compand{
public static void main(String[]args){
int x=20;{
int y=40;
System.out.printlun(y);
int z=245;
boolean b;
{
b=y>z;
boolean b;
b=y>z;
System.out.println(b);
System.out.println(b);
}
System.out.println(b);
System.out.println(b);
}
System.out.println(z);
System.out.println(y);
}
String word="hello world";
System.out.println(word);
}
循环语句
陷入死循环
用while语句输出时进入死循环,无法输出结果。
public class First{
public static void main(String[]args){
int x=0;
while(x!=5);
System.out.println("x等于"+(++x));
}
}
解决方案:
出错原因大多是都是混淆do-while与while的区别,do-while循环一般要在循环结束后加“;” ,while循环不需要
运行for循环语句出错
运行结果如下所示:
[I@2a139a55
[I@2a139a55
[I@2a139a55
代码如下:
public class eg4_3_3{
public static void main(String[]args){
int a[]={1,2,3};
for(int x:a){
System.out.println(a);
}
}
}
解决方案:
将代码中的第5行改为:System.out.println(x);用来将遍历的内容显示出来,而不是将数组直接显示出来。
String类
连接多个字符串
输出一句相连的字符串时报错
用System.out.println输出“I like Java”时报错
public class HelloJava{
public static void main(String[]args){
System.out.println("I like Java");
//在编译器中"I like"会被标志为红线
}
}
解决方法:
用System.out.println输出过长字符串时可以用“+”号连接,方便显示
public class HelloJava{
public static void main(String[]args){
System.out.println("I like"+"Java");
//在编译器中"I like"会被标志为红线
}
}
好了,今天就先到这里吧。这几天遇见的问题不少,有时间再跟大家分享。