首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

静态和非静态方法使用有关问题

2012-04-17 
静态和非静态方法使用问题学习JAVA有几个月了,但是写程序的时候用是否使用静态方法还是不很了解。往往是先

静态和非静态方法使用问题
学习JAVA有几个月了,但是写程序的时候用是否使用静态方法还是不很了解。往往是先写非静态方法,然后因为程序提示要用静态方法,再改成静态方法。感觉在猜谜。
书上说的STATIC方法就象牧羊人角色,负责看护与其隶属的同一类型的实例群。有高人给点代码指点下么?

[解决办法]
静态变量是和类相关的,在该类加载的时候,便载入虚拟机。和类相关不和具体的某个实例相关。也可以理解为该类所有实例共享的全局变量。调用时候直接用类名调用。
[解决办法]
解释都在注释里,楼主自己看....
class Chinese {
static void sing() {
System.out.println("卓彬");
}

void singOurCountry() {
sing();
// 类中的成员方法也可以直接访问静态成员方法
}
}

public class TestChinese {
public static void main(String[] args) {
Chinese.sing();
// 上面的程序代码直接使用了"类名.成员"的格式
Chinese ch = new Chinese();
ch.sing();
// 上面的程序代码直接使用了"对象名.成员"的格式
ch.singOurCountry();
}
}
[解决办法]
也就是说,如果是静态的方法,就可以直接使用"类名.方法名",而如果不是静态的话,就不可以这样用,只能先定义一个对象,然后用"对象.方法名",是这样的吗?

探讨
解释都在注释里,楼主自己看....
class Chinese {
static void sing() {
System.out.println("卓彬");
}

void singOurCountry() {
sing();
// 类中的成员方法也可以直接访问静态成员方法
}
}

public class TestChinese {
public static void main(String[] args) {
Chinese.sing();
// 上面的程序代码直接使用了"类名.成员"的格式
Chinese ch = new Chinese();
ch.sing();
// 上面的程序代码…

[解决办法]
利用静态方法得一个单实例的设计模式,看能不能抛砖引玉
Java code
class A{    private A(){}        private static A instance = new A();        public static A makeA(){        return instance;    }}
[解决办法]
public class Test{
private int nostatic;
private static int sstatic;
public void MyMethod(){
nostatic=2;//正确,非静态方法可以访问非静态成员
sstatic=3;//正确,非静态方法可以访问静态成员
System.out.println("我是非静态方法!nostatic="+nostatic+" sstatic="+sstatic);
}
public static void StaticMethod(){
//nostatic=4; 不正确,静态方法不可以访问非静态成员
sstatic=5;//正确,静态方法可以访问静态成员
System.out.println("我是静态方法!sstatic="+sstatic);

}

public static void main(String[]args){
  
Test test=new Test();
test.MyMethod();//静态方法直接用类名调用
Test.StaticMethod();//非静态方法要先把类实例化,用对象调用

}
 

}

热点排行