JAVA中使用静态方法
6个回答
展开全部
编程时我们心里一定要清楚静态方法和类的非静态方法方法的区别:
最根本区别从编译角度来说吧:
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();
}
}
最根本区别从编译角度来说吧:
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中得main方法都是static的。这个static有什么特性呢?
往往一个实例class需要instantiate得到一个实例才能用其中的method以及variable。
而static的方法并不是tied to这个实例class的,也就是说instantiate得到的实例并不能使用这个方法,而是直接通过class名字加点加方法名就可以了。
static的方法调用的也必须是static的,因为在还没有instantiate之前,非static得方法根本还不“存在”,所以是无法找到和使用的。
因此java程序一运行就会去找main函数,然后main函数里面调用的方法也必须是static的。
往往一个实例class需要instantiate得到一个实例才能用其中的method以及variable。
而static的方法并不是tied to这个实例class的,也就是说instantiate得到的实例并不能使用这个方法,而是直接通过class名字加点加方法名就可以了。
static的方法调用的也必须是static的,因为在还没有instantiate之前,非static得方法根本还不“存在”,所以是无法找到和使用的。
因此java程序一运行就会去找main函数,然后main函数里面调用的方法也必须是static的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
大多数静态方法都是工具方法,参考的话commons-lang类库是一个不错的工具类库
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
静态的方法就是c语言里的最普通的方法 直接使用就行不需要实例化对象
静态的方法其实是和面向对象的程序设计相互矛盾的但是有些地方用静态的方法的话会很简单
用处的话你去把math类好好看看就明白了
学java的话怎么也有点c的底子把....就这么简单
静态的方法其实是和面向对象的程序设计相互矛盾的但是有些地方用静态的方法的话会很简单
用处的话你去把math类好好看看就明白了
学java的话怎么也有点c的底子把....就这么简单
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
static的方法在整个类中都是共享的,这样可以提高效率。对于一些比较公共的方法可以考虑。
static方法只能调用static方法和static变量,不能直接调用非static域。
例子很多的,java的main方法不就是吗
static方法只能调用static方法和static变量,不能直接调用非static域。
例子很多的,java的main方法不就是吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询