zoukankan      html  css  js  c++  java
  • 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);
            
            
            
        }
        
    }
  • 相关阅读:
    无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限
    sql server 2008收缩数据库日志
    c#基本语法
    写点东西
    转载 程序人生成长发展中的一些感悟
    C#基本问题
    对象入门
    21k8s部署discuz
    Mysql基础管理
    将枚举作为参数,迭代枚举。Passing Enum type as a parameter
  • 原文地址:https://www.cnblogs.com/spp666/p/11676871.html
Copyright © 2011-2022 走看看