当前位置:编程学习 > JAVA >>

求教:什么是static

真心求高手指点迷津:在java代码中,定义变量或方法时,在其前加static是什么意思,先谢了! --------------------编程问答-------------------- 将其声明为静态。大楷的说,就是另外在内存中开辟一块空间,共享该内容~静态的方法,必须调用静态的变量。 --------------------编程问答-------------------- 当设成static之后,运行时会自动生成对象,可以直接使用变量或方法而不用再自己创建一个新的对象。 --------------------编程问答-------------------- 静态就表示唯一,是和类相关的,大家公用的,而不是和对象有关的。

java中很多的工具类就做成静态的, 省得new对象,比如Math.random(),直接用类.方法名调用,比new完后在用方便多了。

--------------------编程问答--------------------
引用 3 楼  的回复:
静态就表示唯一,是和类相关的,大家公用的,而不是和对象有关的。

java中很多的工具类就做成静态的, 省得new对象,比如Math.random(),直接用类.方法名调用,比new完后在用方便多了。


应该是java中很多的工具类中的方法就是静态的 --------------------编程问答-------------------- static类似于同一系列的汽车的发动机 --------------------编程问答-------------------- 静态。

方法被声明为静态时,GC无法回收。会影响性能。 --------------------编程问答--------------------
引用 6 楼  的回复:
静态。

方法被声明为静态时,GC无法回收。会影响性能。

可以调用finalize()方法告知GC回收吧??? --------------------编程问答-------------------- static 的用法:
static (静态的):static可以修饰类,属性和方法是静态的:
被static所修饰的属性;
类名.变量名://这个变量名必须是static修饰的
static修饰的方法,也直接可以通过类名来通用,直接可以通过类名来调用,而不需要实例化这个类,通过应用类型的变量调用方法;
static 可以像一个类一样,在static内部实现自己的意图,但是static的执行的速度比类要快;因为static直接加载到java JVM上就可以直接执行了,而类加载到java JVM 上,要先实例化然后再调用方法,这样自然类的执行速度就比static的慢;
public class Test
{
static
{
System.out.println("welcome to java");
}
public static void main(String [] args)
{
//这是一般的调用实现,通过引用变量调用
Person person = new Person ();
person.age;
person.method();
//通过类名调用,这就是static的特殊之处
Person.age;
Person.method();
}
}
class Person
{
static int age = 20;
public static void method()
{
System.out.println("zhaoming");

}
} --------------------编程问答-------------------- 其实static翻译成静态的并不是很完美,而个人理解在属性或者方法前加上static的意思是说这个属性或者方法是属于这个类的,而不是对象的,当加载这个类的时候会将有static关键字修饰的属性或者方法加载进来,当你修改有static关键字修饰的属性的时候,你通过另一个对象调用得到的结果将会是改变后的数据,希望lz能够亲自动手实验一下,多动手,你会有收获的! --------------------编程问答--------------------
先说常用的属性和方法吧,static修饰的属性和方法是所属类,当程序中使用某个类时,JVM底层会先对该类进行类初始化来完成类的初始化,在这过程中,类会为static修饰的属性分配内存、执行静态(static)初始化块。当然,如果您现在有纸,不妨照我说的画:画一个大圆A,标上“堆”,在大圆A外面画一个大圆D,标上“栈”;在A中画一个大圆B,标上SomeClass,表示某一个类SomeClass,在类中,花几个矩形方框,这些就是static修饰的属性,然后在大圆B中花一些小圆,表示您在程序中声明创建的该类的对象,这些小圈中再画几个矩形方框,表示不是static修饰的属性,您懂了吗?也就是static修饰的成员所属类,并不属于某个实例(对象)所有。所以,对于一个类中static修饰的成员,用类名.xxx来访问,当然也可以用该类的某个实例来访问,但是这样做不推荐。对于不被static修饰的成员,由于所属某个实例,只能通过某个实例来访问。然后由于static修饰的成员是所属类,那么它在内存中也只有一块区域,也即共享,当然,对于成员中的方法,是在内存中的栈中,属性是在堆中。
--------------------编程问答-------------------- 不知道我理解的对不对-,-我觉得就是公共的东西,用得到的时候拿来用下子。比如static理解为饮水机,它就一直在那儿呆着,你想喝水的时候,就会拿个杯子求倒点水喝么。。。杯子就是必要手段么-0-当然你拿碗也行 --------------------编程问答-------------------- static是静态关键字
static修饰属性和方法的时候他属于类,与对象无关!
调用的时候直接可以已 类名.方法名调用!
--------------------编程问答-------------------- 简单,这个变量或者函数是类范围的,说白了,引用它不需要通过对象,直接通过类名可以引用 --------------------编程问答-------------------- 加static的方法或属性,表名它是静态的,可以又类直接调用,而不需先把类实例化再进行调用 --------------------编程问答-------------------- 方法家static直接用类名.就能访问 不加需要实例话也就是创建对象
1.非静态的方法可以调用静态的或者非静态的属性和方法;
2。静态的方法不可以调用非静态的属性和方法,因为非静态的还不一定存在,只能先构造出来后,再通过实例引用
--------------------编程问答-------------------- 声明为静态的方法,类直接就可以调用了,不用对象调用这个方法,这个方法就是属于这个类 --------------------编程问答-------------------- static 表示当你声明一个变量或者方法是,这个变量或者方法不是放在具体的栈空间里,在内存里单有一个空间,叫做segdata,单门用于存放static声明的东西,可以说属于公共的,声明的方法或者变量可以用类直接调用,而不用实例化对象,当然,实例化对象也可以调用,static声明的东西比较占用内存,因为java提供的垃圾回收机制不会自动清除segdata的内容,(当然,java里面的垃圾回收也不怎么靠谱),一般如果你程序里面有很多static关键字的话,可以说你的程序不是一个好程序 --------------------编程问答-------------------- 当设成static之后,运行时会自动生成对象,可以直接使用变量或方法而不用再自己创建一个新的对象 --------------------编程问答-------------------- static可以修饰类,方法,变量,
变量设置为static时,就表示在任何地方调用的该变量都是相同的,所有的地方共用一个变量的值,无论哪个地方改变,都会影响到其他调用该变量的地方。 --------------------编程问答-------------------- 在变量前加static 表示该变量是共享的
public class Person{
 static String name = "小王"
}
那么当我们创建Person类的对象时,每个新创建的对象的名字都叫小王,这里只是举例,实际中这样就没意义了。
在方法前加static 表示该方法是静态的方法,好处就是可以用类名直接调用该方法,而不用再通过创建对象来调用方法。解释的不对的地方希望大家多指教,我也是刚学。 --------------------编程问答-------------------- static 表示你声明的方法和变量为静态 ,只与类相关,无需新建对象调用,通过类名直接调用. 
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,