java中什么是静态方法

Python05

java中什么是静态方法,第1张

若类的方法前加了static关键字,则该方法称为静态方法,反之为实例方法。静态方法为类所有,可以通过对象来使用,也可以通过类来使用。但一般提倡通过类名来使用,因为静态方法只要定义了类,不必建立类的实例就可使用。静态方法只能调用静态变量。

静态方法可以用类名直接调用,如:类名.静态方法名 ,非静态方法要一定要获得类的实例才可以,比如:类名 实例名 = new 类名();

获得实例后用 实例名.方法名 这样的方式调用。

静态方法和非静态方法。区分就看关键字“static”。

在定义方法时候有这个关键字就是静态方法,没有就是非静态方法。

例:public static void test1(){} 静态方法

public void test2(){} 非静态方法

用法区别,静态方法调用时候直接类名加方法。非静态方法只能由类的实例来调用。

例:一个类A。它中有上面例子的2个方法。

你在main方法中,可以直接写A.test1()不能写A.test2()

想用test2方法,必须这样来。先A a = new A()a.test2()

java中静态方法和动态方法的区别:

1.静态方法在程序初始化后会一直贮存在内存中,不会被垃圾回收器回收,

非静态方法只在该类初始化后贮存在内存中,当该类调用完毕后会被垃圾回收器收集释放。

2.静态方法在初始化类时初始化,并分配内存;动态方法只有先创建类的实例对象后,才能调用动态方法

编程时我们心里一定要清楚静态方法和类的非静态方法方法的区别:

最根本区别从编译角度来说吧:

1)静态(static)方法是编译时直接加载加载到内存中(离cpu最近的一块内存区域也称为堆栈),比如程序的public static main(args []){}方法,你能实例话吗?

静态方法不能被实例化,也不允许被实例化!

现在很多Java集成工具边写边编译的

因此 你可以通过“类名”+“.”+“静态方法的名()”来调用

2)非静态方法(类的非静态方法)通过关键字 “new” 字来实例化一个对象(object),这个对象放在 内存的另一块区域 堆(heap)中。

也就是说编译时,非静态方法必须先实例化类的一个对象,通过“对象名”+“非静态方法名()”来调用;

public class Student

{

private String name

/************************************************************

*下面两个方法是类的非静态方法封装 属性name,看一下在 main()

*如何调用

************************************************************/

public set(string init_name)

{

this.name = init_name

}

publc String get()

{

return this.name

}

//构造函数

public Student(){}

public Student(String init_name)

{

this.name = init_name

}

//下面是一个静态方法,看一下它在main()中如何调用

public static void PrintClassName()

{

System.out.print("该类的名字:Student")

}

}

//MainClass类

pubic class MainClass

{

public static void main(args[])

{

//先调用静态方法,不需要实例化对象

Student.PrintClassName()

//现在调用非静态方法,一定要实例化对象

Student stu1 = new Student()

stu1.set("Join")

String stu1_name = stu1.get()

}

}