java运算注意事项

/*
对于byte、short、char。插入三种类型来说,如果右侧固执的数值没有超过范围,那么java编译器就会自动隐含地位我们
补上一个(byte) ,(short),(char)

1、如果没有超过左侧的范围,编译器补上强转
2、如果超过了左侧范围,那么直接编译报错
*/

public class Demo02Notice{
    public static void main(String[] args){
        //右侧确实是一个int数字,但是没有超过左侧的范围,就是正确的
        // int————> byte 不是自动转换类型
        byte num1 = 30; // (byte)30;  右侧没有超过范围
        System.out.println(num1); //30

        //byte num2 = 128  右侧超过范围

        // int ————> char 没有超过范围
        //编译器将自动补上一个隐含的(char)
        char zifu = 65;
        System.out.println(zifu);//A
    }
}

/*
在变量进行赋值的时候,如果右侧的表达式当中的全部是常量,没有任何变量‘
那么编译器java将会直接将若干个常量表达式计算得到结果;
short result = 5 + 8;  // 等号右边的全是常量,没有任何边变量参与运算
编译之后。得到的.class字节码文件当中相当于【直接就是】:short result = 13;
右侧的常量结果数值没有超过左侧范围,所以正确————这成为“编译器的常量优化”

但是,一旦表达式当中有变量参与,那么就不能进行这种优化了。
*/
public class Demo02Notice2{
    public static void main(String[] args){
        short num1 = 10; // 正确写法,右侧没有超过左侧的范围

        short a = 5;
        short b = 6;
        // short + short ----> int + int ----> int
        //short result = a+b; // 错误写法!左侧主要是int类型

        // 右侧不用变量,而是采用常量,而且只有两个常量
        short result = 5 + 8;
        System.out.println(result);

    }

}

原文地址:https://www.cnblogs.com/spp666/p/11676871.html

时间: 2024-10-23 09:55:35

java运算注意事项的相关文章

java运算中的优先级

java运算中的优先级1增量和减量运算2算数运算3比较运算4逻辑运算5赋值运算 java运算中的优先级,布布扣,bubuko.com

java 运算顺序

java 运算顺序,布布扣,bubuko.com

Java运算基础

计算机对负数的运算 =  先取绝对值的原码----> 然后取反,----->+1   这是负数的补码表示 例如  -5       5的原码= 0000,0101  取反   1111,1010, +1  =   1111,1011 补码求原码   补码在求一次补码 就是补码的原码 例如 -5     补码  1111,1011    先求反码 在+1     1000,0100 , +1  = 1000,0101 位移 是针对补码的位移 求原码的值 >>右移    最高位是0 最

关于Java运算中类型自动提升的问题

1.表达式中的自动类型提升: 表达式求值时,Java自动的隐含的将每个byte.short或char操作数提升为int类型,这些类型的包装类型也是可以的. 例如:short s1 = 1; s1 = s1 + 1; s1+1运算中的操作数s1会被自动提升为int类型,s1+1运算结果会成为int类型,再赋值给short类型的s1时,编译器会报告需要强制转换类型的错误.需要改为short s1=1; s1=(short)(s1+1);结果就是short类型. 例如:short s1 = 1; s1

java static注意事项

java中由static修饰的变量,长量,方法称为静态变量,长量,方法. 缘由:有时候需要两个类需要在同一个内存区域共享一个数据,这样就可以将这个变设为静态的,静态成员属于类所有,区别于个别对象. 注意事项:1,虽然静态成员也可以使用对象.静态成员,但这样不好区分静态成员和非静态成员. 2,静态方法中不可以使用this关键字. 3,静态方法中不可以直接调用非静态方法 4,不能将方法中的局部变量设为静态的 5,可以使用静态区域先执行类的初始化.

BigDecimal进行除法divide运算注意事项

Java编程中 BigDecimal进行除法divide运算时,如果结果不整除,出现无限循环小数.则会抛出以下异常: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 应用场景:一批中供客户的单价是1000元/年,如果按月计算的话1000/12=83.3333333333.... 解决之道:就是给divide设置精确的小数点divide(

学习日记(五)java运算

java在运算的时候,会存在数据类型的转换,其中一种是自动类型转换,也称为隐式类型转换,这种转换需要满足一定的条件: 1.这两种类型是兼容的,例如同时都是整数类型或者都是数字类型 2.目的类型数的范围要大于来源数据的范围 运算时数据类型转换还有一种是强制类型转换,也称为显示类型转换,这种转换有的时候会发生截断和缩小,例如将一个小数强制转换成整数,则会丢弃小数部分. 所有byte型和short型在运算时会自动转换为int型,两个byte型运算的结果是int型而不是byte型:如果表达式中有操作数是

Java异常实践事项

在大学项目开发中, 你有没发现自己做的项目总是出现bug,不仅仅出现bug,而且很难根据异常信息找到异常源.我当时也是非常懊恼, 可怕的是不知道怎么维护... 软件Java异常需要理解基础的知识, 在实战中较好的处理异常.Java异常基础知识 .tryCatchFinally语句块  本节总结Java异常在实践中的相关事项 1. 在Finally中清理资源或者使用Try-With-Resource语句       不要在try中关闭资源.因为一旦发生异常, 将无法正常关闭资源.以下代码给出二种处

数据处理json格式以及java编写注意事项

我们先来学习下JSON定义: (1).JSON是一种轻量级的数据交换格式 (2).JSON基于两种数据结构:Object和Array.其中Object是"名称/值"对的集合. (3).对象:大括号,每一组string-value结合以","分隔,string和value以冒号分隔. JSON数据格式,在Android中被广泛运用于客户端和网络(或者说服务器)通信,非常有必要系统的了解学习. JSON解析 (1).解析Object之一: {"url"