簡體   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