㈠ java中static怎么用
static 属于全局,也就是类的属性 和方法,换句话说 一个类,不管有多少个实例,却只有一个全局变量
class B {static int a=0;}
B b1=new B();..................;B bn=new B();
b1~bn 都是类B的实例,每个实例都共享 变量a,a是全局变量,属于类B的属性,每个实例都能引用变量a,
加入执行b1.a=1;后 那么b2.a,b3.a,b4.a......bn.a 都等于1了,
static 方法也是类似的
需要注意的是 静态属性和方法属于类方法,加载类后,就已经存在静态属性和方法,实例是需要用new构造出来后 才会有引用
根据先后顺序,就有以下两条规则
1、非静态的方法可以调用静态的或者非静态的属性和方法;
2、静态的方法不可以调用非静态的属性和方法,因为非静态的还不一定存在,只能先构造出来后,再通过实例引用
例如 在main方法中 可以直接调用static 的方法,调用非static方法 需要先构造出类的实例,通过实例才能调用方法
㈡ Java中标示符为static的方法在主函数中可以直接调用是什么意思呀
有此标识的方法是静态方法的,可以直接类名.方法名调用。由于你目前想在主函数中直接调用意思就是在类内部调用,顾可直接去掉方法名。事例:class XXX{
main{test()这就是直接调用}主函数
static test()static标识的方法
}
㈢ 请问java语言中的static的用法
1)static方法
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
2)static变量
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
3)static代码块
static关键字还有一个比较关键的作用就是
用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。
㈣ java static {}的用法
static 关键字很有意思哦
public static String getProperty(String key) { 这里不用说了,静态方法
就说说static{}
称为static代码块 ,也叫静态代码块,
是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次
利用静态代码块可以对一些static变量进行赋值
例子
public class Test5 {
private static int a;
private int b;
static{
Test5.a=3;
System.out.println(a);
Test5 t=new Test5();
t.f();
t.b=1000;
System.out.println(t.b);
}
static{
Test5.a=4;
System.out.println(a);
}
public static void main(String[] args) {
// TODO 自动生成方法存根
}
static{
Test5.a=5;
System.out.println(a);
}
public void f(){
System.out.println("hhahhahah");
}
}
运行结果:
3
hhahhahah
1000
4
5
㈤ JAVA中 在static方法内部能否调用非静态方法
static方法内部不能直接调用非静态方法,
可以在调用之前实例化非静态方法所在的类,再用类点方法来调用。
例:非静态方法是className类里面的method();
className cn=new className();
cn.method();
这样就可以了。
㈥ java中的静态方法可以直接调用吗
可以直接调用的。
在调用静态方法的时候,比如说这个静态方法是在一个类中,直接用类名点方法名,不需要在new出一个对象,然后用new处的对象来调用方法。因为静态方法可以直接用类名调用
㈦ java中static的用法
static变量有点类似于C中的全局变量的概念。值得探讨的是静态变量的初始化问题。拿以下程序为例
class Value{
static int c=0;
Value(){
c=15;
}
Value(int i){
c=i;
}
static void inc(){
c++;
}
}
class Count{
public static void prt(String s){
System.out.println(s);
}
Value v=new Value(10);
static Value v1,v2;
static{
prt("v1.c="+v1.c+" v2.c="+v2.c);
v1=new Value(27);
prt("v1.c="+v1.c+" v2.c="+v2.c);
v2=new Value(15);
prt("v1.c="+v1.c+" v2.c="+v2.c);
}
public static void 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变量,然后是子类的,依次类推。非静态变量不是本文的主题,在此不做详细讨论,请参考Think in Java中的讲解。
㈧ java 静态函数怎么调用方法
首先明确一下 在java里面 函数就是方法 方法就是函数 这两者是一样的。
你的问题的意思是在静态方法里面怎么再调用其他方法 还是 怎么调用静态方法?
如果是静态方法里面怎么调用其他方法的话,分成调用静态方法和普通方法。
调用静态方法不需要实例就可以调用。直接通过类名.静态方法名去调用。当然也可以用对象名.静态方法名去调用。
如果是调用成员方法,那就只能通过实例,也就是对象名.成员方法名去调用。
如果是怎么调用静态方法。那我上面已经说了 直接通过类名.静态方法名去调用。当然也可以用对象名.静态方法名去调用。
㈨ java中的static如何使用
有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static成员的最常见的例子是main( )。因为在程序开始执行时必须调用main(),所以它被声明为static。声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。声明为static的方法有以下几条限制:· 它们仅能调用其他的static方法。· 它们只能访问static数据。· 它们不能以任何方式引用this或super(关键字super与继承有关,在下一章中描述)。 如果你需要通过计算来初始化你的static变量,你可以声明一个static块,Static块仅在该类被加载时执行一次。下面的例子显示的类有一个static方法,一些static变量,以及一个static 初始化块: class UseStatic { static int a = 3; static int b; static void meth(int x) { System.out.println("x = " + x); System.out.println("a = " + a); System.out.println("b = " + b);} static { System.out.println("Static block initialized."); b = a * 4; } public static void main(String args[]) { meth(42); } }一旦UseStatic类被装载,所有的static语句被运行。首先,a被设置为3,接着static块执行(打印一条消息),最后,b被初始化为a*4或12。然后调用main(),main()调用meth(),把值42传递给x。3个println ( )语句引用两个static变量a和b,以及局部变量x 。注意:在一个static方法中引用任何实例变量都是非法的。下面是该程序的输出:Static block initialized.x = 42a = 3b = 12在定义它们的类的外面,static方法和变量能独立于任何对象而被使用。这样,你只要在类的名字后面加点号运算符即可。例如,如果你希望从类外面调用一个static方法,你可以使用下面通用的格式:classname.method( )这里,classname 是类的名字,在该类中定义static方法。可以看到,这种格式与通过对象引用变量调用非static方法的格式类似。一static变量可以以同样的格式来访问——类名加点号运算符。这就是Java如何实现全局功能和全局变量的一个控制版本。下面是一个例子。在main()中,static方法callme()和static变量b在它们的类之外被访问。class StaticDemo {static int a = 42;static int b = 99;static void callme() {System.out.println("a = " + a);}}class StaticByName {public static void main(String args[]) {StaticDemo.callme();System.out.println("b = " + StaticDemo.b);}}下面是该程序的输出:a = 42b = 99static成员是不能被其所在class创建的实例访问的。如果不加static修饰的成员是对象成员,也就是归每个对象所有的。加static修饰的成员是类成员,就是可以由一个类直接调用,为所有对象共有的㈩ java 中类的静态方法怎么调用成员变量
静态方法只能直接调用静态成员(包括变量和方法),而不能直接访问类中的非静态成员
静态方法不能以任何方式引用this和super关键字,因为静态方法在使用前不用创建任何实例对象,当静态方法调用时,this所使用的对象根本没有创建
静态方法中不可能再创建静态变量,不会导致方法里面的变量为静态变量 因为方法中的变量都是局部变量,不可能同时为局部变量又同时是静态变量
JVM对每种类型的变量都有自己的存储区域,static有专门的存储区
局部和静态是冲突的,不可能同时作为标识去修饰一个变量
静态方法是可以通过类型来调用的,不过根据类对象来调用也是可以的
静态成员是共享的,任何通过类调用都是可以的
静态方法可以调用静态方法 可以调用非静态方法(通过类对象调用),静态方法可以调用静态成员变量,但是不能调用非静态成员变量(不能直接调用,但是可以通过类对象调用非静态成员变量)