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

  • 相关阅读:
    泛型为什么不用装箱拆箱
    net 自带cache
    泛型与非泛型的区别。
    java 魔术
    栈帧
    yii使用CUploadedFile上传文件
    yii上传图片、yii上传文件、yii控件activeFileField使用
    yii 验证码的使用
    mysql 分库分表
    全国省市区三级联动js
  • 原文地址:https://www.cnblogs.com/todayjust/p/5679372.html
Copyright © 2011-2022 走看看