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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class Test_1 {
        public static void main(String[] args) {
                                public static int max(int i,int j,int k) {
                        if(i>j&&i>k)
                        return i;
                        else if(j>i&&j>k)
                        return j;
                        else if(k>i&&k>j)
                        return k;
                        else
                        return 0;
                }
                        System.out.println(max(2,2,2));
                }
        }
这样写会报错的。如果把静态max方法卸载main()方法上面就没问题,这里面有什么规则吗?如果改到上面而把static去掉 下面在调用时候也会报错吗?为什么?谢谢各位给解释清楚啊

4 个回复

倒序浏览
等高手吧!呵呵!
回复 使用道具 举报
本帖最后由 王小刚 于 2012-3-24 19:16 编辑

方法和属性都是一个类的成员,方法内的变量是局部变量,是属于方法的,而方法本身是属于类的,是类的成员,如果方法嵌套方法,那该方法就属于外层方法和java规范冲突了,所以这个是不允许的。即方法中不可以定义另一个方法,只能调用。方法的定义只能在类中,或者匿名类中。如果你想运行,就把max方法放到main方法的下边,然后直接在main方法中调用max方法就行了,当然,因为main方法是静态的,静态的方法中只能调用静态的方法,所以你定义的max方法也必须是静态的。兄弟!这个清楚了吗,多看看视频,呵呵
回复 使用道具 举报
函数中不可以定义函数,

把主函数的static去掉后,java虚拟机就不能够识别main()函数,程序没有入口
回复 使用道具 举报
java 函数里面只能调用函数,不可以定义函数的,你的代码就是这个问题,你把你的代码放在main方法外就行了,还有就是你的代码有点小毛病就是return应该随便返回i、j、k一个数 如果你的max方法里面传入的是3,3,3, 那个条件都不满足你不能返回个0吧。所以应该修改下,主函数是个静态函数,静态函数里面只能调用静态函数和静态变量。因为静态函数和变量是优先于对象函数和对象变量的,静态函数和静态变量是在类加载的时候就加载了,而对象函数和一般变量是在对象建立的时候才被加载的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马