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