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.

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

  • 相关阅读:
    自定义控件小结进阶篇
    SQL注入语句 (很全)
    C# winform DataGridView 属性说明 [C# .NET]
    MDI窗体程序中防止子窗体被多次实例化——Singleton的C#实现
    精妙SQL语句大全
    sql语句
    注销时关闭当前窗体,返回登入界面
    C#中DataGridView的使用 [C# .NET]
    C#开发 WinForm中窗体显示和窗体传值相关知识
    HDU2553 (N皇后)
  • 原文地址:https://www.cnblogs.com/zx-coder/p/12746002.html
Copyright © 2011-2022 走看看