作者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/cn.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