黑马程序员技术交流社区

标题: 帮忙看一下我的代码 [打印本页]

作者: 惜别的海岸    时间: 2013-5-16 19:54
标题: 帮忙看一下我的代码
本帖最后由 惜别的海岸 于 2013-5-17 00:01 编辑

看了自学视频,自己写的一段代码如下:
//数组元素由小到大排序方法:
public void sortArray(int[] arr)
{
        for(int i=0;i<arr.length-1;i++)
        {
                for(int j=i+1;j<arr.length;j++)
                {
                        if (arr>arr[j])
                        {
                                int temp=0;
                                temp=arr;
                                arr=arr[j];
                                arr[j]=temp;
                        }
                }
        }
}

//输出数组中每个元素的方法:
public void printArray(int[] arr)
{
        System.out.print("[");
        for(int i=0;i<arr.length;i++)
        {                        
                if(i!=arr.length-1)
                {
                        System.out.print(arr+",");                                
                }
                else
                {
                        System.out.println(arr+"]");
                }
               
        }
}

//main函数
class SelectArray
{
        public static void main(String[] args)
        {
                int[] arr1={2,1,5,8,4};               
                printArray(arr1);
                sortArray(arr1);
                printArray(arr1);
        }
}
后来查出问题来了,两个方法都要加static,并且都要放在类中,这个是什么原因,请详细说明,谢谢。

作者: 飞鸟青崖    时间: 2013-5-16 20:06
本帖最后由 飞鸟青崖 于 2013-5-16 20:12 编辑

主函数是静态的,而静态的方法只能调用静态的成员变量或者方法,所以两个方法都要加static。
把方法放在类中,是为了能执行方法。
其实,我觉得Java中的类就相当于把方法给分类了。假如一个方法是一个学生的话,那么类就相当于是班级,一个班级中包含好多学生。你再找某个学生的时候就会先找班级,
找到班级之后就好找这个学生了。这也是一样的。先找这个方法所在的类,再通过类来找这个方法,这样就方便好多。
当你不把方法放在类中时,就相当于一个学生没有班级,你要找它就根本不可能。所以如果不把方法放在类中,这个方法就没办法执行。就像不把一个语句放在方法中一样。
还有一点忘了说:
     虽然类中包含方法,但并不意味着方法可以随便放一个类中。就像你不能把一个学数学的学生放到一个学英语的班级中一样。一般来说方法和类是有一定关系的。
其实很多时候是先存在类,然后再根据需要在这个类中创建相应的方法。
作者: 徐启坤    时间: 2013-5-16 20:10
Java是面向对象的,方法必须放在类里面,要不然不就成了C了吗
作者: HM刘志朋    时间: 2013-5-16 21:13
首先说下,假如放在类的应该定义为功能类,调用的时候通过new来调用。
加static关键在是因为main方法是用static来修饰的,也就是静态
关于static静态关键字有这样的规则:
                A:静态只能访问静态成员,非静态可以访问静态也可以访问非静态成员。
                B:静态方法中没有this,super关键字。
                        this,super是创建对象的时候才存在的,而静态是随着类的加载而加载。先加载的不能访问后加载的




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