看板 java 關於我們 聯絡資訊
大家都知道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
bitlife: 拿別人(function)配好的來用,不過層層下去,最後總有一個03/23 13:18
bitlife: 實際負責配置的code(java or jni)03/23 13:19
ssccg: 你先說清楚你不用new的目的在哪?03/23 13:58
ssccg: 不希望程式中有new? 還是?03/23 13:59
不希望陣列用new來配置
LPH66: 水晶球猜測: 你想配置一個有初始值的陣列但不想寫在開頭03/23 14:42
LPH66: 如果是這樣的話, 把 int[] x; 的宣告往下搬到你要的地方03/23 14:43
LPH66: java 的變數不必要全部都擠在開頭宣告03/23 14:43
※ 編輯: a1632619699 (120.115.143.173), 03/23/2016 15:01:05
ssccg: 你的用new配置是指什麼? 你覺得可能有什麼其他的配置方法?03/23 15:08
ssccg: 先說好了不管你用什麼方式配置,JVM底層都是把array存在同03/23 15:24
ssccg: 一個地方03/23 15:24
舉個例子: 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
ssccg: java.lang.reflect.Array.newInstance()03/23 15:58
謝謝你 我研究一下要怎麼用 ※ 編輯: a1632619699 (120.115.143.173), 03/23/2016 16:28:26
ssccg: 用你的舉例來說,new是叫A找X蓋房子,reflection是叫B找X 03/23 16:42
ssccg: 蓋房子,用jni function是叫C找X蓋房子,最終都是X蓋房子 03/23 16:43
ssccg: 所以我的問題是你的"用new",是單指程式寫了new(叫A找人蓋) 03/23 16:44
是不在程式裡使用new來蓋房子
ssccg: 還是實際的行為(X蓋了房子)03/23 16:45
steven11329: 你是不是要問動態配置啊? 03/23 17:55
dou0228: 為啥不先講你的原始需求是啥 03/23 21:42
原始需求是教授出的題目 他說可以想想看 他不講 ※ 編輯: a1632619699 (220.132.225.118), 03/23/2016 22:39:30 他說如果今天很惡劣叫你不准用new那要怎麼寫 ※ 編輯: a1632619699 (220.132.225.118), 03/23/2016 22:43:26
kiwatami: 不太懂... 不管怎樣還是會用到 new 啊03/23 22:49
kiwatami: 只是藏在其他 method 你看不到而已 這樣算不用 new 嗎?03/23 22:49
kiwatami: Arrays.asList("","","","","").toArray(); 但何必呢..03/23 22:51
kiwatami: .?03/23 22:51
NullLife: 陣列是物件 在java的世界裡 物件就是要new才會有03/23 23:37
NullLife: 你應該要去搞懂教授 不准用new 的真正意思是什麼?03/23 23:38
他的意思是把陣列宣告 跟實體化拆開 而實體化不使用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
steven11329: 完全搞不懂 為啥要不準用new…03/24 08:05
教授表示:很好玩 研究看看
steven11329: 我反而覺得應該是你誤解教授的意思,不要先配置記憶 03/24 08:10
steven11329: 體以後再配置應該是動態配置的概念。 03/24 08:10
可是動態配置我們沒教 我覺得應該不會超出我們學的太多 不然他就不會叫我們想想看了 ※ 編輯: a1632619699 (220.132.225.117), 03/24/2016 08:44:43
dou0228: Java 就是要用new,你不用,藏起來沒差03/24 09:16
dou0228: 還是指 define 跟 declare 分開?03/24 09:16
ssccg: Java的array一律是動態配置的,沒有什麼先配置.. 03/24 11:29
ssccg: 不管是用new還是其他的方法,最終都是在heap memory 03/24 11:29
ssccg: (不考慮JVM自動優化) 03/24 11:30
ssccg: int[] x={0,0,0,0,0};其實是int[] x=new int[]{0,0,0,0,0}; 03/24 11:31
ssccg: 的語法糖,compile完就一樣 03/24 11:37
ilikeme5566: 宣告時給初始化 int[] x = null; 03/24 16:35
D122: 雖然我應該算是新手 不過照你說的 我會 int[] x= null;03/25 00:18
D122: x={0,0,0,0,0};03/25 00:19
不好意思這不能動喔 不過你這樣的形式確實很像教授要的答案 ※ 編輯: a1632619699 (220.132.225.118), 03/25/2016 00:50:53
nba887215: 物件導向語言,硬要你們不要物件導向,乾脆寫c就好了 05/07 00:51
nba887215: 啊=_= 05/07 00:51
BlueBird5566: 很簡單阿,開一個return array的method 05/22 21:04