[問題] 煩請高手解答

看板java作者 (Crable)時間9年前 (2016/03/23 12:56), 9年前編輯推噓7(7032)
留言39則, 11人參與, 最新討論串1/2 (看更多)
大家都知道java的陣列要用new去配置他 EX: int[] x=new int[5]; or int[] x; x=new int[5]; 今天要來請教各位的是不用new配置陣列 有人可能會想到這個方式 int[] x={0,0,0,0,0}; 但我說的不是這樣是先宣告陣列 之後才配置沒有馬上配置 EX: int[] x; 中 間 可 能 有 程 式 配置陣列x(不用new配置) ------------------- 我簡單的再說明一下 通常來說: int[] x;這個是宣告有一個整數陣列 假設我現在不配置要先做其他的事以保留記憶體空間 做完之後再配置 一般來說會這麼寫: x=new int[5]; 可是今天如果不用new來配置空間那要怎麼做?? 大概就是像這樣 煩請各位幫小弟我解答 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.115.136.150 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1458708975.A.469.html

03/23 13:18, , 1F
拿別人(function)配好的來用,不過層層下去,最後總有一個
03/23 13:18, 1F

03/23 13:19, , 2F
實際負責配置的code(java or jni)
03/23 13:19, 2F

03/23 13:58, , 3F
你先說清楚你不用new的目的在哪?
03/23 13:58, 3F

03/23 13:59, , 4F
不希望程式中有new? 還是?
03/23 13:59, 4F
不希望陣列用new來配置

03/23 14:42, , 5F
水晶球猜測: 你想配置一個有初始值的陣列但不想寫在開頭
03/23 14:42, 5F

03/23 14:43, , 6F
如果是這樣的話, 把 int[] x; 的宣告往下搬到你要的地方
03/23 14:43, 6F

03/23 14:43, , 7F
java 的變數不必要全部都擠在開頭宣告
03/23 14:43, 7F
※ 編輯: a1632619699 (120.115.143.173), 03/23/2016 15:01:05

03/23 15:08, , 8F
你的用new配置是指什麼? 你覺得可能有什麼其他的配置方法?
03/23 15:08, 8F

03/23 15:24, , 9F
先說好了不管你用什麼方式配置,JVM底層都是把array存在同
03/23 15:24, 9F

03/23 15:24, , 10F
一個地方
03/23 15:24, 10F
舉個例子: int[] x; 把這個當做是做一個門牌叫做x x=new int[5] 這個叫做蓋一棟五層樓的房子並賦予x這個門牌 我的意思是怎麼蓋一棟五層樓的房子而不用new ※ 編輯: a1632619699 (120.115.143.173), 03/23/2016 15:55:20 ※ 編輯: a1632619699 (120.115.143.173), 03/23/2016 15:56:01

03/23 15:58, , 11F
java.lang.reflect.Array.newInstance()
03/23 15:58, 11F
謝謝你 我研究一下要怎麼用 ※ 編輯: a1632619699 (120.115.143.173), 03/23/2016 16:28:26

03/23 16:42, , 12F
用你的舉例來說,new是叫A找X蓋房子,reflection是叫B找X
03/23 16:42, 12F

03/23 16:43, , 13F
蓋房子,用jni function是叫C找X蓋房子,最終都是X蓋房子
03/23 16:43, 13F

03/23 16:44, , 14F
所以我的問題是你的"用new",是單指程式寫了new(叫A找人蓋)
03/23 16:44, 14F
是不在程式裡使用new來蓋房子

03/23 16:45, , 15F
還是實際的行為(X蓋了房子)
03/23 16:45, 15F

03/23 17:55, , 16F
你是不是要問動態配置啊?
03/23 17:55, 16F

03/23 21:42, , 17F
為啥不先講你的原始需求是啥
03/23 21:42, 17F
原始需求是教授出的題目 他說可以想想看 他不講 ※ 編輯: a1632619699 (220.132.225.118), 03/23/2016 22:39:30 他說如果今天很惡劣叫你不准用new那要怎麼寫 ※ 編輯: a1632619699 (220.132.225.118), 03/23/2016 22:43:26

03/23 22:49, , 18F
不太懂... 不管怎樣還是會用到 new 啊
03/23 22:49, 18F

03/23 22:49, , 19F
只是藏在其他 method 你看不到而已 這樣算不用 new 嗎?
03/23 22:49, 19F

03/23 22:51, , 20F
Arrays.asList("","","","","").toArray(); 但何必呢..
03/23 22:51, 20F

03/23 22:51, , 21F
.?
03/23 22:51, 21F

03/23 23:37, , 22F
陣列是物件 在java的世界裡 物件就是要new才會有
03/23 23:37, 22F

03/23 23:38, , 23F
你應該要去搞懂教授 不准用new 的真正意思是什麼?
03/23 23:38, 23F
他的意思是把陣列宣告 跟實體化拆開 而實體化不使用x=new int[5] 這樣的方式 也就是說可以int[] x={0,0,0,0,0};(這樣就算是沒有new)但是不能 int[] x; x={0,0,0,0,0}; 他要問說要怎麼不使用new把第二句弄出來 ※ 編輯: a1632619699 (220.132.225.117), 03/24/2016 07:38:26 ※ 編輯: a1632619699 (220.132.225.117), 03/24/2016 07:40:44

03/24 08:05, , 24F
完全搞不懂 為啥要不準用new…
03/24 08:05, 24F
教授表示:很好玩 研究看看

03/24 08:10, , 25F
我反而覺得應該是你誤解教授的意思,不要先配置記憶
03/24 08:10, 25F

03/24 08:10, , 26F
體以後再配置應該是動態配置的概念。
03/24 08:10, 26F
可是動態配置我們沒教 我覺得應該不會超出我們學的太多 不然他就不會叫我們想想看了 ※ 編輯: a1632619699 (220.132.225.117), 03/24/2016 08:44:43

03/24 09:16, , 27F
Java 就是要用new,你不用,藏起來沒差
03/24 09:16, 27F

03/24 09:16, , 28F
還是指 define 跟 declare 分開?
03/24 09:16, 28F

03/24 11:29, , 29F
Java的array一律是動態配置的,沒有什麼先配置..
03/24 11:29, 29F

03/24 11:29, , 30F
不管是用new還是其他的方法,最終都是在heap memory
03/24 11:29, 30F

03/24 11:30, , 31F
(不考慮JVM自動優化)
03/24 11:30, 31F

03/24 11:31, , 32F
int[] x={0,0,0,0,0};其實是int[] x=new int[]{0,0,0,0,0};
03/24 11:31, 32F

03/24 11:37, , 33F
的語法糖,compile完就一樣
03/24 11:37, 33F

03/24 16:35, , 34F
宣告時給初始化 int[] x = null;
03/24 16:35, 34F

03/25 00:18, , 35F
雖然我應該算是新手 不過照你說的 我會 int[] x= null;
03/25 00:18, 35F

03/25 00:19, , 36F
x={0,0,0,0,0};
03/25 00:19, 36F
不好意思這不能動喔 不過你這樣的形式確實很像教授要的答案 ※ 編輯: a1632619699 (220.132.225.118), 03/25/2016 00:50:53

05/07 00:51, , 37F
物件導向語言,硬要你們不要物件導向,乾脆寫c就好了
05/07 00:51, 37F

05/07 00:51, , 38F
啊=_=
05/07 00:51, 38F

05/22 21:04, , 39F
很簡單阿,開一個return array的method
05/22 21:04, 39F
文章代碼(AID): #1MyY7lHf (java)
討論串 (同標題文章)
文章代碼(AID): #1MyY7lHf (java)