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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 精彩生活向钱看 中级黑马   /  2013-6-1 09:45  /  2014 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 精彩生活向钱看 于 2013-6-1 12:26 编辑
  1. public boolean compaer (Person p)
  2. {
  3.        return this age==p.age;
  4. }
  5. class Demo
  6. {
  7. //前边的部分代码省略了,大家应该可以看懂,请问第一句话中的函数未知内容的参数类型为什么可以写成person呢,难道person是一个数据类型吗?
  8.      public static void main (String[] args)
  9.      {
  10.        person p1=new person("aa",30);
  11.        person p2=new person("bb"+13);
  12.        p1.compaer(p2);
  13.       }
  14. }
  15. 还有就是为什么最后一句可以写成p1.compaer(p2)这句看不懂,请帮忙解释一下,谢谢啦!
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

13 个回复

倒序浏览
public boolean compaer (Person p)
楼主:
1、类,也是一种数据类型。public boolean compaer (Person p),在这里传的参数是对象,数据类型当然是类了。
2、楼主一定要尽快熟悉这种参数为对象的情况,一定要理解,转变思维。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
Person是你定义的一个类,Person p 的意思就是:有一个引用数据类型p 而且这个p是Person类型的

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
01. public boolean compaer (Person p)

这样写是可以的,因为楼主之前定义了一个Person 类,所以它就是一种对象类型。
像char, int, long, double, boolean这些在数据类型叫做基本数据类型,是存放于栈内存中的。
而像此处楼主定义的类,就属于对象数据类型,是面向对象特有的思想,它是存放于堆内存中的。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
首先p是作为参数的引用传递进来的。也就是你后来传的是p2那么p就是p2,传的是什么p就是什么。当然了,也不能什么都传所以前面有Person限定,只能传Person类。如果是Car类。Dog类就不行了  ,就好像我们定义基本数据类型一样,得声明是什么类型的,是int还是double,不能只是声明一个变量就行了,那是没有意义的。这里的Person是叫参数的引用类型。
至于最后一句的说法:你在compare方法里 (你在这里拼错了  最好按照正确的单词意义命名)返回的是return this.age=p.age;(this后面要有点)this就代表当前对象谁调用就代表的是谁。在这里就是p1调用this就是p1了。传进来的参数就是p2,那么方法里的p就是p2了。所以说就相当于是p1调用compare与传进来的参数p2进行age的比较。在这里,对象.方法 是函数调用的格式,再接受方法的参数。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
除了基本数据类型,其他都是引用数据类型。自己创建的类型,也是属于引用类型,当然可以传递了。p1.compaer(p2)这句话可以简单理解为p1的age属性内容等于p2的age属性内容吗?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 淡定

查看全部评分

回复 使用道具 举报
本帖最后由 王浩骅 于 2013-6-1 11:42 编辑

首先应该是compareTo方法吧。在这个方法中其实是要一个对象对compareTo()方法进行调用。即p1.compareTo()形成,但p1又要和谁比较呢,那么就是再想compareTo()中传递一个参数。即p2,所以最终写成的效果是p1.compareTo(p2)

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
李玉江 发表于 2013-6-1 10:17
首先p是作为参数的引用传递进来的。也就是你后来传的是p2那么p就是p2,传的是什么p就是什么。当然了,也不 ...

谢谢你啊,讲的很详细,我是初学者见笑啦!
回复 使用道具 举报
compare函数定义的功能是和别人比较年龄

所以需要传入一个“人”进来,即代码中的Person类型

数据类型分两种,一种是基本数据类型,另一种是引用型数据类型

这里用到的就是引用型数据类型,传入的是一个类类型的变量,可以理解为,传入的对象是哪个类就是哪种类的数据类型
回复 使用道具 举报
精彩生活向钱看 发表于 2013-6-1 12:06
谢谢你啊,讲的很详细,我是初学者见笑啦!

一块奋斗  我也是刚学没多久
回复 使用道具 举报
李玉江 发表于 2013-6-1 14:31
一块奋斗  我也是刚学没多久

你学多长时间啦?是自学还是培训啊?
回复 使用道具 举报
精彩生活向钱看 发表于 2013-6-1 15:34
你学多长时间啦?是自学还是培训啊?

在传智培训  5.16的基础班
回复 使用道具 举报
哦哦,我也是,但是比你晚,我是6.18号的班,现在看毕向东的视频呢,你学这个之前接触过java吗?
回复 使用道具 举报
精彩生活向钱看 发表于 2013-6-1 18:02
哦哦,我也是,但是比你晚,我是6.18号的班,现在看毕向东的视频呢,你学这个之前接触过java吗?
...

哦哦,我也是,但是比你晚,我是6.18号的班,现在看毕向东的视频呢,你学这个之前接触过java吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马