static所修饰的方法和变量是属于类本身,不属于对象,无论创建多少个对象实例都是共用一个方法和变量. 静态的方法不可以调用非静态的方法,非静态的方法可以调用静态的方法.书上一般都这么写,但是作为入门的同学来说,记忆起来也很容易混淆起来。但仔细想想,也很容易理解。静态方法之所以不能调用非静态方法,是因为非静态方法属于某一个对象,而不是属于类,非静态方法的调用只能通过创建对象来调用。同样,静态方法也不能使用非静态变量。类比,我们很容易知道,非静态类可以调用静态方法。为什么呢?如果还不清楚,就补一下一下知识:静态方法及静态变量和普通方法变量的加载顺序来说明吧。 静态方法是在类加载前进行加载,在程序结束时才销毁。在某种意义上说,静态变量的生命周期取决于对应类的生命周期。 其次,和普通方法比,静态方法存在于整个程序的生命周期,不会因为使用完毕而销毁,对内存上的消耗是比较大的,对内存要求比较高时,要慎用static,那么static也不是一无是处。当一个对象需要频繁创建或销毁时,对系统的开销比较大,这时候,static的优势就体现出来了。因为static的代码块已经存在内存当中了,所以调用的速度要优于创建对象调用方法的速度。如何取舍,小伙伴们现在清楚了吧~
关于Java中static的一点思考
最新推荐文章于 2024-05-31 11:38:35 发布