不创建字符串将数组转换为字符串

3

I wish to accomplish:

    String []beef = new String[3];
    beef[0] = "Water";
    beef[1] = "Chicken";
    beef[2] = "Paper";

    String empo = Arrays.toString(beef);

    if (empo.isEmpty()){
        empo = "Nothing";
        System.out.println(empo);
    }else{
        System.out.println(empo);
    }

无需创建字符串即可完成。


类似于:

    String []beef = new String[3];
    beef[0] = "Water";
    beef[1] = "Chicken";
    beef[2] = "Paper";

    Arrays.toString(beef);  //change beef to just a plain string

    if(beef.isEmpty()||beef==""){
    no = "Nothing";

    System.out.println(beef);

如何实现这个目标?

你可以使用for循环按照所需的顺序打印数组中的每个字母。 - Adam
是啊?但是,这与更改数组类型有什么关系,正如我问题的主要意图所述。 - House3272
2个回答

8

你不能。

Java是一种类型和静态类型的语言。这意味着在声明时必须告诉它一个事物的类型(强类型),并且之后无法更改其类型(静态类型)。

你只能创建一个新的String


那么,更广义地说,你能否在不声明新变量的情况下将任何数据类型转换为另一种类型? - House3272
@房子号。Java是静态类型的。 - tckmn
有没有非静态类型编程语言的例子或者什么东西? - House3272
@House Javascript(也被称为“动态类型”) - tckmn

1
您可以使用与原始字符串相同的支持内存创建子字符串,但不能创建具有与字符串数组相同支持内存的字符串。它们不按相同顺序存储,因此无法同时以两种方式查看相同的内存。

1
不可以。字符串是不可变的。 - tckmn
这是一个“新字符串”,但它由相同的内存支持,如果你读了我的回答,这就是我说的。你可以“创建”具有“相同支持内存”的子字符串。我喜欢被那些要么看不懂要么不理解我无可否认的准确信息的人踩。 - j__m
好的,那在技术上并没有真正回答问题,但是减去1。 - tckmn
1
数组在垃圾回收之前不会消失,而字符串数组和字符串在内存中的存储顺序不同,因此无法重用该内存。 - j__m
2
是的...超出了我的能力范围。当涉及到Java时,我有点强迫症,因此我非常喜欢保持代码整洁高效。 尽量使用最少的"类型化"来完成工作,当然不能牺牲任何东西。我猜在这种情况下,过度优化了哈哈。 - House3272
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接