java静态方法的调用方法
⑴ java 子类怎么调用父类的静态方法
在子类的实例方法调用父类的静态方法可以直接方法名(前提子类没有重写父类的静态方法)第二写父类.方法或super.方法物告;在子含尺类的静态的方法调用父类的静谈蚂高态的方法可以方法名(如上文),第二父类.方法,不能super.方法
⑵ 在java中怎样调用静态方法,还有静态与普通方法有什么不同
静态方法放在Date数据区
可以直接调用
和STATIC
变量一样的
在内存开始加载的时候就有空间了
普通方法是
程序运行到的时候才开始调用
⑶ java中的静态方法可以直接调用吗
可以直接调用的。
在调用静态方法的时候,比如说这个静态方法是在一个类中,直接用类名点方法名,腊哪蠢不需要在new出一个对象,然后用new处的对象来调缓岩用方法。因轮陪为静态方法可以直接用类名调用
⑷ java本类的静态方法如何直接调用,其他类的静态方法如何调用
java本类的静态方法,直接使用静态的方法名传入参数就可以了,如果是其他类的,权限修饰符必须是public否者无法调用,调用方法是
其他类的类名
.
方法名(参数)
⑸ java中static的用法
1.静态方法
通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法
声明为static的方法有以下几条限制:
·它们仅能调用其他的static 方法。
·它们只能访问static数据。
·它们不能以任何方式引用this 或super。
class Simple {
staticvoid go() {
System.out.println("Welcome");
}
}
publicclass Cal {
publicstaticvoid main(String[] args) {
Simple.go();
}
}
调用一个静态方法就是“类名.方法名”,静态方法的使用很简单如上所示。一般来说,静态方法常常为应用程序中的其它类提供一些实用工具所用,在Java的类库中大量的静态方法正是出于此目的而定义的。
2.静态变量
声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间,当然对于final则另当别论了
class Value {
staticintc = 0;
staticvoid inc() {
c++;
}
}
publicclass Count2 {
publicstaticvoid prt(String s) {
System.out.print(s);
}
publicstaticvoid main(String[] args) {
Value v1, v2;
v1 = new Value();
v2 = new Value();
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
v1.inc();
prt(" v1.c=" + v1.c + " v2.c=" + v2.c);
}
}
结果为:v1.c=0 v2.c=0 v1.c=1 v2.c=1
由此可以证明它们共享一块存储区。static变量有点类似于C中的全局变量的概念。
值得探讨的是静态变量的初始化问题。
如果你需要通过计算来初始化你的static变量,你可以声明一个static块,Static 块仅在该类被加载时执行一次。下面的例子显示的类有一个static方法,一些static变量,以及一个static 初始化块:
class Value3 {
staticintc = 0;
Value3() {
c = 15;
}
Value3(int i) {
c = i;
}
staticvoid inc() {
c++;
}
}
publicclass Count {
publicstaticvoid prt(String s) {
System.out.println(s);
}
Value3 v = new Value3(10);
static Value3 v1, v2;
static {//此即为static块
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
v1 = new Value3(27);
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
v2 = new Value3(15);
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
}
publicstaticvoid main(String[] args) {
Count ct = new Count();
prt("ct.c=" + ct.v.c);
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
v1.inc();
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
prt("ct.c=" + ct.v.c);
}
}
结果为:
v1.c=0 v2.c=0
v1.c=27 v2.c=27
v1.c=15 v2.c=15
ct.c=10
v1.c=10 v2.c=10
v1.c=11 v2.c=11
ct.c=11
这个程序展示了静态初始化的各种特性。如果你初次接触Java,结果可能令你吃惊。可能会对static后加大括号感到困惑。首先要告诉你的是,static定义的变量会优先于任何其它非static变量,不论其出现的顺序如何。正如在程序中所表现的,虽然v出现在v1和v2的前面,但是结果却是v1和v2的初始化在v的前面。在static{后面跟着一段代码,这是用来进行显式的静态变量初始化,这段代码只会初始化一次,且在类被第一次装载时。如果你能读懂并理解这段代码,会帮助你对static关键字的认识。在涉及到继承的时候,会先初始化父类的static变量,然后是子类的,依次类推。
3.静态类
通常一个普通类不允许声明为静态的,只有一个内部类才可以。这时这个声明为静态的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。
publicclass StaticCls {
publicstaticvoid main(String[] args) {
OuterCls.InnerCls oi = newOuterCls.InnerCls();
}
}
classOuterCls {
publicstaticclass InnerCls {
InnerCls() {
System.out.println("InnerCls");
}
}
}
结果为:InnerCls
⑹ java本类的静态方法如何直接调用,其他类的静态方法如何调用
java本类的静态方法,直接使用静态的方法咐裤困名传入参数就可以了,如果是其他类的,权限修饰符必须是public否者纯团无法调用,调用方法是 其他类的类名 . 方法名(参数)衡念
⑺ Java中的静态方法是什么
静态方法是在类中使用staitc修饰的方法,在类定义的时候已经被装载和分配。
静态方法为类所有,可以通过对象来使用,也可以通过类来使用。
我们之前一直写的mian方法仔细看看,它就是一个静态方法,静态方法使用如下:
⑻ Java 的静态方法,直接用类名.方法来调用有这样的调用的吗我们在编码的时候不是都把类先实例
对于这个问题,你要先理解静态的概念。
你可以简单的理解成,静态的东西,不管是变量还是方法,一定是不依赖对象的,是在对象还御雹没有被创建的时候就已经存在的。
既然他可以脱离对象存在,也就不用实例化对象之后再调用。
静态的变量方法放在哪里其镇姿帆实都是无所谓的,放在某个类里只是找个栖身之所罢了,所以直接用类名.静态变量册搏/方法就可以调用了。
⑼ Java中可以直接调用类中静态方法,不用实例化么,详解!原理
好吧,我来试试看,看答案能不能够让你满意。
先通俗的分析下,我们把类看作是一个房子。房子里面有家具,桌椅板凳之类的,房子里面还有人。
房子里面所有的人都应该是共有一套家具的。也就是说,这些家具是唯一的,如果某个家具坏了,那么大家都用不了。
我们再看一看定义,java的静态变量也叫做类变量,它开始于类的创建,结束于类的消亡。非静态变量叫做实例变量,它开始于类的实例的创建,结束语类的实例的消亡。静态变量被所有实例所共享。也就是如上面的例子,座椅板凳是类变量,它们是在房子被建好了之后就被添加放置进来,而且基本都是唯一的。人就相当于实例,每个人都能用这些家具,但是如果家具一旦损坏,那就是坏了,或者你把某一个家具搬走,那么所有的人都用不了这个家具,房子里也不存在这个家具了。
但是房子里可以进很多人,可以进张三,也可以进李四。所以这些人就是类的实例对象,他们身上穿的衣服就可以叫做实例变量。
那么在内存之中又是如何的呢?当一个类被创建并初始化后,内存中会有两个区域,栈区和堆区。栈中主要存放的是引用变量,堆中主要存放的是真实的被实例化后的类。栈中的引用变量会指向堆中的真实对象地址。比如A a=new A(); a这个变量就会在栈中,实际被new出来的类A的对象会放在堆中,a指向实际被new出来的A对象。
如果一个类中有静态变量的话,程序首先会把该静态变量加载进内存中,也就是在堆中开辟一个区域专门存放。以后不管你new多少个类的对象,该静态变量永远都是在那里的。也就是说,静态变量在类的初始化一次后,系统就不会为该变量开辟新的内存空间。而每new一个类的对象,系统就会重新在
堆内存中开辟一个新空间来存放该类的实例对象,并且栈中也会有一个新的引用变量去指向它。
静态方法也是类似,但是有一点要强调,静态方法只中不能调用非静态方法。因为被static修饰的方法会首先被Classloader对象先加载进内存,而这个时候可能其它的非静态方法或者变量还没有被加载进来。就好比我现在想做包子,现在面粉被static修饰,首先已经拿到你身边,可是因为包子馅不是static修饰的,所以可能包子馅儿还没运过来,你说怎么做的出包子呢。
被static修饰过的都是随着类的初始化后就产生了,在堆内存中都有一块专门的区域来存放,所以只需要类名点方法名或者变量名即可。而非静态的就必须通过类的对象去调相应的。就像是你想要红色的衣服,你必须是从穿红色的衣服的人的身上拿过来才行,所以你必须找到穿红色衣服的人,也就是类的实例对象,而你如果要去找一个桌子,而桌子就在房间里摆着,你只要进到房间里直接走过去拿来就可以了~~
⑽ 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();
}
}