• 【Java基础】字面量相加的类型转换


    Java字面量的相加类型转换

    1、Java 编译期间(javac),凡是字面量和常量的运算,都会先运算出结果
    2、运行期当字符串池中有 String"字面量"时,Java 会直接用,如果没有才创建,在以下代码中,在编译时运行的代码行会预先在String池中寻找字面量,
    如果存在,就直接复用,不再创建。

    在以下的demo中:
    字符串 ss 进行的是变量运算,是在运行时执行,且产生了新对象。所以比较结果为false。
    对于 s4 ,前3个char型被当成int 型进行运算,实际相加的是该字符的ASCII码值。所以结果为 150abc。
    对于 s5 ,1虽然为int型,但加上String "abc" 后,又被强转成了String型。
    对于 s6 ,前两个int值会在编译期间预先算出结果,所以最终s6=33abc。
    而String s7和s8都进行了new操作,强制创建了新的字符串对象,开辟了新的内存空间,所以两个都为FALSE。
     
     1 public class StaticStringDemo {
     2     public static void main(String[] args) {
     3        
     4         String s = "123abc";
     5         String ss = s + ""; // 变量运算在运行期执行,产生新对象
     6         String s1 = "123abc";
     7         String s2 = "123" + "abc"; // 字面量运算在编译时优化
     8         String s3 = "1" + "23" + "abc";
     9         String s4 = '1' + '2' + '3' + "abc";// 结果为 150abc,因为前3个字符会被当做int进行加运算。
    10         String s5 = 1 + "23abc";
    11         String s6 = 1 + 2 + "3abc";
    12         String s7 = new String("123abc");
    13         String s8 = new String("123" + "abc");
    14         System.out.println(s == s1); // true
    15         System.out.println(s == ss); // false
    16         System.out.println(s == s2); // true
    17         System.out.println(s == s3); // true
    18         System.out.println(s == s4); // false
    19         System.out.println(s == s5); // true
    20         System.out.println(s == s6); // false
    21         System.out.println(s == s7); // false
    22         System.out.println(s == s8); // false
    23         // 注意:以上的 == 是比较变量的值是否相等或是否是同一个对象
    25 
    26     }
    27 
    28 }
  • 出处: http://www.cnblogs.com/hiscode/
    本文版权归作者和博客园共有,转载请在文章页面明显位置标明原文链接。
  • 相关阅读:
    增强学习--值迭代
    makefile opencv的案例
    shiro拦截器处理链执行顺序
    HTTP头字段总结
    IntelliJ IDEA上创建Maven Spring MVC项目
    使用deploy命令发布jar到私服仓库nexus
    JAVA设计模式之单例模式
    java基础-I/O系统
    HTTP深入浅出 http请求
    HTTP Header 详解
  • 原文地址:https://www.cnblogs.com/hiscode/p/addition-of-literal-in-java.html
  • Copyright © 2020-2023  润新知