受此限制。2,下面代码中,主方法里,第一种定义是可以的,而第二种会出现错误:无法从静态上下文中引用非静态 变量 this
public class Group
{
private int age;
public class Student
{
String name;
public Student(String n,int a)
{
name=n;
age=a;
}
public Student()
{
name=new String("末知");
age=0;
}
public void output()
{
System.out.println("age:"+age+"name:"+name);
}
}
public void output()
{
Student stu=new Student();
stu.output();
}
public static void main(String[] args)
{
Group st=new Group();//1
st.output();
Group.Student stu=new Group.Student();//2
stu.output();
}
}
【第1个问题】:
你说“在静态方法中只有使用静态变量或者调用静态方法,对于主函数来说不受限制“,那我想问,难道你在主函数main中可以直接调用当前类的成员方法与成员变量?
【第2个问题】:
Student是Group的一个成员内部类,并不是静态内部类。在静态方法main中是无法直接通过new Group.Student()进行实例化的。而是首先将Group进行实现化,然后再才能对Student进行实例化。像这样:
Group st=new Group();或者使用Group匿名对象.new Student()方式:
Group.Student stu=new Group().new Student();java小问题,问大家一个小问题。假如某个类有静态方法。类.静态方法 为 ...
因为你这个静态方法的作用就是返回该类的一个对象,这种做法多用在单例模式上,因为私有化了构造函数,外部无法通过new关键字创建对象,只能提供静态的方法返回该类对象
java 中是不是 只有静态方法 才能调用静态的成员变量
应该是静态方法只能调用静态变量 你想想,假如你用静态方法调用非静态变量,当类没有初始化的时候就可以使用静态方法,但是这个时候,非静态变量还未产生呢. 编译都会报错的
java为什么不能在静态方法中使用非静态变量
静态方法是不用创建对象就直接调用,所以在静态方法中没有this指针,不能访问所属类的非静态变量和方法,只能访问方法体内的局部变量、自己的参数和静态变量,而非静态变量是给一个类的实例化对象调用的,一个是类调用,一个是类对象调用,所有在静态方法中是不能使用非静态变量的。实例:上面出错的原因...
java中静态方法里可以访问非静态变量吗
不可以的 JAVA中的对应关系为:静态方法中 只可以访问静态变量,不可以访问非静态变量 如上,会标红报错。非静态方法中,没有限制。
java静态变量可以在函数中吗
是可以的。静态变量如果想要在 方法(函数)中使用的话,方法也得是静态的。比较正规的说法: 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员
请教大家关于JAVA中的静态变量和静态方法
文二 java类的成员变量有俩种 一种是被static关键字修饰的变量,叫类变量或者静态变量 另一种没有static修饰,为实例变量 类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类...
java中静态方法与非静态方法的区别
1. 方法定义与调用方式:静态方法使用`static`关键字定义,可以通过类名直接调用,无需创建类的实例。非静态方法则需要在创建类的对象后才能通过对象来调用。2. 访问特点:静态方法不能直接访问非静态变量或非静态方法,因为这些需要依赖具体的对象,而静态方法是在类加载时就已存在,与任何特定对象无关。
java 静态方法只能调用静态方法吗
是的。包括可以调用static{ } 也就是静态代码块。因为静态方法 static 是在类加载期间就已经给你准备好了。没用static修饰的方法只有在手动实例化的时候才会去加载。
java:静态方法中的变量和方法必须都是静态的?
分两种:第一种,在静态方法中不实例化一个对象(new Object),这种情况下 静态方法中需要调用的变量和方法都必须是静态的。第二种,在静态方法中实例化一个对象,这种情况下,该实例化的对象中的变量和方法都不需要静态的。
静态类调用静态方法和 普通的类调用静态方法的区别
1、静态方法属于类所有,类实例化前即可使用;2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员;3、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存;4、static内部只能出现static变量和其他static方法!而且static方法中还不能使用this等关键字,...