static相关知识点详解

news2024/12/30 3:32:38

文章目录

  • 一. 修饰成员变量
  • 二. 修饰成员方法
  • 三. 修饰代码块
  • 四. 修饰类

一. 修饰成员变量

static 修饰的成员变量,称为静态成员变量,该变量不属于某个具体的对象,是所有对象所共享的。

public class Student {
    private String name;
    private static String classRoom="106";

    public static void main(String[] args) {
        // 方法一:静态成员变量可以直接通过类名访问
        System.out.println(Student.classRoom);

        //方法二:静态成员变量也可以通过对象访问,但是classRoom是三个对象共享的
        Student s1=new Student();
        Student s2=new Student();
        Student s3=new Student();
        System.out.println(s1.classRoom);
        System.out.println(s2.classRoom);
        System.out.println(s3.classRoom);

    }
}

在这里插入图片描述

由以上代码可知:

静态成员变量特性】:

  1. **不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中。
  2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问。
  3. 类变量存储在方法区当中。
  4. 生命周期伴随类的一生(即:随类的加载而创建,随类的卸载而销毁)。

二. 修饰成员方法

被 static 修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的。在类外部,静态成员一般是通过静态方法访问的。

public class Student {
    private String name;
    private static String classRoom="106";

    public static String getClassRoom(){
        return classRoom;
    }
}
class TestStudent{
    public static void main(String[] args) {
        Student s1=new Student();
        System.out.println(Student.getClassRoom());

    }
}

在这里插入图片描述
由以上代码可知:

静态方法特性】:

  1. 不属于某个具体的对象,是类方法。
  2. 可以通过对象调用,也可以通过**类名.静态方法名(…)**方式调用,更推荐使用后者。

在这里插入图片描述
在这里插入图片描述

  1. 不能在静态方法中访问任何非静态成员变量

在这里插入图片描述
在这里插入图片描述

  1. 静态方法中不能调用任何非静态方法。
  2. 静态方法无法重写,无法实现多态。

三. 修饰代码块

静态成员变量一般不会放在构造方法中来初始化,构造方法中初始化的是与对象相关的实例属性。那么静态成员变量该如何实现初始化呢?

1. 就地初始化:在定义时直接给出初始值

private static String classRoom="106";

2. 静态代码块初始化

使用 static 定义的代码块称为静态代码块。一般用于初始化静态成员变量。

public class Student {
    private String name;
    private static String classRoom;

    static {
        classRoom="106";
    }

    public static void main(String[] args) {
        System.out.println(Student.classRoom);
    }
}

在这里插入图片描述
这里有几点需要注意

  • 静态代码块不管生成多少个对象,其只会执行一次。
  • 静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的。
  • 如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行(合并)实例代码块只有在创建对象时才会执行。

四. 修饰类

被 static 修饰的内部成员类称为静态内部类。

public class OutClass {
    private int a;
    private static int b;
    public void methodA(){
        a=10;
        System.out.println(a);
    }
    public static void methodB(){
        System.out.println(b);
    }

    //静态内部类
    static class InnerClass{
        public void methodInner(){

            //a=100;//编译失败,在内部类中只能访问外部类的静态成员变量
            b=200;
            //methodA();//编译失败,因为methodB()不是静态成员方法
            methodB();

        }
    }

    public static void main(String[] args) {
        //静态内部类对象创建
        OutClass.InnerClass innerClass=new OutClass.InnerClass();
        innerClass.methodInner();
    }
}

在这里插入图片描述
这里有几点需要注意:

  • 在静态内部类中只能访问外部类中的静态成员。
  • 创建静态内部类对象时,不需要先创建外部类对象。

如果我们一定要访问外部类中的非静态成员呢?

我们可以通过在静态内部类内创建外部类对象,然后通过该对象去访问。

代码示例如下:

static class InnerClass{
        public void methodInner(){
           OutClass outClass=new OutClass();
           outClass.a=10;
           outClass.methodA();

  		}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/918478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【多天线传输技术】迫零检测算法、串行干扰相消算法、排序串行干扰相消算法

clc; clear; close all; len_s100000; % 信号长度 snr0:2:20;%信噪比 len_snrlength(snr); s2_1zeros(1,4); ber_zfzeros(1,len_snr); ber_zf_siczeros(1,len_snr); ber_zf_chsiczeros(1,len_snr); for ii1:len_snrerror_zf20;for i1:len_ssnrandi([0,1],4,1); %产生随机信号mo…

35岁的前阿里员工:薪资从46K降到40K进传统企业,太香了,8.30上班,5点下班!

互联网大厂,对每一位程序员而言都是一个向往的地方。高薪、高压、高目标,每个人都为之奋斗不止。然而,在光鲜亮丽的外表之下,却隐藏着无数的焦虑与疲惫。 35岁,对于一个程序员来说,似乎是一个被现实无情提…

性能调优篇 一、概述

目录 五、测试指标 五、测试指标 1、响应时间 提交请求和返回该请求之间使用的时间、一般关注平均响应时间 在垃圾回收环境自中: 暂停时间:执行垃圾收集时,程序的工作线程被暂停的时间 -XX:MaxGCPauseMillis xxx2、吞吐量 单位时间内完…

Linux 生产者和消费者问题

一、相关概念: 1.耦合:耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的…

Spring boot(一)

Spring Boot是一个构建在Spring框架顶部的项目。它提供了一种简便,快捷的方式来设置,配置和运行基于Web的简单应用程序。 它是一个Spring模块,提供了 RAD(快速应用程序开发)功能。它用于创建独立的基于Spring的应用程序,因为它需…

SAP‘s ECC6 EoL(End of Life) 支持服务声明 2027?

前言 一、EoL公告信息,2027? 二、继续使用ECC6.0的选项 1.引入第三方支持 2.S/4 HANA 3.SAP Business ByDesign 4.SAP Business One 总结 最新的公告是:2027年,SAP ECC 6.0将停止得到支持,并退出主流SAP支持&am…

组装电脑及问题排查,成功点亮

组件购买 模块描述渠道价格CPUi5 13600KF 盒装拼多多¥1918散热器风冷利民PA120京东¥197主板华硕ROG 吹雪 B70G京东¥1479内存条金士顿DDR5 16G * 2京东¥699固态硬盘致态 Tipro 7000 2t京东¥940显卡七彩虹4060京东&…

(AcWing) 数字三角形

给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 73 88 1 02 7 4 4 4 5 2 6 …

在向excel写入长数据用TEXT不能写完解决办法

在编程时,程序向excel表格写入很长的内容时,发现表格不能够完全显示出来,原因是TEXT类型的长度限制,如果强制加上长度,比如TEXT(1000)就会报错,提示错误信息大小过长,这时候需要换一个格式:LONG…

【初识篇】ESP-IDF零基础入门 4 —— 编译工具讲解

系列文章目录 【文章导航】基于 ESP-IDF 框架的 ESP32 零基础入门系列教程 文章目录 系列文章目录前言1. idf.py 简介2. idf.py 用法3. idf.py 常用命令4. 使用 idf.py 命令编译项目的流程 前言 上一篇教程里,我们学习了如何创建自己的工程,那么现在我…

当高并发来袭:StarRocks Query Cache 一招搞定!

您是否曾经遇到这样的情况?每天早上或业务活动高峰期,大量用户涌入报表平台或数据应用,希望查看特定业务领域的最新指标或趋势。这些用户可能会基于庞大的数据集进行大量类似的聚合查询,造成集群的 CPU 负载持续攀升,从…

基于随机森林的乳腺癌诊断

在当今的现实生活中存在着很多种微信息量的数据,如何采集这些数据中的信息并进行利用,成了数据分析领域里一个新的研究热点。随机森林以它自身固有的特点和优良的分类效果在众多的机器学习算法中脱颖而出。 随机森林算法由Leo Breiman和 Adele Cutler提出,该算法结合了…

JMeter使用方法

一、基础简介 界面 打开方式 双击 jmeter.bat双击 ApacheJMeter.jsr命令行输入 java -jar ApacheJMeter.jar 目录 BIN 目录:存放可执行文件和配置文件 docs目录:api文档,用于开发扩展组件 printable-docs目录:用户帮助手册 li…

海思Hi3861L开发一-环境搭建

一、简介 之前的文章中有详细介绍了HarmonyOS的Hi3861开发,但是该开发是基于HarmonyOS来的。实际在项目开发中,可能不会用到HarmonyOS,用的还是原生的Hi3861。那这次就重新学习Hi3861L。 二、环境搭建 环境:Ubuntu18.04.5 关于Ubuntu的环境搭建,还是参考之前的文章,附上…

musl libc ldso 动态加载研究笔记:动态库的加载次序与初始化次序

前言 musl ldso 是按照什么次序加载动态链接的应用程序的共享库的?如果共享库之间有依赖, musl ldso 如何处理先初始化哪个 共享库? musl ldso 的代码可以在 musl 官方代码: ldso\dlstart.c 与 ldso\dynlink.c,其中动…

table,设置 数据相同时, 合并列

<el-table :data"tableData" :span-method"objectSpanMethod" border style"width: 100%" show-summary><el-table-column type"index" label"序号" width"100" /><el-table-column prop"dat…

c++(8.23)类,this指针,构造函数,析构函数,拷贝构造函数

设计一个Per类&#xff0c;类中包含私有成员&#xff1a;姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员&#xff1a;成绩、Per类对象 p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>u…

idea的断点调试

1、行断点 首先在代码的最左侧点击会显示红色的圆圈 第二步在main方法中右键选中debug run进行运行 会出现下面图片的情况 出现上图之后&#xff0c;点击console 下一步 这个时候就可以看到调试的结果了 6、方法调用栈&#xff1a;这里显示了该线程调试所经过的所有方法&…

SQL注入之堆叠查询

文章目录 堆叠查询是什么&#xff1f;堆叠查询修改所有用户密码堆叠查询删除数据库恢复数据库 堆叠查询是什么&#xff1f; 在SQL中&#xff0c;分号;是用来表示一条sql语句的结束。试想一下我们在; 结束一个sql语句后继续构造下一条语句&#xff0c;会不会一起执行&#xff1f…

漏洞挖掘和安全审计的技巧与策略

文章目录 漏洞挖掘&#xff1a;发现隐藏的弱点1. 源代码审计&#xff1a;2. 黑盒测试&#xff1a;3. 静态分析工具&#xff1a; 安全审计&#xff1a;系统的全面评估1. 渗透测试&#xff1a;2. 代码审计&#xff1a;3. 安全策略审查&#xff1a; 代码示例&#xff1a;SQL注入漏…