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.

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

  • 相关阅读:
    多线程锁--怎么理解Condition
    ThreadPoolExecutor
    ThreadFactory
    java内部类的初始化
    Android Private Libraries 和 Dependencies的区别
    Android严苛模式StrictMode使用详解
    [法律法规]《网络安全等级保护条例(征求意见稿)》
    [法律法规]中华人民共和国网络安全法
    Sqlserver tablediff的简单使用
    Sqlserver 命令行方式修改 用户密码的方法
  • 原文地址:https://www.cnblogs.com/zx-coder/p/12746002.html
Copyright © 2011-2022 走看看