关于调用static方法的疑惑?

在java中被static所修饰的方法可被类直接调用,也可被创建对象调用。但我在使用过程中出现了被警告的情况。代码如下(重点main中):

public class java2 {

    public static void printCharInfo(String str){
        char[] a = str.toCharArray();
        char b;

        for(int i=0;i<a.length;i++){//对char数组进行排序
            for(int j=i;j<a.length;j++){
                if(a[i]>a[j]){
                    b=a[i];
                    a[i]=a[j];
                    a[j]=b;
                }
            }
        }
        int j=0;
        for(int i=0;i<a.length;){
            int count =0;
            for(;j<a.length;j++){   
                if(a[i] == a[j]){
                    count++;        
                }else{
                    break;
                }
            }
            System.out.println(a[i]+":"+count);
            i=j;    
        }
    }

public static void main(String[] args){
    java2 aa = new java2();
    String h ="-=-=asdeaas";

_ aa.printCharInfo(h);_//这里在myeclipse中会出现警告只有用类直接调用警告才会消失
}
}
为什么会有这种情况?

4个回答

这个是因为static方法是属于类的,而不属于某一个对象的,但是我们也能够通过对象调用static的方法,但是不推荐使用对象来调用,所以发出警告。java是推荐使用类名来调用

qq_36152559
qq_36152559 谢谢
大约 3 年之前 回复

static是属于类的方法,所以它最标准等的调用是用类名来调用,虽然对象调用也是可以的,当时编译器不建议,所以给了警告。你修改成类名调用就可以了

qq_36152559
qq_36152559 谢谢
大约 3 年之前 回复

警告的意思是这符合语法,但是可能存在潜在的错误。因为一般我们用类调用静态方法,用实例调用非静态方法,这里的警告是eclipse怀疑你是不是忘记这是一个静态方法了。

qq_36152559
qq_36152559 谢谢
大约 3 年之前 回复

警告只是存在潜在的风险并不是错误,java提供static修饰符希望类名直接去调用而不是希望你初始化对象,所以会有警告

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问