真心求高手指点迷津:在java代码中,定义变量或方法时,在其前加static是什么意思,先谢了!
解决方案 »
- xml读取数据为空
- jdbc 连接sql2000提示java.lang.classnotfoundexception: com.microsoft.jdbc.sqlserver.
- 公司产品,JRE1.3升到JRE1.6,JTable不能用鼠标拖拉的方式多选了,请各位帮忙~
- 用java实现迷宫求解
- 求jtree动态的添加到jscrollpane中的方法,在线等!!!100分
- 怎么样把图片放入网页中(求详细代码)
- 各位高手...嘻嘻...来一下!
- 重定向的问题
- 我已经把visual cafe(4.0)和visual age for java(4,0)都装上了,可是还是不会生成exe,难道非得用批处理?
- java的引用是不是c语言的指针?
- 连接厂家corba接口报异常
- ibatis的between and的语句 怎么写啊,参数怎么传
应该是java中很多的工具类中的方法就是静态的
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修饰的属性和方法是所属类,当程序中使用某个类时,JVM底层会先对该类进行类初始化来完成类的初始化,在这过程中,类会为static修饰的属性分配内存、执行静态(static)初始化块。当然,如果您现在有纸,不妨照我说的画:画一个大圆A,标上“堆”,在大圆A外面画一个大圆D,标上“栈”;在A中画一个大圆B,标上SomeClass,表示某一个类SomeClass,在类中,花几个矩形方框,这些就是static修饰的属性,然后在大圆B中花一些小圆,表示您在程序中声明创建的该类的对象,这些小圈中再画几个矩形方框,表示不是static修饰的属性,您懂了吗?也就是static修饰的成员所属类,并不属于某个实例(对象)所有。所以,对于一个类中static修饰的成员,用类名.xxx来访问,当然也可以用该类的某个实例来访问,但是这样做不推荐。对于不被static修饰的成员,由于所属某个实例,只能通过某个实例来访问。然后由于static修饰的成员是所属类,那么它在内存中也只有一块区域,也即共享,当然,对于成员中的方法,是在内存中的栈中,属性是在堆中。
static修饰属性和方法的时候他属于类,与对象无关!
调用的时候直接可以已 类名.方法名调用!
1.非静态的方法可以调用静态的或者非静态的属性和方法;
2。静态的方法不可以调用非静态的属性和方法,因为非静态的还不一定存在,只能先构造出来后,再通过实例引用
变量设置为static时,就表示在任何地方调用的该变量都是相同的,所有的地方共用一个变量的值,无论哪个地方改变,都会影响到其他调用该变量的地方。
public class Person{
static String name = "小王"
}
那么当我们创建Person类的对象时,每个新创建的对象的名字都叫小王,这里只是举例,实际中这样就没意义了。
在方法前加static 表示该方法是静态的方法,好处就是可以用类名直接调用该方法,而不用再通过创建对象来调用方法。解释的不对的地方希望大家多指教,我也是刚学。