static关键字

来源:互联网 发布:js获取表单全部数据 编辑:程序博客网 时间:2024/05/21 12:50

一.补充小知识点:在同一个包下,不能有两个名字相同的类,不管是内部类还是普通的类。但是有一种情况特殊,

package test;public class returnn {}

package test;public class df {class returnn{}}
新建一个类的内部类就可以,其余的都不可以。

二.补充小知识点,面向对象存的是地址值,通过同一个类new出来的两个对象,并不是相同的,因为地址值不一样,也可以理解为new即是新建的意思,所以new出来的肯定是一个新的东西。

package test;public class returnn {public static void main(String[] args) {R r1 = new R();R r2 = new R();System.out.println(r1);System.out.println(r2);}}class R{}
以上打印结果为:

test.R@15db9742
test.R@6d06d69c
可以看出r1和r2并不是同一个对象。

三.static

static修饰的成员变量可以给同一个类里的所有对象使用,随着类的加载而加载,优先于对象存在,可以通过类名调用方法。

1.static修饰的成员变量可以给同一个类里的所有对象使用。

小知识点:在main方法所在的类中(主类)成员变量想给其他成员(成员方法,构造方法)使用,必须用static修饰,而在普通类中,成员变量想给其他成员使用,直接使用就可以,不必用static使用,例如:

package test;public class returnn {static String a = "dk";public static void main(String[] args) {test();}public static void test(){System.out.println(a);}}
上面零零碎碎那么多,其实总结起来的话,不管是不是在主类,只要是方法是静态的,那么该方法调用的成员变量和其他成员方法,都必须是静态的,但是如果该方法不是静态的,那么它调用的方法和成员变量是不是静态的无所谓。当然这只是针对在同一个类里而言,对于使用对象俩调用方法的,这没有这种限制。



2.static 可以通过类名来调用方法以及成员变量。

3.用static修饰的成员变量可以给同一个类的不同对象使用。

package test;public class ttttt {public static void main(String[] args) {vo v1 = new vo();vo v2 = new vo();v1.a = "djj";System.out.println(v1.a);System.out.println(v2.a);}}class vo{String a ;public void method(){}}

打印结果:

djjnull

a没有用static修饰之前,不能被v2使用。

用static修饰之后:

package test;public class ttttt {public static void main(String[] args) {vo v1 = new vo();vo v2 = new vo();v1.a = "djj";System.out.println(v1.a);System.out.println(v2.a);}}class vo{static String a ;public void method(){}}
打印结果:

djjdjj
static,中最常用的还是通过类名来调用方法以及成员变量。




原创粉丝点击