String的两种初始化方法讲解

 更新时间:2019年04月10日 09:00:20   作者:Kikityer  
今天小编就为大家分享一篇关于String的两种初始化方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

前言:String的创建和初始化有两种方法,既可以用String str = new String("abc")创建一个字符串,也可以用String str = "abc"的形式创建。

1: String str = "abc"创建一个字符串的过程

  • 首先在常量池(方法区)中查找是否存在内容为"abc"的字符串对象
  • 如果不存在则在常量池中创建一个"abc"的字符串对象,并让str引用该对象
  • 如果存在则直接让str引用该对象

2: String str = new String("abc")创建一个字符串的过程

  • 首先定义一个str的String类型的引用并存放在栈中
  • 在字符串常量池中查看是否存在内容为"abc"字符串对象 
  • 若存在则跳过这个步骤,若不存在,则在字符串常量池中创建一个内容为"abc"的字符串对象。(前三步都是在编译时完成的)
  • 执行new操作,在堆中创建一个指定的对象"abc",这里堆的对象是字符串常量池“abc”对象的一个拷贝对象。
  • 让str指向堆中“abc”这个对象(也就是存储这个对象的在堆中的地址)

有时会问 String str = new String("abc")创建一个字符串的过程会创建几个对象?

答:一个或两个(因为编译时会检查方法区常量池中是否已经存在需要创建的字符串对象。若存在直接将引用指向常量池的对象,此时只会在随后的运行时堆中创建一个对象。而如果不存在,会先在常量池中创建一个对象,在随后的运行时还会在堆中再创建一个对象,所以此时会创建两个对象)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • Java中的Vector和ArrayList区别及比较

    Java中的Vector和ArrayList区别及比较

    这篇文章主要介绍了Java中的Vector和ArrayList区别及比较,本文从API、同步、数据增长、使用模式4个方面总结了它们之间的不同之处,需要的朋友可以参考下
    2015-03-03
  • SpringBoot实现动态数据源切换的方法总结

    SpringBoot实现动态数据源切换的方法总结

    项目开发中经常会遇到多数据源同时使用的场景,比如冷热数据的查询等情况,所以接下来本文就来介绍一下如何使用实现自定义注解的形式来实现动态数据源切换吧
    2023-12-12
  • Hibernate双向多对多映射关系配置代码实例

    Hibernate双向多对多映射关系配置代码实例

    这篇文章主要介绍了Hibernate双向多对多映射关系配置代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • JDBC使用游标实现分页查询的方法

    JDBC使用游标实现分页查询的方法

    这篇文章主要介绍了JDBC使用游标实现分页查询的方法,实例分析了jdbc查询过程中游标的使用及查询分页相关实现技巧,需要的朋友可以参考下
    2016-08-08
  • Spring中Websocket身份验证和授权的实现

    Spring中Websocket身份验证和授权的实现

    在Web应用开发中,安全一直是非常重要的一个方面,本文主要介绍了Spring中Websocket身份验证和授权的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • Mybatis Update操作返回值问题

    Mybatis Update操作返回值问题

    在获取update操作的返回值时遇到了一个问题,似乎 Mybatis 进行 update 操作得到的 int 返回值并不是影响的行数,下面通过本文给大家分享Mybatis Update操作返回值问题,需要的朋友参考下吧
    2017-09-09
  • Java基础之extends用法详解及简单实例

    Java基础之extends用法详解及简单实例

    这篇文章主要介绍了 Java基础之extends用法详解及简单实例的相关资料,需要的朋友可以参考下
    2017-02-02
  • 23种设计模式(17)java命令模式

    23种设计模式(17)java命令模式

    这篇文章主要为大家详细介绍了23种设计模式之java命令模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • java中Hibernate面试知识点整理

    java中Hibernate面试知识点整理

    在本篇文章里小编给大家整理的是一篇关于java中Hibernate面试知识点整理内容,有兴趣的朋友们可以学习参考下。
    2021-01-01
  • Java模拟新浪和腾讯自动登录并发送微博

    Java模拟新浪和腾讯自动登录并发送微博

    这篇文章主要为大家详细介绍了Java模拟新浪和腾讯自动登录并发送微博功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07

最新评论