黑马程序员技术交流社区

标题: 数组是类么? [打印本页]

作者: Max灬xu    时间: 2016-3-27 18:39
标题: 数组是类么?
刚报道一个星期,学了数组,学了点类,对类不是很了解,复习的时候发现类和数组怎么感觉一样,感觉都是一块内存堆的指针,处理方式和表现方式感觉也一样,比如属性什么的,求大神解释一下,数组是不是一个类?顺带帮忙解释一下类和数据成员。

作者: dengxuye    时间: 2016-3-27 19:08
不是!!!!!
作者: sdx_1234    时间: 2016-3-27 19:10
不是 从引用数据类型的分类就可以看出
引用数据类型的分为数组,类,接口,枚举所以数组和类不同

作者: 就是我    时间: 2016-3-27 19:20
你定义一个变量  String str=new String ("abc");
你定义一个数组类型变量  String[] str=String[3];
数组是指定一段内存空间,然后指定这段内存空间只能被赋予什么类型数据
而类
作者: fengyupiaopiao    时间: 2016-3-27 19:29
从哲学的角度说 万事万物皆有相似性,所以区分一个事物,关键是找出其不同点,类和数组从其功能上说,他们就有很大区别,当初JAVA引进数组的目的,无外乎是解决同类型成员变量一一枚举定义的不便,而引进类的概念是让他面向对象化。
作者: 就是我    时间: 2016-3-27 19:34
而类:可以在类中定义不同的数据类型,还可以定义方法对于这些数据进行操作,但是当创建实例对象时,好像只是对类中各数据类型变量进行初始化,以及构造初始化
总结来说:数组声明是创建一连串引用,指向地址连在一起的一块内存空间,并且赋予了这块内存中值同样的数据类型
   而类,对象的创建,则是创建一个引用指向一个内存地址,这个内存地址中存放着一堆指向各种乱七八糟类型数据的内存

作者: Max灬xu    时间: 2016-3-27 19:39
就是我 发表于 2016-3-27 19:20
你定义一个变量  String str=new String ("abc");
你定义一个数组类型变量  String[] str=String[3];
数组 ...

类是一种数据类型,它自己本身不需要分配内存。类是不占内存的把,只有实例化以后不是才可以操作么?也就是和数组一样么 ,数组和类的引用同样是一块内存堆的指针。比如水果类 (arr), 苹果 (arr[1]),  价格(arr指向的数组);不都是“指针形式么”?我想知道为什么要分开。。
作者: Max灬xu    时间: 2016-3-27 19:52
fengyupiaopiao 发表于 2016-3-27 19:29
从哲学的角度说 万事万物皆有相似性,所以区分一个事物,关键是找出其不同点,类和数组从其功能上说,他们 ...

可是你不觉得类包括了数组么?类下面也是同类型的啊 ?为什么数组不是类
作者: mbwhbyq    时间: 2016-3-27 19:59
数组不是常规的类,但是也不能说它就不是类.因为特殊.
一个东西是不是类怎么界定呢? 说法很多.
有人说要能够使用newInstance()获取新实例,有人说要能通过getClass得到类原型,还有说有构造函数是类的必要条件.
但是偏偏的,数组的newInstance()就会报错,却可以得到类原型,然后通过原型查询其构造函数又会发现数组没有构造函数,所以怎么看待数组,要看个人理解了.
作者: Max灬xu    时间: 2016-3-27 20:00
就是我 发表于 2016-3-27 19:34
而类:可以在类中定义不同的数据类型,还可以定义方法对于这些数据进行操作,但是当创建实例对象时,好像只是对 ...

水果类下面只能放水果,不能放蔬菜的  它指向的全是水果  并不是乱七八糟的东西 比如水果类 (arr), 苹果 (arr[1]),  价格(arr指向的数组);你不觉得数组是一种简单的类么?(PS:我也喜欢路飞)
作者: 19960812    时间: 2016-3-27 20:22
数组不是类 , 很直白的一个问题 , 类里面可以有方法,可以调用方法,而数组只能调用属性 ,这是一个类和不是一个类,最好的区别
作者: Max灬xu    时间: 2016-3-27 20:44
19960812 发表于 2016-3-27 20:22
数组不是类 , 很直白的一个问题 , 类里面可以有方法,可以调用方法,而数组只能调用属性 ,这是一个类和不是一 ...

对啊 所以感觉类的范围大,可以包括数组。
作者: 19960812    时间: 2016-3-27 21:03
Max灬xu 发表于 2016-3-27 20:44
对啊 所以感觉类的范围大,可以包括数组。

数组不是类,只要属性没有方法, 比如String类,获取长度用的是 . length(); 的方法 , 而数组获取长度用的是 .length属性 , 你现在就这么记就好了 , 只有类有方法
作者: chao1    时间: 2016-3-27 21:34
java除了8种基础类型外,其余都是类,数组也是一种特殊的类,java除了8种基础类型外,其余都是类,数组也是一种特殊的类,你System.out.println(bText.getClass().getName());
你会发现java对数组命了一个奇怪的类名,[byte。也就是[xxxx形式。
java语言由于虚拟机全权托管内存,所以new这个关键字就是从heap区标记一块内存,返回一个指针给bText,当然java没有指针了,已经封装了。
java只有传值,没有传址
作者: Lingxin    时间: 2016-3-27 22:21
不是,不同作用,不同定义
作者: yangxiong    时间: 2016-3-27 22:59
数组也是类,不过这个类比较特殊,私有了构造函数,不能new一个实例对象。你可以试着调用object类的方法是可行的。其实要深究这个问题还比较复杂,你就把数组理解为一个特殊的类的对象,java虚拟机可以传递一些特殊的指令去操作数组。
作者: 小流氓    时间: 2016-3-27 23:28
我感觉类就是一种东西,数组是存东西的!
作者: Ak-47    时间: 2016-3-28 02:00
数组只是类的一种好吧,java就是面向对象的思想,也就是做一件事情时,考虑的是能不能调用其他的方法来解决,而不是自己一个人干,所以就将不同事物进行分类,有类,就有了成员属性,构造方法和成员方法,将这些方法封装起来,就是打包变成一个小功能,当你遇到这个小问题时就用这个功能,一个大的问题也就是几个小问题组成的,也就是好几个不同的功能实现的,也就是调用几个不同的方法,大大节省了自己一个人去思考代码的时间,提高了敲代码的效率,就像现在工厂做事也是人与人相互配合,而不是一个人把全部事情都做了,事实证明一个人全部都做效率并不高,数组,只是相同的数据类型的容器,当我们对这一窜数字进行操作,就需要用到数组里面的属性,构造方法以及成员方法
作者: huhemingtiancai    时间: 2016-3-28 09:34
数组是用来存放数据的,类是用来描述事物属性和行为的,当然不一样,只是因为有时候都会用到他们的地制传递,所以你可能误解了
作者: 就是我    时间: 2016-3-28 10:20
你非要这样认为也可以,世界都是矛盾和统一的集合体,两个完全在对立面的两个事物都有可能归于一类
想法是可以得,但有时候会有一些规定,就像大家都知道枚举类也是类一样,但是却没听到过数组也是类这一概念
作者: 就是我    时间: 2016-3-28 10:43
从这张图可以看出,数组并不是类

java数据类型.PNG (68.75 KB, 下载次数: 61)

java数据类型.PNG

作者: 菊花爆满山    时间: 2016-3-28 12:39
一句话,数组是一种特殊的类
作者: kingblue    时间: 2016-3-28 13:13
数组是存储同一数据类型的多个值的一个容器,而类是相关属性和行为的集合,类中包括成员变量,成员方法。数组包括静态初始化和动态初始化,在内存中开辟新的空间。而类创建对象的时候才会开辟新空间
作者: adomwon    时间: 2016-3-28 13:17
引用数据类型的分为数组,类,接口,枚举,数组和类都属于引用数据类型,所以要一些共性的特点,不如指向的都是地址值,但两者有区别
作者: humility    时间: 2016-3-28 13:19
chao1 发表于 2016-3-27 21:34
java除了8种基础类型外,其余都是类,数组也是一种特殊的类,java除了8种基础类型外,其余都是类,数组也是 ...

正解String属于基本数据类型,不属于类
作者: fanxiaolin    时间: 2016-3-28 17:13
一般都是存放东西的。
作者: 小哒哒    时间: 2016-3-28 20:03
数组和类都是引用数据类型,
作者: 伊乐杰    时间: 2016-3-28 20:26
数组就是一个容器
作者: wx_j6mW8Z4y    时间: 2016-3-28 22:01
不是 从引用数据类型的分类就可以看出
引用数据类型的分为数组,类,接口,枚举所以数组和类不同
作者: Max灬xu    时间: 2016-3-28 22:10
小哒哒 发表于 2016-3-28 20:03
数组和类都是引用数据类型,

哪里见过
作者: 小哒哒    时间: 2016-3-28 22:51
Max灬xu 发表于 2016-3-28 22:10
哪里见过

同学你好 咱俩好像一个教室上课{:2_30:}
作者: 犹豫的烤肉拌饭    时间: 2016-3-28 23:13
数组肯定不是类啊.数组是存在于堆中的,是被通过地址找到数组内存的数据.
作者: 小明1    时间: 2016-3-29 15:31
不是!!!!!
作者: 千年白狐    时间: 2016-3-29 16:14
数组和类都是引用类型数据,数组严格来说是一个数组类,
作者: ping3014    时间: 2016-3-29 19:01
应该不是类吧
作者: 123liu123    时间: 2016-3-29 22:26
数组不是类
作者: 柳春华    时间: 2016-3-29 23:54
数组是引用数据类型,引用数据类型还有类,接口和枚举;
另外一种是基本数据类型:byte,short,int,long,folate,double,char,boolean.
作者: 伊乐杰    时间: 2016-3-30 00:00
不是,引用数据类型的分为数组,类,接口,枚举;所以数组和类不同
作者: 小凡帅哥    时间: 2016-3-30 22:32
数组是定长的内存块,数组的第一个元素就是该数组的地址值,所有数组是可以用变量接受地址,类在编译成class文件,类加载器在使用的时候调用,类其实就是一类事物的抽象,比如动物的属性,行为就可以抽象成动物类,数据成员就可以看作是属性,动物的名字啥的
作者: HXWANHC    时间: 2016-3-30 23:35
数组不是类,是引用类型
作者: adomwon    时间: 2016-3-31 15:24
数组不是类,数组和类都属于引用数据类型,所以有很多共性,比如记录的都是地址值,进的都是堆内存
作者: 伊乐杰    时间: 2016-3-31 16:52
数组就是一个容器
作者: 704322603    时间: 2016-3-31 19:41
数组不是类,他是存储相同数据类型的容器;而且一旦被创建,其长度不可变,不过因为可以操作角标和他在内存中开辟了连续的空间,所以他的查询速度很快;而类是指对一些事物的描述,一般取描述事物的名词作为他的属性(成员变量),动词作为他的行为(成员方法);使用类之前要创建他的对象,便于操作他的属性和行为
作者: 704322603    时间: 2016-3-31 19:42
数组不是类,他是存储相同数据类型的容器;而且一旦被创建,其长度不可变,不过因为可以操作角标和他在内存中开辟了连续的空间,所以他的查询速度很快;而类是指对一些事物的描述,一般取描述事物的名词作为他的属性(成员变量),动词作为他的行为(成员方法);使用类之前要创建他的对象,便于操作他的属性和行为
作者: 404951246    时间: 2016-4-1 22:33
数组在底层其实也是一个类,不然他是不能创建对象的
作者: fanlelong    时间: 2016-4-1 23:09
不是  类里面可以有方法,可以调用方法,而数组只能调用属性
作者: 122754304    时间: 2016-4-1 23:26
数组不是类
作者: 怎么能够    时间: 2016-4-2 22:21
  
作者: aweilovemusic    时间: 2016-4-3 21:05
数组不是类,但是实现了Object类中的方法
按照Java语言规范的说法:Java数据类型分为两大类:基本数据类型和复合数据类型,其中复合数据类型包括数组、类和接口。
打个比方:数组就好像快递公司,把好多人的快递都收集在一起,统一去处理的,数组是一堆对象的组合,
类就好比私有企业,有自己的属性和特点
作者: 爱拼的小伙子    时间: 2016-4-3 23:45
数组不是类,数组是引用数据类型
作者: lhc19931210    时间: 2016-4-5 23:15
数组是一个容器,可以储存不同的数值,而且数组开辟的地址都是连续的,而类是一个抽象的概念,类里面有成员变量。。
作者: lhc19931210    时间: 2016-4-5 23:16
不是数组和类存储的方式不一样,数组是连续的空间,访问类就只能定义一个新的对象!!!
作者: 陈小夏    时间: 2016-4-6 10:40
数组(array)是相同类型变量的集合,可以使用共同的名字引用它。数组可被定义为任何类型,可以是一维或多维。数组中的一个特别要素是通过下标来访问它。数组提供了一种将有联系的信息分组的便利方法。
作者: wanbing522    时间: 2016-4-7 17:40
数组是个引用数据类型,而类是对象的类型可以是引用数据类型也可是基本数据类型
作者: 15614014298    时间: 2016-4-7 22:18
数组是引用类型,创建的是对象。但比较特殊的是他本身无法单独存在,他必须依附其他的类型存在从而不同类型的数组对象,
你可以这样去理解,数组是就是用来装东西的,至于要装什么东西是不确定的。比如说一个集装箱是一个数组,我可以在里放对象狗,那么就可以理解集装箱是狗类型的数组;如果存放的对象是羊,那么就是羊类型的数组。
意思就是数组不是一个具体的类,必须和其他类型组合才真实存在
这么说希望你能明白
作者: luo545753906    时间: 2016-4-9 22:17
不是,明确不是
作者: Max灬xu    时间: 2016-4-12 00:54
=================================================
作者: aomingchao    时间: 2016-4-12 23:40
数组属于引用类型,类是描述事物的单位,类中包含一些属性和方法!!
作者: fanxiaolin    时间: 2016-4-13 20:54
抽象类 , 实体类, 没有听过  数组 类!
作者: 943480861    时间: 2016-4-14 02:31
不是类,类中描述的是一个对象,里面有可能有很多数组,数组只是一个工具,供对象使用,数据成员一般在类中
作者: liuchenguangqnm    时间: 2016-4-14 23:07
数组不能算是一个类,数组是引用类型的数据,而类不是数据类型
作者: 张立鹏    时间: 2016-4-16 17:23
数组是数组,类是类,类是一类具有相同特征(成员变量)和行为(类中的方法)的实物的描述和抽象,而数组只是一类相同类型的且具有联系的数据的集合
作者: AAAheilong    时间: 2016-4-16 22:13
数组不是类,数组,类还有借口是引用数据类型
作者: 向前爬的虫子    时间: 2016-4-17 18:25
当然是,查看一下API,它继承了Object类!
作者: guojiedong    时间: 2016-4-17 23:11
数组是指定一段内存空间,然后指定这段内存空间只能被赋予什么类型数据
作者: 小K哥    时间: 2016-4-20 12:16
肯定不是啦。类是Java应用程序的基本组成部分。由类名和类体组成。类体里面还有成员变量和成员方法,成员变量可以是任意类型。而数组是存放同一种类型的数据,不能同时放两种不一样的类型。
作者: yuzhiliang    时间: 2016-4-21 22:28
数组通俗点说就是存放同一种数据类型的容器
它既可以存放引用数据类型,也可以存放基本数据类型
作者: yuzhiliang    时间: 2016-4-21 22:40
数组通俗点说就是存放同一种数据类型的容器
它既可以存放引用数据类型,也可以存放基本数据类型
作者: 老人与海    时间: 2016-4-27 00:08
数组是一个存储数据的容器,既可以存储基本数据类型也可以存储引用数据类型的数据!类是JAVA最基础的单位,是同一类属性和行为的集合!
作者: zhoutianxing    时间: 2016-4-27 20:29
这是两个概念。
我给你举个例子吧。
比如有一个 String 类型的数组  String[] arr =new String {"a","b"};
这里String 是一个类,它是代表的一个种类,所以这个数组就是String 这个类型的数组。
如果,你把String改为Person(比如,你实现已经写好了一个Person类),那么这个数据就代表是Person类型的数组,里面就不能存储字符串“a" , "b"了,就要存Person对象了。
作者: 小红花    时间: 2016-4-29 12:36
数组是一种引用的数据类型
作者: 年年    时间: 2016-4-29 12:48
不是~~求打赏~
作者: 钱金磊    时间: 2016-4-29 18:48
Max灬xu 发表于 2016-3-27 19:39
类是一种数据类型,它自己本身不需要分配内存。类是不占内存的把,只有实例化以后不是才可以操作么?也就 ...

对象:什么都是对象,很抽象的概念。就相当与一个物体
数组:一般用了存数据,可以存任意数据,就相当与一个空间。
类:class 后面那个就是类名,整个文件就是类文件。   会在编译时产生JAVA的基本单位.class文件,而数组不会产生这个文件!就一个空间而已!java不可能会给他一个另立的文件!
有空看看国外的java论坛吧!真正想要弄明白估计得要老学究才能懂这个原理!
作者: 车前子008    时间: 2016-5-26 16:30
数据类型有  整数数据类型   字符数据类型  小数数据类型  和引用数据类型   数组是引用数据类型
作者: a370054264    时间: 2016-5-26 20:53
不是~!~~~~!!!!!!!!
作者: TheLittlePrince    时间: 2016-6-13 21:39
数组怎么会是类呢?你这技术分是怎么赚的,感觉你需要重修一下,
作者: linguoqun    时间: 2016-7-25 02:14
楼主,你好!
根据您的题目,给出回答:
类和数组是不一样的。
类是具有相同特征相同行为的事物的抽象。数组是当我们要存储多个类型相同、并且意义相同的数据时候,我们需要用到数组。
类可是理解成对象的抽象:比如说你的朋友,你的同学,你的同事……他们都具有年龄、身高、体重等属性,他们都会吃饭、说话(方法)。他们都具有刚才所说的属性和方法,所以可以抽象成一个类,这个类的类名是人(Person)。而数组刚才已经说了,是为了存储多个类型相同、意义相同的数据而存在的。
回答你的第二个问题:数组是不是一个类?不是的。数组是一个变量。而这个变量是可以存储多个数据。
回答你的第三个问题:类的定义刚才已经解释过了,类是具有相同特征(属性)、相同行为(方法)的事物的抽象。
回答你的第四个问题:数据成员,你所说的数据成员,应该是指类的属性吧。比较说人这个类,人有年龄(int age ),人有身高(int height)等等。而数组中没有属性,只有元素。
比如说,声明一个数组int arr[3];那么数据的元素分别是arr[0]、arr[1]、arr[2].
你所说的,我基本都解释到了,纯手打的,满意请采纳,谢谢!
作者: 花陌相惜    时间: 2016-7-29 00:21
数组和类都是引用数据类型,但是类和数组是不一样的。类是具有一组特性(成员变量)和行为(成员方法)的集合,数组是存放一种相同类型的容器,数组长度一旦确定就不能改变。学到面向对象就会理解得更深入。
作者: Liangfwu    时间: 2016-8-10 22:31
数组是定义在类中的一个变量吧,  类是由class带出的,数组是写在main方法里面的,当然也可以写在没有main方法的类中,如:
class Demo{
    public static void main(String[] args){
       //定义一个数组
      int[] arr = {1,2,3,4};
      //其他语句体
    }
}
这是数组的位置,个人理解有限,你就把他当作一个类中的变量理解吧
作者: Liangfwu    时间: 2016-8-10 22:32
数组是定义在类中的一个变量吧,  类是由class带出的,数组是写在main方法里面的,当然也可以写在没有main方法的类中,如:
class Demo{
    public static void main(String[] args){
       //定义一个数组
      int[] arr = {1,2,3,4};
      //其他语句体
    }
}
这是数组的位置,个人理解有限,你就把他当作一个类中的变量理解吧




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