java基础知识(运算规则)

java基础知识(运算规则)

一. 运算规则
在运算中(切记:只有7种基本数据类型,无boolean型)
1.自动类型提升
byte–>short–>int–>long–>float–>double
容量大的与容量小的数据类型的变量运算时,结果自动提升为较大容量的数据类型(但是前三个除外,byte,short,int)。例如

public class Main {
     

    public static void main(String[] args) {
     
        byte a=5;
        int  m=129;
        int n=a+m;
        System.out.println(n);
    }
}

byte比int容量更小,所以结果用int型的。这是正确的!接下来是一个错例:

public class Main {
     

    public static void main(String[] args) {
     
        byte a=5;
        short  m=129;
        short n=a+m;//错误的
        System.out.println(n);
    }
}

这个运行会出现错误,因为对于byte ,short ,int之间相互运算时,结果都用int型。(包括byte和byte,short和short,的计算,即自身与自身)大家可以自己尝试我没举例子的。
如:

public class Main {
     

    public static void main(String[] args) {
     
        byte a=5;
        byte m=3;
        byte n=a+m;//依旧需要改成int型的,否则报错
        System.out.println(n);
    }
}

有人会问,那浮点型和整型直接可以计算吗?
如下例:

public class Main {
     

    public static void main(String[] args) {
     
        float a=1.559f;
        short  m=129;
        float n=a+m;
        System.out.println(n);
    }
}

显而易见,这是可以的,但是我们必须注意结果的值不在用int型的类型,而是用float型,用int型会弹出来:"java: 不兼容的类型: 从float转换到int可能会有损失"得不到结果。所以注意灵活变化。结果会和一开始定义的a值的小数位数相同。
最后,可能小伙伴们会好奇char型怎么运算?这就涉及到一个字母与数字的转换关系了(ASCLL码感兴趣可以了解一波),A是65开始,往后每个字母按照英文字母表推就可以,a是97,同理推就完事。还是给个例子叭:

public class Main {
     

    public static void main(String[] args) {
     
        float a=1.559f;
        char m='b';
        float n=a+m;
        System.out.println(n);
    }
}

结果是99.559,因为b对应98。
2.强制类型转化
上一个自动类型是直接在结果处选择适当的数据类型就完事了,可以想成自动挡,而反推则比较烦,到那时还是可以的(即自动提升的逆运算),但可能会发生截断,即位数丢失!=四舍五入。下例就是比较简单的一种:

public class Main {
     

    public static void main(String[] args) {
     
        byte a=5;
        float i=(float)a;
        System.out.println(i);
    }
}

方法:先定义需要被转化的数据类型,然后定义目的数据类型(一定要加括号,括号后跟要变的数)
对于char型的,也可以用逆转化,即如下:(以例说话,哈哈哈)

public class Main {
     

    public static void main(String[] args) {
     
        byte m=97;
        char i=(char)m;
        System.out.println(i);
    }
}

这就将数字转化成了字母。一定注意格式!!!

你可能感兴趣的:(java,笔记,学习心得,java,编程语言)