Java中创建String的两道面试题及详解
时间:2022-05-06
本文章向大家介绍Java中创建String的两道面试题及详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
我们知道创建一个String类型的变量一般有以下两种方法:
String str1 = "abcd";
String str2 = new String("abcd");
那么为什么会存在这两种创建方式呢,它们在内存中的表现形式各有什么区别?
下面来看下面两道经常遇到的面试题。
面试题1:
String a = "abcd";
String b = "abcd";
System.out.println(a == b); // true
System.out.println(a.equals(b)); // true
解析:
用""创建的a,b两个字符串,==和equals比较返回都为true,这是因为a,b都指向了方法区的同一个字符串。所以,当同样的一个字符串用""重复创建时只在方法区创建一次。
面试题2:
String c = new String("abcd");
String d = new String("abcd");
System.out.println(c == d); // false
System.out.println(c.equals(d)); // true
解析:
用new创建的c,d两个字符串,equals为true很简单因为equals永远比较的是值,而==为false说明两个字符串的引用不一样。用new创建的字符串每次都会在JVM堆中创建,所以c,d都对应堆中的两个不同的字符串。
关于这两道题中的""和new创建的字符串在内存中的表现形式可以看下图就明白了。
- 聊一聊Javasript继承
- Git基础命令使用(个人总结)
- Centos搭建Docker环境
- Consul Config 使用Git做版本控制的实现
- 让XP支持4G内存
- Consul微服务的配置中心体验篇
- 如何使用Sentry实现Hive/Impala的数据脱敏
- 如何使用Oozie API接口向Kerberos环境的CDH集群提交Shell作业
- Docker下redis的主从、持久化配置
- vuejs、eggjs、mqtt全栈式开发设备管理系统
- Xss和Csrf介绍
- GraphQL介绍&使用nestjs构建GraphQL查询服务
- 使用auth_request模块实现nginx端鉴权控制
- Docker学习之Docker镜像基本使用
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- stata如何处理结构方程模型(SEM)中具有缺失值的协变量
- stata对包含协变量的模型进行缺失值多重插补分析
- 互联网直播点播平台go语言搭建重定向和反向代理的区别及使用
- UNIX时间戳和北京时间的相互转换
- R语言对苏格兰独立民意调查的Meta分析
- 案例:归档自动清理脚本失效及连带影响
- R语言中固定与随机效应Meta分析 - 效率和置信区间覆盖
- R语言使用 LOWESS技术图分析逻辑回归中的函数形式
- R语言在逻辑回归中求R square R方
- R语言Poisson回归的拟合优度检验
- R语言ROC曲线下的面积-评估逻辑回归中的歧视
- 东芝MCU实现位带操作
- 单向链表的一点儿感悟
- rt-thread的内存管理分析
- R平方/相关性取决于预测变量的方差