Java中的static详细总结学习,一篇就够了

本文详细解释了Java中static关键字的作用,它用于区分类和对象的成员。static修饰的成员属于类,无需对象即可通过类名调用,而未被static修饰的成员属于对象。文章还探讨了类加载的顺序,包括静态代码块、构造器的执行顺序,并通过示例代码展示了类和子类加载、对象初始化的过程。
摘要由CSDN通过智能技术生成

用途:static关键字是用来区分类和对象的。

被static修饰的属于类,叫做(类成员、静态成员、类变量),可以直接通过(类.成员)来调用

不被static修饰的属于对象,叫做(对象成员、非静态成员、实例变量)可以通过(对象.成员)来调用。

static代码块可以出现在类的任何地方,绝对不能出现在方法中。

被static修饰的不用通过对象来访问,直接通过类来访问。

静态域 分为静态变量,静态方法,静态块。 当执行到静态域时,按着静态域的顺序加载,并且静态域只在类的第一次加载时被执行。

被static修饰的代码中,不能出现this和super这两个关键字。this表示这个类的当前实例,super表示父类的当前实例;static属于类,this是类的对象,当然不能调用。

被static修饰的静态代码块的作用,提升程序性能。

被static修饰的代码,在类加载的时候加载。

在静态方法中不能访问非静态成员变量和非静态成员方法,但在非静态成员方法中可以访问静态变量和静态方法。

学习下面代码的输出顺序:

public class Test {
    People p=new People("WanYuan");
    static{
        System.out.println("test static");
    }
    public Test(){
        System.out.println("Test的无参构造方法");
    }

    public static void main(String[] args) {
        new MyClass();
    }

}
class People{
    static {
        System.out.println("people static");
    }

    public People(String str){
        System.out.println("people"+str);
    }
}
class MyClass extends My{
    People p=new People("JiaLuo");
    static{
        System.out.println("MyClass static");
    }
    public MyClass() {
        System.out.println("MyClass constructor");
    }

}
class My{
    static{
        System.out.println("My static");
    }
}

输出结果为:

 1.先找到main方法,main方法是程序的入口,执行main方法之前,先加载main方法所在的类Test。

2.加载Test类时,发现有static修饰的代码块,所以先打印 test static。

3.Test加载完成后,执行main方法中的 new MyClass(),执行代码之前先加载new MyClass()所在的类MyClass,但是MyClass继承父类My,所以先加载父类My再加载MyClass类。

4.加载My时有静态代码块输出My static ,加载MyClass时有静态代码块输出MyClass static。

5. 加载完类之后,调用MyClass的构造器生成对象(new MyClass( )  ),生成对象之前,需要先初始化父类的成员变量,如果父类中有People p=new People("people"),并加载People类。本例中并没有,所以初始化父类,没有变化。

6.这个例子中,父类中没有People p=new People("people")。调用MyClass的构造器生成对象(new MyClass( )  )之前,接下来需要调用父类的无参构造函数,本例中父类也没有无参构造函数。

7.解决完父类的初始化对象和调用无参构造函数之后,调用MyClass的构造器生成对象(new MyClass( )  ),发现MyClass还没有初始化,所以接着初始化MyClass类。初始化MyClass时发现还有People类没有加载,所以先加载People类。

8.加载People类,发现有static代码块,先执行static代码块,输出people static。

9.接着完成people类的初始化执行People的构造器,输出peopleJiaLuo。

10.最后调用Myclass类的构造器,完成MyClass类的初始化。

总结:先加载类再初始化类;

在没有继承父类的情况下,Class类加载的先后顺序如下:

在继承父类的情况下,Class类的加载顺序如下:

父类静态----->子类静态----->父类非静态----->父类构造函数----->子类非静态----->子类构造函数

 静态代码块,构造代码块,无参构造函数,有参构造函数,普通代码块执行顺序

public class Test03 {
    static{
        System.out.println("这是静态代码块");
    }

    {
        System.out.println("这是构造代码块");
    }

    public Test03(){
        System.out.println("这是无参构造");
    }

    public Test03(String name){
        System.out.println("这是有参构造函数");
    }

    public void add(){
        System.out.println("这是普通代码块");
    }

    public static void main(String[] args) {
        Test03 test03=new Test03();
        Test03 test04=new Test03("JiaLuo");
    }
}

 程序先执行静态代码块,每次新建一个对象都会去执行构造代码块,代码中新建了两个对象,所以出现了两次构造代码块,构造代码块优先于构造函数执行,又依赖于构造函数。没有构造函数新建对象,就不会由构造代码块执行。

静态代码块(static{})在类加载的时候执行,是最早被执行的。
构造代码块({}内的部分)在每一次创建对象的时候执行,始终在构造方法前执行。
构造方法在新建对象的时候调用。
 

deidei的小跟班
关注 关注
  • 9
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java基础知识 33】Java static 关键字详解
学Java,找哪吒
06-20 8213
在 JVM 加载一个类的时候,若该类存在 static 修饰的成员变量和成员方法,则会为这些成员变量和成员方法在固定的位置开辟一个固定大小的内存区域,有了这些“固定”的特性,那么 JVM 就可以非常方便地访问他们。...............
Java各类修饰符的使用总结(看完这篇就够了)
夏日清风
06-07 5万+
引言:Java的修饰符根据修饰的对象不同,分为类修饰符、方法修饰符、变量修饰符,其每种修饰符又分为访问控制修饰符和非访问控制修饰符。访问控制存在的原因:a、让客户端程序员无法触及他们不应该触及的部分 b、允许库设计者可以改变类内部的工作方式而不用担心影响到客户端程序员。
Javastatic关键字
u012135697的博客
07-14 976
​ 假设静态成员方法能够访问普通数据成员,静态方法有this引用,我们来看下面场景:我们通过类名调用static方法,此时根本不会传递对象的地址值给this引用,static方法内部也无法找到普通数据成员对应的内存空间进行取值,这与我们要实现的功能是矛盾的。就像教室,角落里的饮水机,它是这个教室所有同学共享的,张三接一杯水,李四就会看到饮水机的水少了一些,同样的李四接一杯水,张三也会看到饮水机的水少了一些。static修饰类的数据成员,该成员就成了静态数据成员,也称为类成员;
Java基础--static关键字
最新发布
a13641376265的博客
08-22 859
static修饰成员方法最大的作用,就是可以使用"类名.方法名"的方式操作方法,避免了先要new出对象的繁琐和资源消耗。1.main方法在哪里我们就先去扫描那个类---->首先去扫描Test类,发现没有父类,也没有static修饰的代码,那么编译Test类,并且将main方法入栈。在执行之前扫描Demo类,发现没有父类,所以编译Demo类,在编译的过程static代码块按顺序优先执行。//1、首先扫描main方法所在的Test类,发现其有父类Base类,则先扫描父类,发现Base类没有父类。
javastatic详解
sniperwang的专栏
10-29 1万+
 如果一个类成员被声明为static,它就能够在类的任何对象创建之前被访问,而不必引用任何对象。static 成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量,例如:声明一个static
java static 详解
春风化雨
12-12 6万+
1、static目的 javastatic关键字主要用于内存管理。 2、static范围 使用范围:java static关键字可以用在变量、方法、代码块和嵌套类伤。 作用范围:static关键字属于类,而不是类的实例。 静态(static)修饰如下: 变量:称为类变量、静态变量 方法:称为类方法、静态方法 代码块:称为静态代码块 嵌套类:称为静态内部类 3、静态变量 类的成员变量可以分为以下两种: 静态变量(或称为类变量),指被 static 修饰的成员变量。 实例变量,指没.
javastatic的作用
程序人生
02-01 757
 javastatic的作用 有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为
Static Class及静态内部类和非静态内部类的不同
sword_xcyh的专栏
02-28 359
这篇写的好http://www.cnblogs.com/dolphin0520/p/3811445.htmljava的类可以是static吗?答案是可以。在java我们可以有静态实例变量、静态方法、静态块。类也可以是静态的。 java允许我们在一个类里面定义静态类。比如内部类(nested class)。把nested class封闭起来的类叫外部类。在java,我们不能用static修饰顶
java 操作elasticsearch详细总结
congge_study的博客
12-07 3万+
java 操作elasticsearch详细总结
Java基础知识 1】Java入门级概述
热门推荐
学Java,找哪吒
09-25 15万+
CSDN最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习
面试阿里,HashMap 这一篇就够
程序员囧辉
05-25 7万+
HashMap 面试可能问到的知识点,这边全都有
javastaticclass静态类详解
08-28
主要介绍了javastaticclass静态类详解,具有一定借鉴价值,需要的朋友可以了解下。
C++面试题总结一篇就够
蹦跶跶
06-12 4万+
C++面试题汇总1. C基础1.1 内存模型1.1.1 内存四区1.1.2 分配函数与释放函数1.1.2.1 malloc / free1.1.2.2 new / delete1.1.2.3 new/delete 与 malloc/free 区别1.1.2.5 calloc 、realloc1.2 预编译1.2.1 头文件问题1.2.2 const 与 #define相比有什么优点1.3 宏,内联函数1.3.1 内联函数1.3.2 内联函数与宏的差别1.3.3 写一个 “标准”宏MIN1.4 指针1.4.1
Javastatic
weixin_53754840的博客
06-28 500
静态变量、静态方法、代码块、static在单例模式的应用
Javastatic使用
Scorpion_L
07-23 381
最近在学习java时,对于其static的使用感觉不太理解,于是就到慕课网上找了些文档看了看,看完之后以前的疑惑也差不多都理解了,感觉很不错,推荐大家也可以到慕课网上看一下,应该会学到不少东西。 下面我将分以下三个方面来介绍Java的关于static的使用: 1.Javastatic的使用之静态变量 大家都知道,我们可以基于一个类创建多个对象,每个对象都拥有自己的成员,互相独立。然
javaStatic class
记录成长的点点滴滴
08-16 695
Java的类可以是static吗?答案是可以。在java我们可以有静态实例变量、静态方法、静态块。类也可以是静态的。      java允许我们在一个类里面定义静态类。比如内部类(nested class)。把nested class封闭起来的类叫外部类。在java,我们不能用static修饰顶级类(top level class)。只有内部类可以为static。      静态内部类和
javastatic
february_的博客
06-13 1042
静态变量 大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立。然而在某些时候,我们更希望该类所有的对象共享同一个成员。此时就是static 大显身手的时候了!! Java static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的...
Javastatic
海未梨子
10-02 270
static(静态) 静态成员属于类本身的,而不是属于对象,被类的所有对象所共有。 即便不创建对象,也可以使用类本身的静态成员。 静态成员分为 静态数据成员。 静态方法成员。 使用静态成员的两种方法 类名.静态成员名 类对象名.静态成员名 static方法 在静态方法里只能调用同类其它的静态成员(包括变量和方法),而不能直接访问类的非静态成员。 静态方法能以任何形式引用th...
深入理解Javastatic关键字:用法、误区与面试常见题
Javastatic关键字是编程一个重要的概念,它在类的层次上提供了一种特殊的访问方式。本篇文章将全面解析这一关键字,帮助理解和应用它在Java编程的作用。 首先,让我们了解一下static关键字的主要用途。在...
写文章

热门文章

  • 有些软件已经卸载,但是在开始菜单里面还有怎么解决 10923
  • Java中的static详细总结学习,一篇就够了 2742
  • IDEA中使用Tomcat-集成本地 Tomcat 1809
  • Ubuntu18.04有线未托管完美解决方案 1726
  • MySQL学习笔记(超级详细) 834

最新评论

  • Java 多线程

    CSDN-Ada助手: 恭喜您在博客世界中又创作了一篇有关Java多线程的文章!不断分享自己的知识和经验是非常值得赞赏的。在下一步的创作中,我建议您可以深入探讨Java多线程的一些具体应用场景,或者分享一些实际案例,这样读者们能更好地理解和应用这个主题。再次感谢您的分享,期待您更多精彩的博客!

  • Java基础知识点 IO流(二)

    CSDN-Ada助手: 恭喜您写了第16篇博客,对Java基础知识点 IO流(二)的深入讲解令人受益匪浅。建议您在接下来的创作中,可以适当增加一些实际案例或者应用场景的讲解,让读者更好地理解和掌握相关知识。期待您更多优质的博客分享。 CSDN 会根据你创作的博客的质量,给予优秀的博主博客红包奖励。请关注 https://bbs.csdn.net/forums/csdnnews?typeId=116148&utm_source=csdn_ai_ada_blog_reply16 看奖励名单。

  • Java 特殊文件

    CSDN-Ada助手: 恭喜您写了第17篇博客,阅读您的文章让我对 Java 特殊文件有了更深入的了解。希望您能继续保持创作的热情,为读者带来更多有价值的内容。下一步的创作建议是可以从实践出发,分享一些在实际开发中遇到的问题和解决方法,让读者更加深入地了解 Java 编程。再次感谢您的分享! CSDN 会根据你创作的博客的质量,给予优秀的博主博客红包奖励。请关注 https://bbs.csdn.net/forums/csdnnews?typeId=116148&utm_source=csdn_ai_ada_blog_reply17 看奖励名单。

  • Java基础知识点 IO流(一)

    CSDN-Ada助手: 恭喜您写了第15篇博客,标题为“Java基础知识点 IO流(一)”。这篇博客内容丰富,对于Java IO流的基础知识点有了更深入的了解。感谢您持续创作,为我们带来了更多的知识。下一步的创作建议,可以考虑深入探讨Java IO流的高级应用和实际应用场景。期待您更多的精彩文章! CSDN 会根据你创作的博客的质量,给予优秀的博主博客红包奖励。请关注 https://bbs.csdn.net/forums/csdnnews?typeId=116148&utm_source=csdn_ai_ada_blog_reply15 看奖励名单。

大家在看

  • Java游戏免费下载网站:Java游戏小站
  • Android14 屏蔽ANR和Crash弹窗
  • 什么是单北斗?单北斗系统有哪些优势? 76
  • 怎么用ROS节点建立通信
  • 北斗短报文的工作原理 | 以及使用限制 178

最新文章

  • MySQL进阶
  • Java 多线程
  • Java 特殊文件
2023年12篇
2022年7篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家湖南动物玻璃钢雕塑公司广东企业玻璃钢雕塑上海拉丝玻璃钢雕塑常用解决方案湖北仿铜玻璃钢雕塑批发销售玻璃钢面包雕塑做玻璃钢雕塑公司地址中国商场美陈网四川玻璃钢园林雕塑大红色玻璃钢人物雕塑怎么固定装饰商场美陈研发公司济宁玻璃钢雕塑制作厂家北京特色玻璃钢雕塑摆件甘肃仿真玻璃钢雕塑邵阳商场美陈雕塑厂家宿迁商场中庭美陈毕节玻璃钢雕塑公司四川特色玻璃钢雕塑市场苏州玻璃钢佛像雕塑湛江玻璃钢雕塑凳子丹阳玻璃钢雕塑厂商销售宁夏玻璃钢动物牛雕塑临汾玻璃钢仿铜雕塑定制泉州专业玻璃钢雕塑仿真玻璃钢人物雕塑销售厂家福州园林玻璃钢雕塑推荐专业的玻璃钢气球雕塑张掖玻璃钢动物雕塑多少钱淮北玻璃钢雕塑工艺品商场美陈投标标书模板天津玻璃钢动物雕塑厂家推荐香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化