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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 落叶归根 中级黑马   /  2013-9-11 11:06  /  1816 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 落叶归根 于 2013-9-11 16:58 编辑

         class   Man
{
static  void home ()
{
System.out.println("HOLLOw");
}

public   static  void  main (String[] args)
{
Man.home();
}
}
问题是可以直接调用Man类中的Home方法吗?

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

7 个回复

倒序浏览
本帖最后由 CHJ 于 2013-9-11 11:11 编辑

你试一下啊!!  你这主函数,在类里面么?
回复 使用道具 举报
  1. class   ManDemo
  2. {
  3.         static  void Home ()
  4.         {
  5.                 System.out.println("HOLLOw");
  6.         }
  7. }
  8. class Man
  9. {
  10.         public   static  void  main (String[] args)
  11.         {
  12.                 ManDemo.Home();
  13.         }
  14. }
复制代码
静态方法最大的特点就是,不用生成类的实例对象,直接可以用。

它的语法格式:<类名>.<类变量名|类方法名>  

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
你的程序有点点问题:首先你的主函数定义在类外面了,其次在主函数调用Home()方法的时候h要大写,Man.home()改成Man.Home(),类中的静态方法可以直接通过类名来访问,即类.静态方法,不需要建立对象,所以是可以直接调用Man类中的Home方法。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
你写的这个不对吧,应该在定义一个class类,将主函数放进去,
       class   Man
{
static  void Home ()
{
System.out.println("HOLLOw");
}
}
class Test{
public   static  void  main (String[] args)
{
Man.Home();
}
}
静态方法可以不创建对象,直接用类名调用,类名.方法名

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
楼上的都说了代码上的小瑕疵,我就再解释一下为什么能调用吧。
加载一个类的时候,先加载他的静态方法,静态属性,非静态变量,然后是构造方法(事实上他先于非晶态变量调用,但会等待非晶态变量执行结束后再继续执行)。然后才是普通的方法(调用时才加载)。因此这个类创建对象之前,已经有他的静态方法&属性了。所以可以直接类名.属性名调用。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
  1. class Person{
  2.         //成员变量(实例变量)。创建对象之后,内存中才出现
  3.         String name;
  4.         //静态成员变量(类变量)。Person类加载进内存,就存在。
  5.         static String country = "CN";
  6.         //非静态方法
  7.         public void show(){
  8.                 System.out.println(name+":"+country);
  9.         }
  10.         //静态方法
  11.         public static void show_1(){
  12.                 System.out.println(country);
  13.                 //System.out.println(this.name); //this,super不能在静态方法中使用
  14.                 //System.out.println(name); //name在实例创建前没有。。。
  15.         }
  16. }
  17. class StaticDemo{
  18.         public static void main(String[] args){
  19.                 Person p = new Person();
  20.                 p.name = "zhanggsan";
  21.                 p.show();
  22.                 System.out.println(Person.country);//输出CN
  23.                 Person.show_1();
  24.                 }
  25. }
复制代码
类中的静态方法可以直接通过类名来访问(类.静态方法)不需要建立对象。。。

wenti.png (58.41 KB, 下载次数: 45)

wenti.png

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
类中的静态方法可以直接通过类名打点来访问,即类.静态方法
不需要建立对象,所以是可以直接调用Man类中的Home方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马