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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Yarn 监控 - 监控任务运行状态 (包括Spark,MR 所有在Yarn中运行的任务)

目录 Maven pom引用 配置文件 代码 平时开发中可以在yarn的web页面查看应用程序运行状态&#xff0c;如下图 下面代码实现了&#xff0c;代码监控Yarn运行程序&#xff0c;可以对部分任务进行实时监控 Maven pom引用 这里Demo使用的hadoop版本是 3.0.0 <dependency>…

Behavior Designer

https://my.oschina.net/acitiviti/blog/621627

java中常用的String方法

package com.test;import java.io.Console; import java.util.Arrays; import java.util.Scanner;public class Main {public static void main(String[] agrs){char[] cs new char[]{A, b, c};String str1 new String(cs);System.out.println("-------------变成哈希值…

HugeGraph 图数据库索引介绍 - 范围索引,全文索引

目录 HugeGraph 索引介绍 二级索引 组合索引 范围索引 全文索引 HugeGraph 索引介绍 二级索引 创建schema和添加数据 schema.propertyKey("name").asText().ifNotExist().create();schema.propertyKey("uid").asLong().ifNotExist().create();schem…

谷歌c++风格摘抄

全部来源于网络&#xff0c;我感觉好的就复制粘贴了。【你必需防止头文件重复编译。】<PROJECT>_<PATH>_<FILE>_H_foo/src/bar/baz.h > #ifndef FOO_BAR_BAZ_H_【inline函数要尽量简单。】函数最好小于10行。函数内包含循环、switch语句&#xff0c;不能定…

HugeGraph 图数据库常见问题汇总

索引介绍&#xff1a;https://blog.csdn.net/it1993/article/details/89492296 分词问题&#xff1a;https://github.com/hugegraph/hugegraph/issues/779 Hugegraph是否支持外部索引&#xff1a;https://github.com/hugegraph/hugegraph/issues/542 Hugegraph二级索引进行模…

String练习代码保存

package com.test;public class M1001{public static void main(String[] args) {System.out.println("-----------字符串截取----------------");String str "a,b,c,d,e,,";String[] str1 null;str1str.split(",");for(String st : str1){Sys…

Hbase JMX 监控 - Region

获取Region监控信息页面&#xff1a; http://regionServerName:16030/jmx?qryHadoop:serviceHBase,nameRegionServer,subRegions 获得数据如下 参数代表含义 *** 为前缀代表&#xff1a;Namespace_${namespace}_table_${tableName}_region_${regionName} ***_metric_storeCo…

String、StringBuilder和StringBuffer的区别和用法

分别使用使用这三种来拼接字符串&#xff0c;对比各自损耗的时间&#xff1a; 经过测试&#xff1a; package com.test;public class Main{public static void main(String[] args){testString();testStringBuffer();testStringBuilder();}private static void testStringBui…

Hbase Compaction 源码分析 - CompactionChecker

其他相关文章 Hbase Compaction 源码分析 - CompactionChecker Hbase Compaction 源码分析 - RatioBasedCompactionPolicy 策略 Hbase Compaction 源码分析 - CompactSplitThread 线程池选择 CompactionChecker 介绍&#xff1a; RegionServer会在后台启动一个线程Compac…

c++ 之类的前置声明

转自&#xff1a;http://blog.csdn.net/fjb2080/archive/2010/04/27/5533514.aspx 作者&#xff1a;清林&#xff0c;博客名&#xff1a;飞空静渡 刚开始学习c的人都会遇到这样的问题&#xff1a; 定义一个类 class A&#xff0c;这个类里面使用了类B的对象b&#xff0c;然后定…

java中随机数Random和ThreadLocalRandom()用法与区别

package com.test;import java.util.Random; import java.util.concurrent.ThreadLocalRandom;public class M1001{public static void main(String[] args) {Random random new Random();System.out.println("-----------产生1到10之间的随机数----------------");…

Hbase Compaction 源码分析 - RatioBasedCompactionPolicy 策略

目录 类的关系图 ​ RatioBasedCompactionPolicy selectCompaction 方法 getCurrentEligibleFiles方法 skipLargeFiles方法 createCompactionRequest方法 filterBulk方法 applyCompactionPolicy方法 removeExcessFiles方法 setIsMajor方法 其他相关文章 Hbase Compa…

Hbase Compaction 源码分析 - CompactSplitThread 线程池选择

目录 CompactSplitThread requestCompactionInternal方法 selectCompaction方法 requestCompaction方法 其他相关文章 Hbase Compaction 源码分析 - CompactionChecker Hbase Compaction 源码分析 - RatioBasedCompactionPolicy 策略 Hbase Compaction 源码分析 - CompactS…

java如何生成验证码

package com.test;import java.util.Random; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom;public class M1001{public static void main(String[] args) {System.out.println("-----------产生5个随机数的验证码----------------");Strin…

m3u8下载ts 合并成一个视频

我们在用网页看视频时&#xff0c;很多时候视频是下载不下来的&#xff0c;当然这里面有很多技术来防止我们下载视频&#xff0c;接下来我将破解使用m3u8格式来下载视频。一般情况下&#xff0c;我们使用浏览器中Network来查看服务器和本机的数据传输&#xff0c;而视频的原地址…

用行为树的方式思考问题

这段时间做了很多和AI无关的事情&#xff0c;做了个Flash的3D引擎&#xff0c;用汇编写了些shader&#xff0c;做了很多引擎的工具&#xff0c;脚本&#xff0c;插件&#xff0c;游戏也发布了首个预告片&#xff0c;一年多的工作收获满满&#xff0c;职位从AI Engineer变成了En…

Linux常用指令2

linux的命令操作 1、日常操作命令 **查看当前所在的工作目录 pwd **查看当前系统的时间 date **查看有谁在线&#xff08;哪些人登陆到了服务器&#xff09; who 查看当前在线 last 查看最近的登陆历史记录 2、文件系统操作 ** ls / 查看根目录下的子节点&#xff…

qt, connect参数,Qt::DirectConnection,Qt::QueuedConnection

connect用于连接qt的信号和槽&#xff0c;在qt编程过程中不可或缺。它其实有第五个参数&#xff0c;只是一般使用默认值&#xff0c;在满足某些特殊需求的时候可能需要手动设置。 Qt::AutoConnection&#xff1a; 默认值&#xff0c;使用这个值则连接类型会在信号发送时决定。如…

Hbase Compaction 队列数量较大分析

目录 问题 问题原因分析 总结建议 问题 前几天朋友公司Hbase集群出现Compaction队列持续处于比较大的情况&#xff0c;并且mem flush队列也比较大&#xff0c;一起看了下问题&#xff0c;大概情况如下图 从图中可以看出来压缩队列总和持续在1000-2000&#xff0c;平对压缩队列…