我是靠谱客的博主 健忘小鸽子,最近开发中收集的这篇文章主要介绍java中String对象的两种创建方式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

String对象的两种创建方式:

(1)第一种方式: String str1 = “aaa”;

是在常量池中获取对象(“aaa” 属于字符串字面量,因此编译时期会在常量池中创建一个字符串对象,如果常量池中已经存在该字符串对象则直接引用)

(2)第二种方式: String str2 = new String(“aaa”) ;

一共会创建两个字符串对象一个在堆中,一个在常量池中(前提是常量池中还没有 “aaa” 象)。

System.out.println(str1==str2);//false

String类型的常量池比较特殊。它的主要使用方法有两种:

(1)直接使用双引号声明出来的String对象会直接存储在常量池中。
(2)如果不是用双引号声明的String对象,可以使用 String 提供的 intern 方法。 String.intern() 是一个 Native 方法,
它的作用是: 如果运行时常量池中已经包含一个等于此 String 对象内容的字符串,则返回常量池中该字符串的引用; 如果没有,则在常量池中创建与此 String 内容相同的字符串,并返回常量池中创建的字符串的引用。

String s1 = new String("AAA");
String s2 = s1.intern();
String s3 = "AAA";
System.out.println(s2);//AAA
System.out.println(s1 == s2);//false,因为一个是堆内存中的String对象一个是常量池中的String对象,
System.out.println(s2 == s3);//true, s1,s2指向常量池中的”AAA“ 

字符串拼接:

String a = "a";
String b = "b";
     
String str1 = "a" + "b";//常量池中的对象
String str2 = a + b; //在堆上创建的新的对象     
String str3 = "ab";//常量池中的对象
System.out.println(str1 == str2);//false
System.out.println(str1 == str3);//true 
System.out.println(str2 == str3);//false

最后

以上就是健忘小鸽子为你收集整理的java中String对象的两种创建方式的全部内容,希望文章能够帮你解决java中String对象的两种创建方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部