JAVA字符串

JAVA中会经常用到字符串,字符串存放与字符串常量池。同一个字符串常量,在常量池只有一份副本。

通过双引号声明的字符串,直接保存在常量池。

如果是String对象,可以通过String.intern方法,把字符串常量保存到常量池。

JAVA中关于intern的面试题

String s = new String("rumenz.com");

s.intern();

String s2 = "rumenz.com";

System.out.println(s == s2);

String s3 = new String("rumenz") + new String(".com");

s3.intern();

String s4 = "rumenz.com";

System.out.println(s3 == s4);

结果

JDK1.6以及以下:false false

JDK1.7以及以上:false true

结果分析

① JDK1.6中将字符串常量存放于永久带的常量池中。永久带和堆是物理隔离的。当调用s.intern()时,如果常量池不存在"rumenz.com" ,就直接在永久带创建一个"rumenz.com"

② JDK1.7中字符串常量池在堆中。当调用s.intern()时,如果常量池不存在"rumenz.com",直接存储堆中的引用。

String s = new String("rumenz.com"); //生成常量池中的"rumenz.com"和堆中的字符串对象

s.intern(); //先查常量池存不存在"rumenz.com",如果不存在就生成"rumenz.com",jdk1.6和jdk1.7有区别 ① ②

String s2 = "rumenz.com"; //直接在常量区生成"rumenz.com"

System.out.println(s == s2);

String s3 = new String("rumenz") + new String(".com");

//常量区分别生成"rumenz"和".com",堆区生成s3对象,值为"rumenz.com",注意此时常量区并没有"rumenz.com"

s3.intern();//常量区生成"rumenz.com"

String s4 = "rumenz.com"; //jdk1.6直接返回"rumenz.com" ,jdk1.7后则返回对s3的引用

System.out.println(s3 == s4);

java中intern,JAVA中String的intern方法相关推荐

  1. java hashcode返回值_Java String hashCode() 使用方法及示例

    Java String hashCode() 使用方法及示例 Java String hashCode()方法返回字符串的哈希码. 字符串hashCode()方法的语法为: string.hashCo ...

  2. java解析string_java读取文件内容为string字符串的方法

    直接就把项目中的方法贴出来吧 /** * 读出城市列表文件 */ private String readCityFile() { File file02 = new File(path_xinfu, ...

  3. java读取string_java读取文件内容为string字符串的方法

    java读取文件内容为string字符串的方法 发布时间:2020-10-02 22:03:04 来源:脚本之家 阅读:67 作者:tmgg 直接就把项目中的方法贴出来吧 /** * 读出城市列表文件 ...

  4. 深入理解Java类加载器:Java类加载原理解析

    http://blog.csdn.net/zhoudaxia/article/details/35824249 1 基本信息 每个开发人员对java.lang.ClassNotFoundExcetpi ...

  5. Java提升篇:理解String 及 String.intern() 在实际中的应用

    String的深入解析 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些 ...

  6. Java中String类intern()详解

    1.背景 在开发过程中很多朋友,由于不会正确使用intern(),导致开发的程序,执行效率比较差.同时最近发现一道非常有意思的关于intern()的面试题,这道面试题还是有不小的难度,相信很多朋友看到 ...

  7. java intern_java String的intern方法

    我们知道再jvm的运行时内存可以分为堆.方法区.程序计数器.虚拟机栈和本地方法栈.而在方法区中有一个字符串常量池,用来保存字符串这个不可变量.如果我们使用String str=new String(& ...

  8. Java String的intern

    String.intern()原理 String.intern()是一个Native方法,底层调用C++的 StringTable::intern 方法,源码注释:当调用 intern 方法时,如果常 ...

  9. Java技术——你真的了解String类的intern()方法吗

    0.引言 什么都先不说,先看下面这个引入的例子: [java] view plain copy String str1 = new String("SEU")+ new Strin ...

  10. java 中的string_Java中String揭秘

    String对象是我们日常使用的对象类型,字符串对象或者其等价对象(如char数组),在内存中总是占据了最大的空间块,因此如何高效地处理字符串,是提高系统整体性能的关键. 在此之前,String作为一 ...

最新文章

  1. C#创建MQTT客户端接收服务器信息
  2. HTML5视频的使用总结
  3. SpringCloud教程- 服务消费者(Feign)(SpringCloud版本Finchley)
  4. SAP ABAP Netweaver服务器的标准登录方式讲解
  5. python中为什么没有自增或者自减
  6. Python3.6字符串新特性
  7. 找回华为云删除的通讯录_找回小米手机误删照片只要10秒!人人都知道的方法,你怎能不知道...
  8. float类型转integer_【第3章:Java基础程序设计】_Java数据类型
  9. Windows下JetBrains CLion的pthread使用配置
  10. python脚本转换为EXE文件
  11. 基于 WebRTC 构建 Web SIP Phone
  12. 应用于电力电子变压器的双向DC_DC变换器综述(学习笔记)
  13. 又是一年金九银十!一起看看这些大厂面试真题查漏补缺吧,程序员翻身之路
  14. mysql 赋权_《MySQL数据库》MySQL用户赋权
  15. 计算机内部可以用哪两种处理器封装类型,电脑CPU处理器封装形式大盘点
  16. “卖惨”的悲情牌打多了,营销终将变“悲剧”
  17. 输入框限制输入表情的方法
  18. Faster RCNN训练FLIR红外线数据集
  19. 常用的时序图软件收集
  20. 详谈 UNIX 环境进程异常退出

热门文章

  1. ISO光盘镜像导入到U盘的方法
  2. Win7更换锁屏和开机画面
  3. WPS自动生成目录,目录里显示图片如何解决
  4. 基于C#实现卫星坐标计算与单点定位
  5. 8款国内外主流商业智能BI工具分析,助你轻松选型!
  6. Antd Form Upload 报fileList错误-解决方案
  7. 微信内置浏览器是什么?
  8. 128G的U盘格式化后只有300M,如何恢复成128G
  9. 新手必看!纯干货!模具设计ug开启刀具半径补偿2种方法
  10. 使用python的模拟退火算法估计heston期权定价模型的五个参数(新)