zoukankan      html  css  js  c++  java
  • java中如何理解:其他类型 + string 与 自增类型转换和赋值类型转换

    java中如何理解:其他类型 + string 与 自增类型转换和赋值类型转换

    一、字符串与其他类型连接

    public class DemoString{
        public static void main(String[] args){
            System.out.println(5 + 5 + " 5 + 5 = " + 5 +5 );
        }
    }
    

    输出

    out: 105 + 5 55
    

    why?

    自左向右运算,+号有字符串参与的话就是连接的作用,因为他没法直接运算. 任何类型和字符串相加都会变成字符串类型 字符串就相当于生化危机中的僵尸,碰到谁就把谁感染成僵尸

    二、类型转换之自增自减和赋值

    1. 类型转换易错点:

    public class Demo01{
        public static void main(String[] args){
            short s = 1;
            s = s + 1;
            System.out.println(s);
        }
    }
    

    输出:

    out:
    Demo01.java:4: 错误: 不兼容的类型: 从int转换到short可能会有损失
            s = s + 1;
                  ^
    1 个错误
    

    why?

    char/ short/byte类型的数,参与运算时,自动转换为int类型

    2. 自增自减类型不发生转换:

    public class Demo01{
        public static void main(String[] args){
            short s = 1;
            s++;
            System.out.println(s);
        }
    }
    

    输出:

    out:
    2
    

    3. 赋值运算类型内部转换:

    public class Demo01{
        public static void main(String[] args){
            short s = 1;
            s+=1;
            System.out.println(s);
        }
    }
    

    输出:

    out:
    2
    

    why?

    s += 1;  ===>  s = short(s+1)
    

    分析: s += 1 逻辑上看作是 s = s + 1 计算结果被提升为int类型,再向short类型赋值时发生错误,因为不能将取值范围

    大的类型赋值到取值范围小的类型。但是, s=s+1进行两次运算 , += 是一个运算符,只运算一次,并带有强制转换的特点,
    也就是说 s += 1 就是 s = (short)(s + 1) ,因此程序没有问题编译通过,运行结果是2.

    对右侧的变量表达式,整体进行强制类型转换

  • 相关阅读:
    oracle a:=100 和 b=:c 区别
    Oracle为表或字段添加备注
    oracle删除表字段和oracle表增加字段
    oracle数据库的一个表中,怎么设置字段的默认值
    VS2015密钥
    C# 调用WebApi
    OCX ClassId查看
    C++ 调用类的函数
    如何做一个标记为安全的ACTIVEX控件
    Java内存通道
  • 原文地址:https://www.cnblogs.com/zx-coder/p/12746002.html
Copyright © 2011-2022 走看看