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

本帖最后由 姜姗姗 于 2014-4-13 15:48 编辑

package test;
public class test24 {
        public static void main(String args[]){
                int[] arr = {-23,-34,-65,-23,-78,-234,-6};
                int maxElement = getMax_2(arr);//为什么int maxElement =arr.getMax();不对
               
                System.out.println(maxElement);
        }
        
        public static int getMax(int [] arr ){
                int maxElement = arr[0];//定义变量记录较大的值
                for(int x=1;x<arr.length;x++){//注意不要x<arr.length-1那样最后一个元素取不到,
                        
               
                        if(arr[x]>maxElement)
                                maxElement = arr[x];                                
                }        
               
                return  maxElement;
        }
        
        //getMax_2() 是求最大值的另一种思想、方法
        public static int getMax_2(int []arr){
                int maxIndex = 0;//定义变量记录较大的值的角标
                for(int x=1;x<arr.length ;x++){
                        if(arr[x]>arr[maxIndex])
                                maxIndex = x;
                }
               
               
                return arr[maxIndex];
        }
        
        //getMax()是通过控制元素来进行的比较,而getMax_2()是通过控制元素角标来进行元素的比较

}






数组本身也是对象,为什么int maxElement = getMax_2(arr);不能写成  int maxElement =arr.getMax();

5 个回复

倒序浏览
数组对象中根本就没有getMax();这个方法,你这个方法只是定义在test24这个类当中了,是静态的,要使用这个方法的话,要用类名.方法名,例如test24.getMax(arr ) 这样就可以了

下面的这个方法并不是数组对象中有的方法,也不会牵扯到方法的覆盖

     public static int getMax(int [] arr ){
                int maxElement = arr[0];//定义变量记录较大的值
                for(int x=1;x<arr.length;x++){//注意不要x<arr.length-1那样最后一个元素取不到,
                        
               
                        if(arr[x]>maxElement)
                                maxElement = arr[x];                                
                }        
               
                return  maxElement;
        }
回复 使用道具 举报
搜噶,秒懂,这个题困了我两天了,大牛,膜拜啊,:handshake
回复 使用道具 举报
zms2100 发表于 2014-4-11 22:50
差不多如LS所言,讲点详细其他的就是:
   1、数组是对象,所以它与Java大部分类一样继承自Object类,我印象 ...

哦哦,原来关键是数组不能实例化对象。搜噶,/强
回复 使用道具 举报
姜姗姗 发表于 2014-4-13 15:48
哦哦,原来关键是数组不能实例化对象。搜噶,/强

不能这么概括吧,int[] arr = new int[5];这也算实例化对象,只不过是int[]等数组是个序列,不同于集合,在Java中没有与其对应的类(除了能调用Object类的方法外没有专门的类的方法可调用)。
例如: 字符串在Java里有String这个类,而在C语言等里面是算字符序列,也是没有专门对应的类(PS: 这比方打的不是很好,因为C语言面向过程,方法通常是过程型的,没有Java所谓的属于谁,仅供理解参考)。
可能我解释的有些唠叨又不清楚了,简单点就按"沙发"的童鞋的思路去理解,那个getMax()方法属于test24这个类(话说这类名建议首字母大写),而不是数组对象的方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马