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都是相等的

  • 相关阅读:
    初识Java内存结构
    eclipse的安装与配置
    关于android客户端使用ksoap2调用wcf(.svc)的总结
    ie下jpg不显示问题
    Android学习笔记(1)
    HTML标签语义化
    【转】android模拟机不能上网
    WCF IIS 寄宿问题
    C# 参数传递
    Wcf IIS 寄宿
  • 原文地址:https://www.cnblogs.com/todayjust/p/5679372.html
Copyright © 2011-2022 走看看