zoukankan      html  css  js  c++  java
  • String s="a"+"b"+"c"+"d";创建了几个对象?

    对于如下代码:

    package reviewTest;
    
    /**
     * @ClassName: StringTest
     * @Description: 测试String的字符串相加优化
     * @author Kingram
     * @date 2018年7月27日
     *
     */
    public class StringTest {
    
        public static void main(String[] args) {
    String s1
    = "a"; String s2 = s1 + "b"; String s3 = "a" + "b"; System.out.println(s2 == "ab"); System.out.println(s3 == "ab"); String s = "a" + "b" + "c" + "d"; System.out.println(s == "abcd"); } }

    第一条语句打印的结果为false,第二条语句打印的结果为true,

    说明javac编译可以对字符串常量直接相加的表达式进行优化,不必要等到运行期再去进行加法运算处理,而是在编译时去掉其中的加号,直接将其编译成一个这些常量相连的结果。

    题目中的代码被编译器在编译时优化后,相当于直接定义了一个”abcd”的字符串,所以,题目答案应该只创建了一个String对象。

    程序最后一条打印语句的结果应该为true。

  • 相关阅读:
    Assetbundle创建与加载
    11个超棒的iOS开发学习网站
    UGUI
    Unity3D教程宝典之Shader篇
    解决ngui挡住粒子的问题
    unity 随笔
    进程与线程浅析
    c#语言
    Unity3D中使用委托和事件
    Unity3D中常用的数据结构总结与分析
  • 原文地址:https://www.cnblogs.com/Kingram/p/9376243.html
Copyright © 2011-2022 走看看