JavaEE面试题

一、String面试题

1、String s1 = "123"; 和 String s2 = new String("123");的区别

在Java中,"String s1 = "123";"和"String s2 = new String("123");"这两行代码有一些重要的区别:

  1. "String s1 = "123";":这行代码创建了一个字符串常量"123",并将变量s1指向这个字符串。在Java中,使用双引号括起来的字符串字面值会被Java编译器自动放入字符串常量池中。因此,当您创建一个字符串常量时,如果字符串常量池中已经存在相同内容的字符串,则会直接引用这个字符串常量,而不会创建新的对象。
  2. "String s2 = new String("123");":这行代码创建了一个新的String对象,即使用new关键字显式地创建了一个字符串对象,而不是放入字符串常量池。即使字符串常量池中已经存在"123"这个字符串常量,使用new关键字创建的String对象仍会在堆内存中创建一个新的对象。

因此,主要区别在于s1指向的是字符串常量池中的"123"字符串常量,而s2指向的是堆内存中通过new关键字创建的新的String对象。在一般情况下,推荐使用字符串常量的方式,即使用双引号括起来的字符串字面值,因为这样可以利用字符串常量池的优势,提高性能和节省内存。

相关推荐
逍遥德1 分钟前
前端工程化-包管理NPM-package.json 和 package-lock.json 详解
前端·npm·json
一只小风华~2 分钟前
Web前端 (CSS篇)
前端·css·html·html5
HelloRevit6 分钟前
npm install 版本过高引发错误,请添加 --legacy-peer-deps
前端·npm·node.js
工九度8 分钟前
2025前端社招最新面试题汇总- 场景题篇
前端·javascript
AronTing8 分钟前
状态模式:有限状态机在电商订单系统中的设计与实现
前端·设计模式·面试
这可不简单9 分钟前
git push 受阻,原是未拉取代码惹的祸
前端·git·面试
repetitiononeoneday11 分钟前
java基础课程-springmvc课程
java·开发语言
啊吧啊吧曾小白12 分钟前
封装 downloadFile 函数,从服务器下载文件
前端·javascript·面试
左言14 分钟前
PYLSP 桥接 MONACO
前端
Mr.每天进步一小步20 分钟前
每天记录一道Java面试题---day39
java·jvm·面试