java中 静态方法与非静态方法的区别
**
前言
静态方法与非静态方法最主要区别就是在类中使用static修饰,而非静态方法是不加static修饰方法的,在类中定义没有占内存,只有在类中被实例化成对象时,对象调用该方法才被分配内存。
其次,静态方法中只能调用静态成员或者方法,不能调用非静态方法或者非静态成员,而非静态方法既可以调用静态成员或者方法又可以调用其他的非静态成员或者方法。总的来说非静态方法啥都可以调用。
注意main方法一定是static方法!!
一、静态方法的Main方法访问类中的非静态成员方法。
1.
代码如下(示例):
public class Test {
public static void main(String[] args) {
int i=age(1,2);//注意这是在静态方法中调用了非静态方法
System.out.println(i);
}
public int age(int x,int y) {
return x*y;//非静态方法
}
}
出现错误
1.解决办法:将这个非静态方法用static变成静态方法调用
public class Test {
public static void main(String[] args) {
int i=age(1,2);//静态方法调用静态方法是允许的
System.out.println(i);
}
public static age(int x,int y) {//加入了static将其变成静态方法
return x*y;
}
}
2.解决办法:是静态方法调用非静态时要实例化才能被静态方法调用
public class Test {
public static void main(String[] args) {
Test test=new Test();//声明一个Test类型的变量,变量名test,new Test()就是实例化Test类
int i=test.age(1,2);
System.out.println(i);
}
public int age(int x,int y) {
return x*y;//非静态方法
}
}