黑马程序员技术交流社区

标题: 刚看到对象,创建本类对象 [打印本页]

作者: 杜天伟    时间: 2013-7-10 11:34
标题: 刚看到对象,创建本类对象
本帖最后由 杨兴庭 于 2013-7-10 22:42 编辑

我干了这个事。这个类的名字叫Car ,毕老师说可以创建本类对象,我就试了一下,然后又好奇的试了下调用主函数,开始不行,需要穿入值就根据提示建立了数组.编译竟然通过了![吃惊]……然后运行之后,出来一大堆看不懂的一模一样一行行的代码:at Car.main(Test.java:22) 这啥东西啊?下面是我的代码
public static void main(String[] args)
{
Car c=new Car();
String[] arr=new String[3];
c.main(arr);
}
作者: 草貌路飞    时间: 2013-7-10 11:47
死循环..主函数内调用了主函数。会抛出StackOverflowError错误,栈内存溢出了
作者: 于丹    时间: 2013-7-10 12:02
主函数不要调用主函数,会内存溢出的!
作者: 张承富    时间: 2013-7-10 12:09
首先主函数不用你调用,本身就调用了,只要有主函数,一运行该类就会直接调用主函数
再二,你的类名首字母是小写的,应该是Car c = new Car();
再三,String数组定义的不对,应该是 String[] arr = new String[3];
最后,请仔细看视频,你现在的这个阶段,如果和视频一样,根本不会报错,请把全部代码,在代码中加入论坛
作者: 杜天伟    时间: 2013-7-10 12:57
本帖最后由 杜天伟 于 2013-7-10 13:05 编辑
张承富 发表于 2013-7-10 12:09 首先主函数不用你调用,本身就调用了,只要有主函数,一运行该类就会直接调用主函数 再二,你的类名首字母 ...
我用的是手机啊.打字特麻烦.特别是代码.数组那个是打错了.类名是失误.至于结果。编译没报错,运行也没报错,就是运行出来了无数行这个代码:
at Car.main(Test.java:22) //22行,就是我调用主函数的那行!
作者: 张承富    时间: 2013-7-10 14:42
你这个相当于递归了,在主函数里调用主函数,本身没什么意义,然后最后内存溢出结束
作者: sunalong    时间: 2013-7-10 15:32
你好像没有理解毕老师的代码吧?
他的代码是这样的:
  1. class Car
  2. {
  3.         //描述颜色
  4.         String color = "红色";
  5.         //描述轮胎数
  6.         int num = 4;
  7.         //运行行为。
  8.         void run()
  9.         {
  10.                 System.out.println(color+".."+num);
  11.         }
  12.        
  13. }


  14. class  CarDemo
  15. {
  16.         public static void main(String[] args)
  17.         {
  18.                 //生产汽车。在java中通过new操作符来完成。
  19.                 //其实就是在堆内存产生一个实体。
  20.                 //Car c = new Car();//c就是一个类类型变量。记住:类类型变量指向对象。
  21.                 /*
  22.                 new Car().num = 5;
  23.                 new Car().color = "blue";
  24.                 new Car().run();

  25.                 Car c = new Car();
  26.                 c.run();
  27.                 c.num = 4;
  28.                 new Car().run();
  29.                 */
  30.                 //匿名对象使用方式一:当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化。
  31.                 //如果对一个对象进行多个成员调用,必须给这个对象起个名字。
  32.                 //匿名对象使用方式二:可以将匿名对象作为实际参数进行传递。


  33.                 Car q = new Car();
  34.                 show(q);

  35.                 //show(new Car());
  36.         }

  37.         //需求:汽车修配厂。对汽车进行改装,将来的车够改成黑车,三个轮胎。
  38.         public static void show(Car c)
  39.         {
  40.                 c.num = 3;
  41.                 c.color = "black";
  42.                 c.run();
  43.         }
  44. }
复制代码

作者: 杜天伟    时间: 2013-7-10 16:19
sunalong 发表于 2013-7-10 15:32  你好像没有理解毕老师的代码吧?  他的代码是这样的:

我是自己随便试试一些想法。
作者: 工善器    时间: 2013-9-22 20:55
将c 的实例化写在主函数以外的 类中,楼上说的都对
作者: 工善器    时间: 2013-9-22 20:55
将c 的实例化写在主函数以外的 类中,楼上说的都对




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