【问题标题】:Can someone explain me why the print of only string s4 turns out to be 10bab?有人能解释一下为什么只有字符串 s4 的打印结果是 10bab 吗?
【发布时间】:2021-01-28 15:16:32
【问题描述】:

我目前是第一次学习 java,但被某些代码卡住了。练习是在 cmets 上进行的。任务是注释掉代码中不必要的部分。

public class Solution {
    public static void main(String[] args) {
        int a = 10;
        int b = 15;
        double c = b + 38;
        //int d = a + 12;
       // double e = 12.3;
        String s = "s" + a;
        String s1 = a + "b";
        //String s2 = "a";
        String s3 = s1 + "a";
        String s4 = s3 + "b";
        System.out.println(c + s4 + s);
    }
}            

如果我只打印 s4 输出结果是

10bab

仅打印 s4 的输出不应该是
10151015
就像在打印字符串 s1 时,变量 a 和 b 都被调用并连接起来。还是我的理解有问题。 感谢您宝贵的时间和回答。 谢谢

【问题讨论】:

  • 是的,你把b"b"混淆了,一个是变量,另一个是字符串。
  • a"a" 相同。

标签: java concatenation


【解决方案1】:

首先,你混合了导致你误解的类型。

int - 负责存储整数,如 1、2、5

double - 负责存储逗号分隔的值,例如 1.5、6.3、5.321

String - 负责字母数字符号,因此它可以存储任何“Table”、“2”(注意如果我使用“”,则意味着这是一个字符串)

所以逐行查看你的代码,代码的输出是:

int a = 10;
int b = 15;
int c = b + 38; // OUTPUT 53
//int d = a + 12;
//double e = 12.3;
String s = "s" + a; // OUTPUT s10 COMMENT You are adding String "s" to int a so a become String with value of "10"
String s1 = a + "b"; // OUTPUT 10b COMMENT same story here a become String with value "10" and we are adding string "b"   
//String s2 = "a";                                                  
String s3 = s1 + "a"; // OUTPUT 10ba COMMENT s1 is now "10b" and you are adding "a"
String s4 = s3 + "b"; // OUTPUT 10bab COMMENT s3 is now "10ba" and you are adding "b"                                                
System.out.println(c + s4 + s); // OUTPUT 5310babs10 COMMENT c becomes String with value "53" adding s4 = "10ba" adding String s = "s10" 

要达到您的期望 10151015,代码应如下所示

int a = 10;
int b = 15;
int c = b + 38; // OUTPUT 53
String s1 = String.valueOf(a) + String.valueOf(b); // OUTPUT 1015
String s3 = s1 + String.valueOf(a); // OUTPUT 101510
String s4 = s3 + String.valueOf(b); // OUTPUT 10151015

我没有运行该代码,但我希望您理解您的错误理解:D

【讨论】:

  • 感谢您的帮助
【解决方案2】:

java中有一条规则:

int a = 10;
String str = a + "xxx"; // means str = String.valueOf(a) + "xxx"

int a = 10;                         // a == 10
int b = 15;                         // b == 15
double c = b + 38;                  // c == b + 38 = 15 + 38 = 53.0
//int d = a + 12;
// double e = 12.3;
String s = "s" + a;                 // s == "s" + a = "s" + "10" = "s10"
String s1 = a + "b";                // s1 == a + "b" = "10" + "b" = "10b"
//String s2 = "a";
String s3 = s1 + "a";               // s3 == s1 + "a" = "10b" + "a" = "10ba"
String s4 = s3 + "b";               // s4 == s3 + "b" = "10ba" + "b" = "10bab"
System.out.println(c + s4 + s);     // c + s4 + s = "53.0" + "10bab" + "s10" = "53.010babs10

【讨论】:

  • 感谢您的帮助
【解决方案3】:

int a 是一个变量,其中"a" 是一个String。变量a 仅用于String s1(和String s),另一个Strings 使用"a",它不会被a 的值替换,因为它是一个字符串文字。

int a = 10;
String s1 = a + "b";
String s3 = s1 + "a";
String s4 = s3 + "b";

String s4 将是:

10 + "b" + "a" + "b"

【讨论】:

  • 哦,我现在明白了。谢谢
猜你喜欢
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
相关资源
最近更新 更多