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对象比较:

  1. 单独使用 ” “ 引号创建的字符串都是直接量,编译期就已经确定存储到常量池中;
  2. 使用new String(“”)创建对象会存储到对内存中,是运行期才创建;
  3. 使用只包含直接量的字符串连接符如”aa“+"bb"创建的也是直接量,编译期就能确定存储到常量池中;
  4. 使用包含string直接量(无final修饰符)的字符串表达式(如”aa“+s1)创建的对象是运行期才创建的,存储在堆中(注意:变量在运行时候才知道值为多少编译的时候是不知道的);
    通过变量/调用方法连接字符串,都只能在运行时候才能确定变量的值和方法的返回值,不存在编译优化操作

java中String与new String的区别相关推荐

  1. Java中collection.toArray(new String[0])、resultSet.toArray(new Integer[0])、Set.toArray()new 数组的性能比较

    一.在调用Set的toArray()方法的时候 在使用HashMap的时候,它的keySet()方法将返回一个Set集合 且Set是继承自Collection的,在使用toArray()的时候其实转换 ...

  2. Java中实现接口与继承的区别

    ** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...

  3. Java中PreparedStatement和Statement的用法区别

    Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈   1. PreparedStatement接口继承Sta ...

  4. Java中long和Long有什么区别

    Java中long和Long有什么区别(转) Java的数据类型分两种: 1.基本类型:long,int,byte,float,double,char 2. 对象类型(类): Long,Integer ...

  5. java中的sleep()和wait()的区别

    对于sleep()方法,我们首先要知道该方法是属于Thread类中的.而wait()方法,则是属于Object类中的. sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监 ...

  6. java comparator相等_详解Java中Comparable和Comparator接口的区别

    详解Java中Comparable和Comparator接口的区别 发布于 2020-7-20| 复制链接 摘记: 详解Java中Comparable和Comparator接口的区别本文要来详细分析一 ...

  7. java == hashcode,java中==和equals和hashCode的区别

    java中==和equals和hashCode的区别 == 的作用: 基本类型:比较的就是值是否相同 引用类型:比较的就是地址值是否相同(确切的说,是堆内存地址) equals 的作用: 引用类型:默 ...

  8. java system sleep_详解Java中的sleep()和wait()的区别

    详解Java中的sleep()和wait()的区别 对于sleep()方法,我们首先要知道该方法是属于Thread类中的.而wait()方法,则是属于Object类中的. sleep()方法导致了程序 ...

  9. JAVA中isEmpty、null、的区别

    JAVA中isEmpty.null.""的区别 isEmpty()         分配了内存空间,值为空,是绝对的空,是一种有值(值 = 空)    ""   ...

  10. java的 x跟x_关于语法:java中的x ++和++ x有区别吗?

    java中的++ x和x ++有区别吗? 提示大量相同的答案...... ...并提出第一个完全相同的答案... 最快的去战利品,按最旧排序,点击upvote.ohowoho. 我确信我有它! 无论如 ...

最新文章

  1. 关于二叉树的几个必须掌握的实现
  2. j2ee下的单元测试小工具
  3. C#和Java中“==”和“equals”区别
  4. 银行业DevOps状态:来自DOES 2018伦敦大会的报告
  5. 漏洞挖掘利器-Fuzz技术介绍
  6. [转载]MySQL优化之索引的运用(2)
  7. Directx11学习笔记【七】 游戏定时器的实现
  8. 怎么去掉微博图片中的水印,照片水印怎么去
  9. PAT 甲级 1158 Telefraud Detection
  10. 小程序之仿小米商城Lite
  11. word操作技巧:不同情况的文字统计方法
  12. 简述Spring的详细工作原理
  13. 阿里云服务器到期会提醒吗
  14. 字节跳动前端面经凉经(半年经验社招)待填坑
  15. 产品经理如何做项目管理?
  16. 取消大小周后首次发薪,字节跳动员工薪资普降17%
  17. 导入项目报错,Syntax error on token Invalid Regular Expression Options, no accurate correc
  18. 为什么电脑浏览器显示时钟快了_win10打开chrome浏览器提示时钟错误怎么办
  19. 小学信息说课稿范文认识计算机,小学信息技术说课稿《认识计算机》
  20. php网站短信接口接入核心代码—动力思维乐信

热门文章

  1. 软测百科之 日常测试工作中哪些是必须知道的 SQL 语句?
  2. 回忆那年那月(1997~2003)前言
  3. uniapp实现微信分享
  4. c语言函数原型语句,C语言函数声明以及函数原型
  5. centos7使用命令行查看开机启动项和服务启动状态
  6. ngixn 负载均衡
  7. 腾讯云服务器快速创建一个表白网站。简单可操作。
  8. 【游戏开发实战】Unity ShaderGraph 2D描边效果、不规则描边效果
  9. Actor-Critic(A2C)算法 原理讲解+pytorch程序实现
  10. 中科院院士!211高校,迎来新校长