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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Max灬xu 中级黑马   /  2016-3-27 18:39  /  14700 人查看  /  80 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
刚报道一个星期,学了数组,学了点类,对类不是很了解,复习的时候发现类和数组怎么感觉一样,感觉都是一块内存堆的指针,处理方式和表现方式感觉也一样,比如属性什么的,求大神解释一下,数组是不是一个类?顺带帮忙解释一下类和数据成员。

80 个回复

倒序浏览
不是!!!!!
回复 使用道具 举报
不是 从引用数据类型的分类就可以看出
引用数据类型的分为数组,类,接口,枚举所以数组和类不同
回复 使用道具 举报
你定义一个变量  String str=new String ("abc");
你定义一个数组类型变量  String[] str=String[3];
数组是指定一段内存空间,然后指定这段内存空间只能被赋予什么类型数据
而类

点评

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

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

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

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

对啊 所以感觉类的范围大,可以包括数组。
回复 使用道具 举报
Max灬xu 发表于 2016-3-27 20:44
对啊 所以感觉类的范围大,可以包括数组。

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