终于有人能把Java中static的关键字解释清楚了
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了终于有人能把Java中static的关键字解释清楚了,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2635字,纯文字阅读大概需要4分钟。
内容图文
![终于有人能把Java中static的关键字解释清楚了](/upload/InfoBanner/zyjiaocheng/601/fdc056f41913471999503342a167f991.jpg)
一、关键字static的特点
在《Java编程思想》中说:
static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。
这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用,简而言之,一句话来描述就是:方便在没有创建对象的情况下来进行调用(方法/变量)。
很显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
1.static修饰变量
被static修饰的成员变量属于类,不属于某个对象(也就是说:多个对象访问或修改static修饰的成员变量时,其中一个对象将static成员变量进行了修改,其它的对象的static成员变量值跟着改变,即多个对象共享同一个static成员变量)
public class Student {
static String name ;
int age ;
public static void main(String[] args) {
Student student1 = new Student();
Student student2 = new Student();
Student student3 = new Student();
//修改静态变量name的值
student1.name = "郭靖";
System.out.println(student1.name);
System.out.println(student2.name);
System.out.println(student3.name);
}
/*
测试中对象直接访问静态变量会报红,但是不影响查询运行。
*/
测试中我们创建了三个对象,student1修改了静态变量name,
结果是student2,和student3的静态变量name的值和student1一样
2.static修饰方法
被static修饰的方法称为静态方法,静态方法中没有this,因为静态方法不属于任何对象,自然没有this,因此,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
age直接爆红,说明静态方法不能访问费静态变量以及方法,但是name可以,因为name是static修饰的静态变量。
play方法中没有错误,因为play不是静态方法,可以访问静态方法变量以及非静态方法和变量
3.static修饰代码块
static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。
假如我们不用静态块,每次调用jia()这个方法,jvm都要为a,b开辟一块空间,这样会造成内存浪费。
当我们使用静态块,代码会变成:
当staticTest这个类加载时,静态块的内容就会被加载。并且只加载一次。这样就不会造成空间的浪费,并且能优化程序性能。
因此,很多时候会将一些只需要进行一次的初始化操作都放在static代码块中进行。
二、对关键字static的错误认识
1、Java中的static关键字不会影响到变量或者方法的作用域。在Java中能够影响到访问权限的只有private、public、protected、default这几个关键字。
2、对于静态方法来说没有this,但是我们在非静态方法中能够通过this访问静态方法成员变量。
静态成员变量虽然独立于对象,但是不代表不可以通过对象去访问,所有的静态方法和静态变量都可以通过对象访问(只要权限足够)。
3、在Java中是不允许使用static修饰局部变量的。这是Java语法的规定。
内容总结
以上是互联网集市为您收集整理的终于有人能把Java中static的关键字解释清楚了全部内容,希望文章能够帮你解决终于有人能把Java中static的关键字解释清楚了所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。