zoukankan      html  css  js  c++  java
  • java String final + equal == 区别

    java String 是不可改变的类型。

    String a = "hello2";
    String d = "hello";
    final String b = "hello";
    String c = b + "2";// final相当于常量,编译阶段直接加入常量池

    String cc = “hello”+“2”; 类似于 final修饰的,在编译期间,会自动优化处理为:hello2 并加入常量池,所以和a比较相等,和e比较不等
    String e = d + "2";

    System.out.println((a == c));// true 
    System.out.println((a == e));//false
    System.out.println((e == c));//false

    //e.intern()方法会检查e是否在常量池中,如果不在则将e所指向的对象添加到字符串常量池中,并返回指向常量池中对象的引用

    e=e.intern();//e 是通过+ new出来的 在堆中,不在常量池中,所以加入常量池后,比较相等

    System.out.println((a == c));// true 
    System.out.println((a == e));//true
    System.out.println((e == c));//true

    String s=“a”+“b”+“c”;创建几个对象?   因为“+”号编译器会自动优化,所以只创建一个对象“abc” 并存在JVM常量区中

    以上使用equal都是相等的

  • 相关阅读:
    私有 composer 包创建
    随机数是如何生成的
    TCP 三次握手的意义
    何为真何为假
    Python流程控制语句详解
    Python类中装饰器classmethod,staticmethod,property,
    函数进阶
    初识函数
    文件操作
    is ==小数据池编码解码
  • 原文地址:https://www.cnblogs.com/todayjust/p/5679372.html
Copyright © 2011-2022 走看看