黑马程序员技术交流社区

标题: 对数组的length属性的疑问 [打印本页]

作者: 任亚俊    时间: 2013-8-7 19:32
标题: 对数组的length属性的疑问
  1. int array[]=new int[10];
  2. array.length;
复制代码
刚开始学的时候没注意,现在接触Java多了之后,突然对上面两行普普通通的代码有些疑惑了。
1. int不是基本数据类型吗,为什么可以用new关键字呢?
2. array只是一个变量,又不是对象,为什么可以有length属性?

作者: 肥猫    时间: 2013-8-7 19:41
       首先,你这么定义是老式的了,快被淘汰了,这么写就看的更清楚了,int[] array = new int[10].他是一个INT型数组,并非基本数据类型,基本数据类型只有八种,所以当然可以有length属性.

作者: 心灵之歌    时间: 2013-8-7 20:56
int array[]=new int[10];
array.length;
复制代码
刚开始学的时候没注意,现在接触Java多了之后,突然对上面两行普普通通的代码有些疑惑了。
1. int不是基本数据类型吗,为什么可以用new关键字呢?/////首先int是基本数据类型没错,new是关键字。创建一个对象。
2. array只是一个变量,又不是对象,为什么可以有length属性?////这里我要指正,array是一个引用类型变量,length是数组的属性。而这里array恰恰是指向一个数组!
作者: 李政    时间: 2013-8-7 21:03
数组是一个对象,它的父类也是Object  
length是一个成员变量,不是方法,所以不用加()  

下面调用方法打印下这个数组的类名
  1. class Demo
  2. {
  3. public static void main(String[] args)
  4. {
  5.   System.out.println(new int[5].getClass().getName());//打印数组的类名 输出[I  
  6.                //  [ 表示数组 I表示整数 [I整数数组
  7. }
  8. }
复制代码

作者: 丁永志    时间: 2013-8-7 21:16
本帖最后由 丁永志 于 2013-8-7 21:17 编辑
  1. int array[]=new int[10];    /*首先。注意 [] 这个括号在前面和后面有很大的区别,不是书写习惯的事,你看看二维数组就知道了。*/
  2. array.length;
复制代码
.


问题1. int不是基本数据类型吗,为什么可以用new关键字呢?
    int 确实是基本数据类型。    这里用到new 是创建一个新的int型 数组的意思。  
int array[]=new int[10];   //这句的意思是,创建一个新的int型的长度是10的数组

你喜欢后面面向对象会详细的说,你现在就只需要是创建数组用的。

问题2.  array只是一个变量,又不是对象,为什么可以有length属性?
array.length;  // 这句的意思是,这个array.length 数组的长度 。length 是数组长度的意思。不知道你看到第几天,你可以再往后看看。
作者: 影响力147753321    时间: 2013-8-7 22:18
new 的是数组不是int,int[]当作一个整体在看的,表示建立了一个数组对象,把10加入到[]中只是表示分配了10块内存空间。并没有其它的意思。
而对于array是一个引用变量,它指向了一个内存空间为10的数组。在java中都是用引用调用对象的方法和属性的
因为不能直接拿对象来操作,其实你也拿不到。java玩的都是引用。保证了安全性。    也可以用对象直接来访问的,不过只能调用一次。
作者: 张智文    时间: 2013-8-7 22:37
int array[]=new int[10];   这就是创建一个新的int型的长度是10的数组,//建议你多看几遍基础的视频~同时0基础表示绝对看没看一遍总能发现以前忽略的有用的知识。
l数组是一个对象,它的父类也是Object  //后边会讲到。。
length是一个成员变量,array是数组对象可以直接调用成员变量。。



作者: EYE_SEE_YOU    时间: 2013-8-8 07:52
本帖最后由 EYE_SEE_YOU 于 2013-8-8 07:54 编辑

int array[]=new int[10];
//[]是数组的标志,所以array[]是数组类型,而int表示数组内数据类型//new一个长度为10数组出来,数组名叫array,里面存放的是int类型
array.length;
//length是长度属性,放在数组类型array的后面自然是求它的长度啦
楼主也说明自己是刚开始学,希望楼主能常来论坛多多交流

作者: 一只文字    时间: 2013-8-8 08:28
array 是一个引用变量吧, 所以有length属性是正常的
作者: What/    时间: 2013-8-8 09:53
ava1.5之后有自动装箱拆箱 在放入容器中时基本数据类型会被自动装箱成相应的引用类型。而且在使用容器时最好使用泛型,即 List<Integer> list=new ArrayList<Integer>();
作者: 刘劲松    时间: 2013-8-8 10:30
java里面把数组看做对象的
作者: 黑马王晓明    时间: 2013-8-8 21:56
int array[]=new int[10];
array.length;
1. int不是基本数据类型吗,为什么可以用new关键字呢?
int 是几本数据类型 但是new了一个int类型的数组 表示这个数组里面只能存int类型的数据
10表示给这个数组这个分配了10个空间用来存储10个int类型的数据 同样表示这个数组的长度 length
2. array只是一个变量,又不是对象,为什么可以有length属性?
array是一个引用型变量 指向了数组这个对象 length是数组的属性 array.length来获取这个数组的长度 或者说是 元素的个数
作者: jingzhouheima    时间: 2013-8-9 19:44
int array[]=new int[10];//array是基本对象int数组的一个引用,而length是数组对象中的成员。
作者: 黄文军    时间: 2013-8-10 20:14
数组是引用类型, new 的是数组
作者: 如果我长大了。    时间: 2013-8-10 21:00
Int arr[] = new int[10];
arr这个变量是一个数组的引用。Int只是表示数组里面装的数据类型是int,并不是代表arr是int类型的变量。因为数组是引用类型的变量,所以在创建对象的时候用new关键字肯定是的。
一个对象肯定有它自己的属性了。所以length属性有也就不奇怪了。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2