在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中会出现警告只有用类直接调用警告才会消失
}
}
为什么会有这种情况?
这个是因为static方法是属于类的,而不属于某一个对象的,但是我们也能够通过对象调用static的方法,但是不推荐使用对象来调用,所以发出警告。java是推荐使用类名来调用
警告的意思是这符合语法,但是可能存在潜在的错误。因为一般我们用类调用静态方法,用实例调用非静态方法,这里的警告是eclipse怀疑你是不是忘记这是一个静态方法了。
static是属于类的方法,所以它最标准等的调用是用类名来调用,虽然对象调用也是可以的,当时编译器不建议,所以给了警告。你修改成类名调用就可以了
警告只是存在潜在的风险并不是错误,java提供static修饰符希望类名直接去调用而不是希望你初始化对象,所以会有警告