class PersonDemo1
{
public static void main(String[] args)
{
Person per=new Person();
per.p(); //调用其他类中的非静态方法
System.out.println(per.name);//调用其他类中的非静态变量
new PersonDemo1().show(); //调用本类中的非静态方法
System.out.println(new PersonDemo1().age); //调用本类中的非静态变量
}
private int age=3;
public void show()
{
System.out.println("byebye");
}
}
class Person
{
String name="张三";
public void p()
{
System.out.println("Hello");
}
}
总结:静态想调用谁的非静态方法或变量,就建立谁的对象,之后便可以调用。作者: 龙乾坤 时间: 2012-5-3 06:14
class Demo{
static int sum=0
public static void main(String[] args ){
print();//这行会出现静态成员无法访问非静态成员
System.out.println(num++);//这行就ok.
}
void print(){
int s=9;
System.out.println(s);
}
}
首先要搞清楚静态和非静态这个问题,其实可以这样说,静态属于类(类成员),是所以对象的共享成员,非静态属于对象(对象成员),他们的生命周期不同,静态时随着类的加载而加载,非静态时随着对象的加载而加载,一旦对象创建才分配存储空间。作者: 马超 时间: 2012-5-3 08:38 本帖最后由 依然小马哥 于 2012-5-3 08:40 编辑
对于非静态的方法和变量,需要先创建(new出来一个)类的实例对象后才可使用。
main() 方法是静态的,因此JVM在执行main方法时不创建main方法所在的类的实例对象,因而在main()方法中,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员。
class Person
{
String name; //动态的,可变的
int age; //动态的,可变的
public static void show(String name,int age) //1、静态的方法中不允许出现动态成员变量
{
this.name = name; //错误
this.age = age; //错误
}