java中String与new String的区别
String类:表示不可改变的字符串,当前对象创建完毕之后,该对象的内容(字符序列)是不能改变的,一旦内容改变就是一个新的对象。
String对象的创建:
1):直接赋一个字面量: String str1 = “ABCD”;
2):通过构造器构造:String str = new String(“ABCD”);
面试题1:两种方式有什么区别,分别在内存中如何分布?
常量池:专门存储常量的地方。
编译常量池:把字节码加载进JVM的时候,存储的是字节码的相关信息(不研究)。
运行常量池:存储常量数据(研究)。
解释:
String str1 = “ABCD”;最多创建一个String对象,最少不创建String对象。如果常量池中,已经存在“ABCD”,那么str1直接引用,此时不创建String对象,否则,先在常量池先创建“ABCD”内存空间,再引用。
String str2 = new string(“ABCD”);最多创建两个String对象,至少创建一个String对象。new关键字:绝对会在堆空间创建内存区域。
String对象的空值:1):表示引用为空(null): String str1 = null; 没有初始化,没有分配内存空间2):字符序列为空字符串:string str2 = ""; 已经初始化,分配内存空间,不过没有内容。
判断字符串非空:
1)”引用不能为空 2)字符内容不能为空字符串(“”);
字符串比较操作:
1):使用 “” 号;只能比较引用的内存地址是否相同。
2):使用equal方法:在Object中和“”号相同,建议子类覆盖equals方法去比较自己的内容
面试题2:下列代码创建几个String对象?
解释:
String对象比较:
- 单独使用 ” “ 引号创建的字符串都是直接量,编译期就已经确定存储到常量池中;
- 使用new String(“”)创建对象会存储到对内存中,是运行期才创建;
- 使用只包含直接量的字符串连接符如”aa“+"bb"创建的也是直接量,编译期就能确定存储到常量池中;
- 使用包含string直接量(无final修饰符)的字符串表达式(如”aa“+s1)创建的对象是运行期才创建的,存储在堆中(注意:变量在运行时候才知道值为多少编译的时候是不知道的);
通过变量/调用方法连接字符串,都只能在运行时候才能确定变量的值和方法的返回值,不存在编译优化操作
java中String与new String的区别相关推荐
- Java中collection.toArray(new String[0])、resultSet.toArray(new Integer[0])、Set.toArray()new 数组的性能比较
一.在调用Set的toArray()方法的时候 在使用HashMap的时候,它的keySet()方法将返回一个Set集合 且Set是继承自Collection的,在使用toArray()的时候其实转换 ...
- Java中实现接口与继承的区别
** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...
- Java中PreparedStatement和Statement的用法区别
Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈 1. PreparedStatement接口继承Sta ...
- Java中long和Long有什么区别
Java中long和Long有什么区别(转) Java的数据类型分两种: 1.基本类型:long,int,byte,float,double,char 2. 对象类型(类): Long,Integer ...
- java中的sleep()和wait()的区别
对于sleep()方法,我们首先要知道该方法是属于Thread类中的.而wait()方法,则是属于Object类中的. sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监 ...
- java comparator相等_详解Java中Comparable和Comparator接口的区别
详解Java中Comparable和Comparator接口的区别 发布于 2020-7-20| 复制链接 摘记: 详解Java中Comparable和Comparator接口的区别本文要来详细分析一 ...
- java == hashcode,java中==和equals和hashCode的区别
java中==和equals和hashCode的区别 == 的作用: 基本类型:比较的就是值是否相同 引用类型:比较的就是地址值是否相同(确切的说,是堆内存地址) equals 的作用: 引用类型:默 ...
- java system sleep_详解Java中的sleep()和wait()的区别
详解Java中的sleep()和wait()的区别 对于sleep()方法,我们首先要知道该方法是属于Thread类中的.而wait()方法,则是属于Object类中的. sleep()方法导致了程序 ...
- JAVA中isEmpty、null、的区别
JAVA中isEmpty.null.""的区别 isEmpty() 分配了内存空间,值为空,是绝对的空,是一种有值(值 = 空) "" ...
- java的 x跟x_关于语法:java中的x ++和++ x有区别吗?
java中的++ x和x ++有区别吗? 提示大量相同的答案...... ...并提出第一个完全相同的答案... 最快的去战利品,按最旧排序,点击upvote.ohowoho. 我确信我有它! 无论如 ...
最新文章
- 关于二叉树的几个必须掌握的实现
- j2ee下的单元测试小工具
- C#和Java中“==”和“equals”区别
- 银行业DevOps状态:来自DOES 2018伦敦大会的报告
- 漏洞挖掘利器-Fuzz技术介绍
- [转载]MySQL优化之索引的运用(2)
- Directx11学习笔记【七】 游戏定时器的实现
- 怎么去掉微博图片中的水印,照片水印怎么去
- PAT 甲级 1158 Telefraud Detection
- 小程序之仿小米商城Lite
- word操作技巧:不同情况的文字统计方法
- 简述Spring的详细工作原理
- 阿里云服务器到期会提醒吗
- 字节跳动前端面经凉经(半年经验社招)待填坑
- 产品经理如何做项目管理?
- 取消大小周后首次发薪,字节跳动员工薪资普降17%
- 导入项目报错,Syntax error on token Invalid Regular Expression Options, no accurate correc
- 为什么电脑浏览器显示时钟快了_win10打开chrome浏览器提示时钟错误怎么办
- 小学信息说课稿范文认识计算机,小学信息技术说课稿《认识计算机》
- php网站短信接口接入核心代码—动力思维乐信