⑴ java中使用静态方法
编程时我们心里一定要清楚静态方法和类的非静态方法方法的区别:
最根本区别从编译角度来说吧:
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();
}
}
⑵ java静态方法与非静态方法有什么区别
静态方法可以直接用类名点出来方法,而普通方法需要创建类的对象后才能调用! 静态的方法和变量会调用时在内存生成一个唯一的标示,你可以理解成在物理内存中给静态一个位子,这样的话在调用的时候可以直接找到,而且会节省内存,但是如果你声明的静态过多的话那么每一个都会在内存有一个位子,那么你就没有资源运行别的,会报内存溢出! 普通方法是由java的gc机制(垃圾回收机制)来控制,可能同一个对象或变量在使用的过程中,这个时间的在内存占了一个位子,而上个时间的还没有从内存中删除,这样的话就可能有2个一样的在内存中,这个2个一样东西只是内容值一样,但是内存值不一样,你可以用"=="和"equals"来查看(这个只适用对象和String类型).java的gc机制会根据运行时的内存状态来自动清除一些用不到变量或对象,就算你手动调用gc也是一样的!
⑶ Java 中 静态方法与非静态方法的区别
静态方法和实例方法的区别主要体现在两个方面:
在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
下面几个例子展示了这一区别。
1、调用静态方法示例。
//-----------文件名hasStaticMethod.java,程序编号1-----------------public
class hasStaticMethod{//定义一个静态方法public static void
callMe(){System.out.println("This is a static method.");}}
下面这个程序使用两种形式来调用静态方法。
//-----------文件名invokeStaticMethod.java,2-----------------
public class invokeStaticMethod{
public static void main(String args[]){
hasStaticMethod.callMe(); //不创建对象,直接调用静态方法
hasStaticMethod oa = new hasStaticMethod(); //创建一个对象oa.callMe(); //利用对象来调用静态方法}}
程序3.36两次调用静态方法,都是允许的,程序的输出如下:
This is a static method.This is a static method.
允许不创建对象而调用静态方法,是Java为了减少程序员调用某些常用方法时的麻烦,而允许程序员按照传统的C语言中使用函数的方式来使用方法。典型的例子是前面某些程序中使用"Math.ramdon()"来获取随机数。
2、静态方法访问成员变量示例。
//-----------文件名accessMember.java,程序编号3.37-----------------class
accessMember{private static int sa; //定义一个静态成员变量private int ia;
//定义一个实例成员变量//下面定义一个静态方法static void statMethod(){int i = 0;
//正确,可以有自己的局部变量sa = 10; //正确,静态方法可以使用静态变量otherStat(); //正确,可以调用静态方法ia =
20; //错误,不能使用实例变量insMethod(); //错误,不能调用实例方法}static void otherStat(){}
//下面定义一个实例方法 void insMethod(){int i = 0; //正确,可以有自己的局部变量sa = 15;
//正确,可以使用静态变量ia = 30; //正确,可以使用实例变量statMethod(); //正确,可以调用静态方法}}
本例其实可以概括成一句话:静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。
main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。
⑷ java 静态方法static
返回是1虽然在getInstance() ;里设置了a.i = 2 ;但是 a和a1并不是一个对象,i也不是静态变量,所以getInstance() 并没有对a1的i进行修改。
静态方法可以不用new对象就可以执行,常用语创建单例对象。
静态方法不是静态变量,但是静态方法要用的全局变量必须为静态的。
⑸ java中的静态方法有什么作用
作用:
静态属于类内存必须配内存空间,空间直由静态占用内存管理器。由于静态没调用,静态存储空间收所都声明静态,占用量内存空间系统变慢普通,象调用内存并直起配内存调用候,才其配存储空间其没调用,存储空间内存管理;其收释放没用空间提高系统运行速率。
⑹ java静态方法怎么写
举例:
publicclassXXX{
publicstaticvoidhelp(){
System.out.println("Welcome!");
}
}
其中的help方法就是静态的。主要是加了“static”关键字。
⑺ java静态方法
内存会不会增多和静态方法没关系好把!! 内存增加是在方法内处理的时候消耗的内存。
你不会是说使用方法的内存把, 静态方法只有一个,多次调用或多线程同时调用也是使用的那一个方法!
⑻ java中,什么是静态方法
首先静态方法是用static来修饰的
静态方法就是可以不通过生成类的实例直接来调用的
举个简单的例子:
class
A
{
public
static
void
a()
{
System.out.println("A被调用");
}
public
void
b()
{
System.out.println("B被调用");
}
}
假设你要调用方法a和方法b
如果调用方法a可以直接A.a();就可以了
不需要先
A
aa
=
new
A();aa.a();
但是调用b则必须A
aa
=
new
A();aa.b();
还有在继承里面要注意:
如果B继承自A
而且B中和A中都包含相同的函数
如果是实例方法则是被B覆盖掉的
如果是静态方法则是被B隐藏掉的
这一点
在上溯机制中可能遇到
最后还有一点静态方法调用的方法一定也要是静态的
⑼ java中static的用法
static可以修饰变量(属性)、方法、代码块和内部类
static属性:属于这个类所有,即由该类创建的所有对象共享同一个static属性。可以对象创建后通过对象名.属性名和类名.属性名两种方式来访问。也可以在没有创建任何对象之前通过类名.属性名的方式来访问。
static方法:也可以通过对象名.方法名和类名.方法名两种方式来访问
static代码块:当类被第一次使用时(可能是调用static属性和方法,或者创建其对象)执行静态代码块,且只被执行一次,主要作用是实现static属性的初始化。
static内部类:属于整个外部类,而不是属于外部类的每个对象。不能访问外部类的非静态成员(变量或者方法),.可以访问外部类的静态成员
⑽ java中什么是静态方法
静态方法是使用static关键字来修饰的方法,如:
public
class
Dog{public
static
void
show(){}}
这里的show()就是一个静态方法,它有全局方法的特点。
静态方法的调用不需要对象,可以用类名直接调用,如:
Dog.show();
当然,使用对象也是可以调用它的,如:new
Dog().show();