当前位置: 首页 > 面试题库 >

Java中字符串的可重用性?

计和顺
2023-03-14
问题内容
String h = "hi";

在这里,我们将字符串h引用为字符串文字hi。JVM有一个字符串文字池来存储字符串文字,因此我们可以在字符串不可更改的情况下重用它们。

当我们说reusable,这的确切含义是什么?我们在谈论什么address吗?是否从相同的地址传送时间中选取?


问题答案:

是的,为了简化起见,您可以将其视为从同一地址选择,但更精确的是变量拥有相同的 引用 ,即JVM 在映射到对象的正确内存地址时 使用的 数字/对象ID
(对象可以在内存中移动但仍然会有相同的参考)。

您可以使用以下代码进行测试:

String w1 = "word";
String w2 = "word";
String b = new String("word"); // explicitly created String (by `new` operator) 
                               // won't be placed in string pool automatically
System.out.println(w1 == w2);  // true  -> variables hold same reference
System.out.println(w1 == b);   // false -> variable hold different references,
                               // so they represent different objects
b = b.intern(); // checks if pool contains this string, if not puts this string in pool, 
                // then returns reference of string from pool and stores it in `b` variable
System.out.println(w1 == b);   // true  -> now b holds same reference as w1


 类似资料:
  • 问题内容: 上面的代码片段中的代码产生以下输出。 a =’Hello’和b =’Hello’的长度分别为6和6,equals()为false 虽然两者的价值,并在控制台上显示的是,回报。怎么样? 问题答案: 和是 不是 可打印字符。它们都是控制字符,它们决定了文本应如何呈现-从左到右或从右到左。 您不会在终端中看到它们,并且它们不应该是等效的字符串。

  • 本文向大家介绍Java中的不可变字符串,包括了Java中的不可变字符串的使用技巧和注意事项,需要的朋友参考一下 在Java中,不可变对象是指那些不能更改或修改(一旦修改)数据的对象。字符串类是不可变的,即一旦我们创建了一个字符串对象,就无法修改其数据。

  • 在C语言中,创建我所知道的多行字符串的最佳规范方法是创建相邻的字符串,并让编译器在编译时将它们连接起来,如下所示: 在Java中,我知道的唯一方法是使用连接: 问题是,这是在运行时生成单个字符串,还是java在编译时也会连接?这个问题出现的原因是因为以下行为:

  • 问题内容: 我们给了一个字符串,例如,取“ TUOPPPPJHHTT”。我们希望找出哪个字符在字符串中连续出现次数最多以及发生多少次。在这种情况下,其P发生4次。 我尝试如下运行for循环 但是用这种方法,问题是它将计算所有字母的重复出现。 问题答案: 每次找到与上一个字符不同的字符,则表示运行(连续重复的字母)结束,因此您应记下当前运行的长度(即的值),然后重置计数。最后,您可以打印最大值。