A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 cain 于 2014-6-11 00:12 编辑

这样定义数组 int [] a1 = new a1[3]{1,2,3]为什么不对呢

18 个回复

倒序浏览
new 后面的a1是什么类型
回复 使用道具 举报
定义和初始化不可以放在一起。
回复 使用道具 举报
int [] a1 = new int[3]{1,2,3]  写错了,不好意思
回复 使用道具 举报
初始化的两种方式
静态初始化:
int[] arr = {1}
动态初始化;
int arr =[2];
arr[1]=0;
回复 使用道具 举报
数组的定义可以是静态初始化和动态初始化,而这样同时使用是不正确的
回复 使用道具 举报
数组静态初始化和动态初始化不能写到一起。
静态初始化  int []a1=new int[]{1,5,4};
动态初始化 int[] a1=new int[3];
a1[0]=1;a1[1]=5;a1[2]=4;
至于为什么不能写到一起,我也在纠结着,嘿嘿
回复 使用道具 举报
我觉得这应该是java的一种防错强行规则。你看在【】中定义了长度,但在{}定义元素2时,多写了或少少写了不就出现错误了嘛,所以避免这种情况的发生,java就是这种定义这种定义数组的方法为错误的。
当然这只是我的猜想
回复 使用道具 举报 1 0
int [] a1 = new a1[3][1,2,3],这样就对了,美女耐心点嘛
回复 使用道具 举报
本帖最后由 林峰 于 2014-6-10 02:59 编辑

你真是二的可以,符号用错{1,2,3]就算了,你还能起两个一样的名字,给出元素就不必再说长度了,计算机会自动算出,你如果指出的长度和元素个数实际不一致的话,计算机也会崩溃的,既然已经赋值了,基本数据类型的可以不用new了直接 :   
                    int[] a1={1,2,3};   
若没有赋值:                    
                    int[] a1=new int[3];//然后再赋值:                  
                    a1[0]=1;a1[1]=2;a1[2]=3;//如果还存在没有赋值的角标,取的值是0
也可以         
                    int[] a1=new int[]{1,2,3};






回复 使用道具 举报
peku 中级黑马 2014-6-10 09:51:33
11#
其实这相当于两种的初始化在一起,那如果这两种初始化如果存在矛盾那到底应该怎么初始化JVM就会不明确,比如
int[] arr=new int[3]{0,1,2,3},到底是应该建立一个3个元素的数组呢还是4个元素的数组呢?所以为了避免建立数组出现这种情况只允许使用其中一种初始化方式
回复 使用道具 举报
这主要还是java设定的一些防错机制吧。防止数组的元素多的时候浪费太多时间在数数上了,而且比较容易出错,其实java中这种思想还是挺常见的
回复 使用道具 举报
上面说的很对啊,,,敲代码的时候仔细点了
回复 使用道具 举报
区别两种初始化方式。。
回复 使用道具 举报
我今天刚好复习到数组,可以给你解答一下。。
数组在java里面有3种方法定义。
1, int[ ] a = new int[6];
       arr[0] =  7;
      arr[1] = 5;
.......arr[5] = 6;
2,    int[] a = new int[ ] {7,5,6,6,5,8}
3,    int[] a = {7,5,6,6,5,8}
  这三种,而你说的是第二种,[ ]里面是不允许写长度的,就算长度是正确的也一样。
回复 使用道具 举报
LFW 中级黑马 2014-6-10 22:00:37
16#
定义的格式有静态和动态2种,静态就是用int [] a1 =new int[] {1,2,3}这样的方式,可以省略后边的new int[],简写为int [] a1 ={1,2,3},这静态方式适合数组元素值确定的情况。动态初始化的方式:int[] a1=new int[3],然后各角标依次赋值:a1[0]=1,a1[1]=2,a1[2]=3。毕老师对为什么不int [] a1 = new  int[3]{1,2,3}这样来定义的解释是,如果你这样赋值,万一你的数组是{1,2,3,4}这样4个元素,而前边你又定义new int[3]数组长度为3的话,虚拟机就会疯掉,因为它不知道究竟数组长度是3还是4.
回复 使用道具 举报
LFW 中级黑马 2014-6-10 22:01:40
17#
楼主都中级黑马了,问问题前先再去看看视频吧。。我也是初学不久,各自加油吧。期待同期有你、
回复 使用道具 举报
cain 中级黑马 2014-6-11 00:12:14
18#
谢谢大家啊,有些问题 介于明白和不明白直接,有的说的 要这样做,并没有说出 为什么要这样?
回复 使用道具 举报
林峰 发表于 2014-6-10 02:15
你真是二的可以,符号用错{1,2,3]就算了,你还能起两个一样的名字,给出元素就不必再说长度了,计算机会自动算 ...

这才是正解啊!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马