繁体   English   中英

有人能解释一下为什么只有字符串 s4 的打印结果是 10bab 吗?

[英]Can someone explain me why the print of only string s4 turns out to be 10bab?

我目前是第一次学习 java 并且卡在了某些代码处。 该练习是关于评论的。 任务是注释掉不必要的代码部分。

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 output 结果是

10bab

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

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

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

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

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

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

因此,逐行查看代码的 output 是:

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

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

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

String s4将是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM