你能解释一下以下源代码的输出吗?

时间:2016-09-07 15:52:35

标签: java string substring

由于Strings对象在java中是不可变的,那么这个代码输出的来源是NOW HEAT,为什么不是HOW NEAT? 提前谢谢。

class Solution
{
   public static void main(String args[])
    {
        String[] words = {"HOW", "NEAT"};
        twist(words);
        System.out.println(words[0] + " " + words[1]);   
    }
    public static void twist(String[] w)
    {
         String temp = w[0].substring(0, 1);
         w[0] = w[1].substring(0, 1) + w[0].substring(1);
         w[1] = temp + w[1].substring(1);
    }
}

1 个答案:

答案 0 :(得分:1)

基本上你的代码正在做的是它正在切换每个字符串的前两个字母的第一个字符。这是一步一步的解释

  1. temp =' H'
  2. w[0] = NOW(temp +" OW")
  3. w[1] = HEAT(temp +" EAT")
  4. 修改的: 正如duffymo所说:

      

    数组引用是不可变的,但它指向的数组不是。您创建了新的字符串并使数组指向它们。

    这意味着每次重新分配时,都会创建一个新字符串。