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。

  • 相关阅读:
    volatility 命令
    pikachu-SQL注入
    pikachu-环境搭建
    pikachu-暴力破解
    pikachu-XSS
    john and hydra using de-ice1.100
    web 攻击靶机解题过程
    网络对抗实验四
    网络对抗实验三
    网络对抗实验二
  • 原文地址:https://www.cnblogs.com/Kingram/p/9376243.html
Copyright © 2011-2022 走看看