Java中static修饰的静态变量使用方法及代码块的特性是什么
本篇内容介绍了“Java中static修饰的静态变量使用方法及代码块的特性是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
前言
static关键字表示“静态的”,可以用来修饰类的变量、成员方法和代码块等。
一、静态变量
一个类通过使用new关键字可以创建多个不同的对象,而不同的对象实例将被分配到不同的内存空间。
但在一些特殊情况下,我们也会希望某些特定的数据在内存中只有一份,但能够被一个类中的所有对象实例所共享。
在java中,类的成员变量有两种:
①:被static修饰的变量,即类变量(静态变量),
在类加载的时候就完成内存空间的分配,在内存中占用一份备份,同时也只分配一次内存,供其他的实例对象访问(共享)。
可以直接通过类名.变量名或对象名.变量名的方式来访问。
//通过类名访问静态变量 //类名.静态成员变量 Demo.country="中国"; System.out.println(Demo.country);
//通过对象名访问静态成员变量 //对象名.静态成员变量 demo1.country="美国"; System.out.println(Demo.country);
②:没被static修饰的变量,即实例变量,
每实例化一次就会为其分配一次内存,可能存在多次分配内存空间,
且必须通过对象名.变量名的方法来访问。
demo1.name="张三"; //通过对象名访问非静态变量 System.out.println(demo1.name);
若坚持使用类名.变量的方式来访问,则会出现以下错误,
原因是此处的变量还没有经过实例化,就直接拿来访问了。
关于静态变量,需要注意以下问题:
static只能修饰成员变量,不能修饰局部变量
因为局部变量此时还没有实例化,没有分配内存空间,而static在类加载时就要分配空间。
二、静态方法
被static修饰的方法被称为静态方法。
与上文中的静态变量一样,访问静态方法也不需要创建类的实例,可直接通过类名来访问;
若已经创建 了对象,也可以通过对象引用来访问。
静态方法可以通过类名.方法名或者对象名.方法名两种方式来调用静态方法。
关于静态变量,需要注意两点:
①:静态方法只能访问类中用static修饰的成员。
静态方法可以通过类名来调用,且在调用时可以不创建任何对象,而没有被static修饰的从成员需要先创建对象才能访问。
//类变量,代表人的国籍 static String country; //实例变量,代表人的姓名 String name; //静态方法 static void printInfo() { System.out.println("Person的国籍是:"+country); //System.out.println(name); 错误!!! }
若在静态方法,访问了类中非static修饰的成员,则会出现以下错误:
②:静态方法不能以任何方式引用this和super关键字。
静态方法可以通过类名直接调用,这时,可能还没有任何对象产生。
所以,代表当前对象的this和代表父类对象的super都是不存在的。
三、静态代码块
在Java程序中,代码块就是用一对大括号括起来的若干行代码。
而所谓的静态代码块就是用static关键字修饰的代码块。
在程序中,通常使用静态代码块来对类的静态成员变量就行初始化。
class A { static int id; //静态代码块 static { id=100; } }
需要注意的是,类的静态代码块不可以访问类的非静态成员。
当类加载时,其静态成员代码块也将同步执行,且由于类只加载一次,故静态成员代码块也只执行一次。
非静态代码块在实例化对象时会被多次执行。
先后顺序如下:
静态代码块 > 普通代码块>无参构造方法
“Java中static修饰的静态变量使用方法及代码块的特性是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注蜗牛博客网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
评论