JAVA有个地方看不懂

来源:百度知道 编辑:UC知道 时间:2024/05/06 05:48:45
教程说成员变量可以分成实例和类变量,类方法可以分为实例和类方法,
class A
{ int a;
float max (float x,float y)
{
}
static float jerry()
{
}
static void String speak(String s)
{
}
}
jerry 和speak 是;类方法,MAX是实例方法,听不懂这什么意思,他们之间有什么差别????
那么STATIC修饰后的方法和变量,怎么通过类名反问?能举个例子吗?你说的太抽象了,要实践的东西才好

一个类可以有若干个实例,实例方法可以供给每个实例去使用,每个实例所使用的都是属于自己的一套方法.

类方法,这个方法只属于类本身,不属于任何一个实例,掉用类方法只能使用
类名.方法名(),这样的方式. 类方法和实例方法的区别在于,类方法所操作的数据不属于任何实例变量 比如:
class Test{
private static int a;//类变量,不属于任何一个实例,每个实例对该变量操作后,该操作对所有实例声效,比如说:Test有若干的实例,假设一个实例将a的值更新为10,那么其他任何一个实例看到a都是10
private int b; //实例变量,这个类的每个对象都拥有一个副本,大家互不 干预
}

凡是static修饰的方法和变量,都是类方法和类变量,可以直接通过类名访问,而不用创建该类的实例。
反之,如果不是static修饰的,就要先创建该类的实例,才可以访问。

可以从内存的开辟来说区别,类方法和变量--类的所有实例都共享同一个类方法和类变量。简单的说,就是才程序运行时,不管你有没有实例化这个类,类方法和变量已经存在了(已经开辟了内存空间)。实例化--我的理解是,开辟了内存空间,就好像有汽车这个概念。你生产一辆出来,这就叫实例化