從0開始 3.5 字串串接與迴圈 - MUD Game
By Yuri
at 2019-12-05T16:35
at 2019-12-05T16:35
Table of Contents
雖然在 java 中串接字串很簡單, 只要一直 + 就可以了
但是在迴圈還是要避免使用 + 來串接字串
為什麼呢?
在之前的範例我們曾經寫下這種程式碼
pm.forEach((k, v) -> v.write("【閒聊】" + playerName + "說:" + input));
其實 + 是 java compiler 提供的語法糖
真正的程式展開之後是這樣的
pm.forEach((k, v) -> v.write(new StringBuilder.append("【閒聊】")
.append(playerName)
.append("說:")
.append(input)
.toString()));
今天線上有 n 個使用者, 就要 new n 個 StringBuilder
雖然在這個年代 MUD 有幾十個人上線就很多了
不過養成良好習慣還是很重要的, 所以在迴圈內串接字串時可以思考看看
有沒有機會在迴圈外先把字串接好
像上面的例子就可以改成這樣寫
String message = "【閒聊】" + playerName + "說:" + input;
pm.forEach((k, v) -> v.write(message));
--
╔═◢ ◣═╦╦═════╦═════╗
║ ◤◤◤ ◥ ╠╣飛鳥ももこ╠═╗ ║
║ ▇ ▇ ║╚═════╝ ╚═╦═╣
║ ▌ ● ● ▌ ║╔══════╗╔═╩═╣
║◤ ◥ ︺█◤ ◥╠╣Momoko Asuka╠╝ ║
╚◣◢ ▄▂▄ ◣◢╩╩══════╩════╝
--
但是在迴圈還是要避免使用 + 來串接字串
為什麼呢?
在之前的範例我們曾經寫下這種程式碼
pm.forEach((k, v) -> v.write("【閒聊】" + playerName + "說:" + input));
其實 + 是 java compiler 提供的語法糖
真正的程式展開之後是這樣的
pm.forEach((k, v) -> v.write(new StringBuilder.append("【閒聊】")
.append(playerName)
.append("說:")
.append(input)
.toString()));
今天線上有 n 個使用者, 就要 new n 個 StringBuilder
雖然在這個年代 MUD 有幾十個人上線就很多了
不過養成良好習慣還是很重要的, 所以在迴圈內串接字串時可以思考看看
有沒有機會在迴圈外先把字串接好
像上面的例子就可以改成這樣寫
String message = "【閒聊】" + playerName + "說:" + input;
pm.forEach((k, v) -> v.write(message));
--
╔═◢ ◣═╦╦═════╦═════╗
║ ◤◤◤ ◥ ╠╣飛鳥ももこ╠═╗ ║
║ ▇ ▇ ║╚═════╝ ╚═╦═╣
║ ▌ ● ● ▌ ║╔══════╗╔═╩═╣
║◤ ◥ ︺█◤ ◥╠╣Momoko Asuka╠╝ ║
╚◣◢ ▄▂▄ ◣◢╩╩══════╩════╝
--
Tags:
線上
All Comments
By Irma
at 2019-12-06T10:34
at 2019-12-06T10:34
By Callum
at 2019-12-07T04:33
at 2019-12-07T04:33
By Olivia
at 2019-12-07T22:32
at 2019-12-07T22:32
By Zenobia
at 2019-12-08T16:31
at 2019-12-08T16:31
By Daph Bay
at 2019-12-09T10:30
at 2019-12-09T10:30
Related Posts
涼宮春日的憂鬱合作寶箱活動統計
By Connor
at 2019-12-05T16:18
at 2019-12-05T16:18
從0開始 3.真正的聊天室 (singleton)
By Charlie
at 2019-12-05T15:53
at 2019-12-05T15:53
從0開始 2.多執行緒
By Gary
at 2019-12-05T13:36
at 2019-12-05T13:36
請問該如何賺寶石最划算
By Daph Bay
at 2019-12-05T13:08
at 2019-12-05T13:08
OWL 2020 隊伍不精確總移動里程數
By Dorothy
at 2019-12-04T23:16
at 2019-12-04T23:16