博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
String类知识点整理
阅读量:6613 次
发布时间:2019-06-24

本文共 492 字,大约阅读时间需要 1 分钟。

先来个面试题吧

面试题一
String a = "ab";
String b = "a" + "b";
sysout(a==b)
答案是true还是false呢?
我们来一起分析一下这个过程
a变量创建时,会在常量池中开辟一块空间存放ab,然后将空间地址赋值给a;
b变量创建时,编译器会自动将+的结果运算出来,相当于b == "ab",此时JVM会先判断常量池中是否存在,直接将该对象的地址引用赋值给b变量,因此a跟b都是指向的常量池中的同一块地址,所以答案是true。
面试题二
String a = "ab";
String b = new String("ab");
sysout(a==b)
a变量的创建跟上一题一样
b使用new String(str)方式创建字符串时,如果常量池中存在,则拷贝一份放到堆中,并将堆中的地址指向b;如果常量池中不存在,则新建一份放到常量池中,并拷贝一份放到堆里,并将堆里的地址指向b。所以a字符串在常量池中的值跟b所指向的不是同一份,答案为false。

转载于:https://blog.51cto.com/14380904/2406261

你可能感兴趣的文章
给入门程序员的一些经验
查看>>
数组及其内存管理
查看>>
一周第四次课(10月19日) 1.13 单用户模式 1.14 救援模式 1.15 克隆虚拟机 1.16 Linux机器相互登录...
查看>>
三周第五次课
查看>>
修改Springboot 2的默认Json解析器JackSon为FastJson
查看>>
区块链100讲:HTTPS协议的原理及其与HTTP协议的区别
查看>>
新经济专家陈宗建:山东将是全球新经济主战场山东新旧动能转换专访报道
查看>>
如何将任意数据保存到以太坊区块链?
查看>>
CentOS 7 搭建 gogs Git 服务器
查看>>
Sass指南:Sass前世今生和如何安装以及使用Webstorm直接支持编写
查看>>
阿里云应用实时监控 ARMS 再升级,支持 Prometheus 开源生态
查看>>
JVM调参
查看>>
php-fpm配置
查看>>
Git 常用命令及使用
查看>>
NEO改进协议提案9(NEP-9)
查看>>
Zend Studio使用教程:使用PHP 7进行开发(三)
查看>>
DRF视图-Request与Response
查看>>
apache 403 问题
查看>>
到底什么是OCR
查看>>
关于jquerymobile swipeleft swiperight多次触发的问题
查看>>