A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

13297026005

初级黑马

  • 黑马币:40

  • 帖子:12

  • 精华:0

© 13297026005 初级黑马   /  2019-3-29 19:33  /  713 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

与数据类型转换相关的错误及其错误原因汇总package cn.itcast.Practice;
public class DingYi {
    public static void main(String[] args){
        int a = 10;
        int b = 20;
        long l = 1000;
        double d = 3.14;
        //float f = 3.1;Error:(9, 19) java: 不兼容的类型: 从double转换到float可能会有损失
        float f=3.1F;
       // byte b = 1;Error:(11, 14) java: 已在方法 main(java.lang.String[])中定义了变量 b。
       // long l2 = 1000000000000;整数太大,默认是integer类型,超出了integer范围,更正加L。
        long l2 = 1000000000000L;
       /* int num;
        System.out.println(num);Error:(15, 28) java: 可能尚未初始化变量num*/
       int num=0;
        System.out.println(num);
        byte c=56;//编译器的优化:当我们把常量赋值个byte,short的时候,编译器获取判断常量值是否在对应类型的范围之内,
        // 如果在则不会报错可以直接赋值。如果超过了范围则会报错。
       // 编译的时候,编译器会进行语法检查,但是在这个过程中不会去计算有变量参与的运算。
        byte dd=5;
       // byte g=c+d;Error:(20, 17) java: 不兼容的类型: 从double转换到byte可能会有损失。
        //byte/short/char这三种类型都可以发生数学运算.在运算的时候都会先被提升为int类型再进行计算.
    }
}
与变量作用范围相关错误及其原因案例package cn.itcast.day;
public class BianLiangFanWei {
    public static void main(String[] args) {
       /* {
            int cc = 20;
            System.out.println(cc);
        }
        int cc = 10;
        System.out.println(cc);*/
       //上面程序没有问题,第一个cc在大括号之后作用范围就结束了。重新定义没有问题。
/*       int a=20;
        {
            int a=30;
        }
        System.out.println(a);*/
        //第一个int cc作用范围没结束,又定义int cc,重复定义报错。
    int a=10;
        {
            System.out.println(a);
        }
        //大括号在a的作用范围不报错。
    }
}

与if...else相关报错及其原因案例package cn.itcast.Practice;
public class Breakcontinue {
    public static void main(String[] args) {
        for(int i=1;i<10;i++){
            if(i%2==0){
                continue;
            }else{
                break;
            }
         //   System.out.println(i);Error:(11, 13) java: 无法访问的语句
        }
       // 答案:因为最后的输出语句永远执行不到,这个时候编译的时候就会报错
    }
}

package cn.itcast.Practice.Stringliti;
public class IfElse {
    public static void main(String[] args) {
        int a=10;
        int b;
        if(a%2==0){
            b=0;
        }else if(a%2==1){
            b=1;
        }
        System.out.println(b);//Error:(12, 28) java: 可能尚未初始化变量b
        //会在编译的时候报错.因为在编译的时候编译器看到了if...else if语句.它认为有可能两个判断都不成立.这样的话b就可能出现没有赋值直接使用的情况.
    }
}
与重载相关的特殊案例package cn.itcast.Practice;
//重载字符会先执行char类型的方法,如果没有就转换成int类型执行int类型的方法,没有int类型方法然后依次是long,double方法。
public class ChongZaiTeLie {
    public static void main(String[] args) {
    sayHello('a');
    }
    public static void sayHello(byte arg){
        System.out.println("Hello byte");
    }
    public static void sayHello(short arg){
        System.out.println("Hello short");
    }
    /*public static void sayHello(int arg){
        System.out.println("Hello int");
    }*/
    /*public static void sayHello(long arg){
        System.out.println("Hello long");
    }*/
    public static void sayHello(char arg){
        System.out.println("Hello char");
    }
    public static void sayHello(String arg){
        System.out.println("Hello String");
    }
    public static void sayHello(double arg){
        System.out.println("Hello double");
    }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马