static关键字详解

article/2025/9/12 16:14:20

1.概述

      static:就是多个对象共享同一份数据

 一个类的不同对象有些共享的数据,这样我们就可以使用static来修饰

        一旦使用了static关键字,那么这样的内容不再属于对象,而是属于类的,所以凡是本类的对象,都共享同一份。

可以用来修饰成员变量,修饰成员方法,以及静态代码块儿

2.修饰成员变量:

        如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类,多个对象共享同一份数据。

         会发现虽然只对one当中的room赋值,没说two。但是one和two都有了教室,是同一个教室。就是因为room通过了static修饰。

典型用法,计数器:让学号自动生成,不再构造方法中进行指定。

 每次调用构造方法,就让这个idCounter++。

 这样的话学号就可以自动生成了。

3.修饰成员方法:

static修饰成员方法:

一旦使用static修饰成员方法,这就成为了一个静态方法,静态方法不属于对象,而是属于类的。

如果没有static关键字,那么就必须首先创建对象,然后通过对象才能够去使用它。

如果有static关键字,那么不需要创建对象,直接通过类名称来使用它。因为静态方法,跟对象没什么关系是属于类的

         对于静态方法来说,可以通过对象名进行调用,也可以通过类名称直接来调用。但是容易被误以为这是一个普通的成员方法。而且这种写法在编译后也会被javac翻译成为类名称。

对于本类当中的静态方法,可以省略 类名称,其实在编译后也会翻译成类名称.静态方法名。

强烈推荐使用类名称直接调用静态方法。

        注意:静态不能直接访问非静态,只能访问静态

                   静态方法中不能使用this,this代表当前对象通过谁调用的方法,谁就是当前对象。

                   等于说静态方法他就不用对象。

原因:在内存当中是先有的静态,后又的非静态

4.静态static的内存图

在内存图的方法区当中,有一块独立的空间,叫静态区,专门用来存储静态static的数据。

根据类名称访问静态成员变量的时候,全程和对象没有任何关系!

 就算你写上了对象,他也是在编译之后翻译成了类。

4.静态代码块

        代码块:直接用一个大括号包起来的,就叫代码块儿。

 特点:当第一次用到本类时,静态代码块执行唯一的一次。

不管任何情况,静态的内容总是有先于非静态

静态代码块的典型用途是:

        用来一次性地对静态成员变量进行赋值。比如MySQL源码中就是用了静态代码块。

在静态代码块中只能声明异常,不能抛。因为抛要借助于方法。


http://chatgpt.dhexx.cn/article/BxxUX4fw.shtml

相关文章

在 C/C++中 static 关键字详解

static 关键字详解 C/C 中的 static1. 静态局部变量2. 静态全局变量全局变量 与 extren 3. static 修饰函数 C的 static 成员静态成员变量const修饰的成员除外 静态成员函数 总结: static是 C/C中的关键字之一,是常见的函数与变量(C中还包括类…

Windows添加路由的方法

假设本来的局域网网关是192.100.10.1,现在要访问网关是192.100.20.0的服务器,可以手动添加路由。 方法: 1.以管理员的身份打开cmd命令窗口 2.输入 route add 192.100.20.0 mask 255.255.255.0 192.100.10.1 -p(最后加上-p就是…

如何在 Linux 上添加路由?

在 Linux 系统中,路由是网络通信的关键组件之一。通过添加路由,您可以指定数据包在网络中的传输路径,从而实现网络连接和数据转发。本文将详细介绍如何在 Linux 上添加路由,以便您可以根据需要配置网络路由并实现灵活的网络连接。…

Linux上添加路由,删除路由,修改路由配置(route add, route del, 路由表项基本知识)

路由基础知识: 是由一项或者多项路由表组成的,每个IP报文被发送前,系统都会查找主机路由表,决定将这个报文从 哪个网卡,发送到哪个下一跳。路由表项可以分成主机路由,网络路由和默认路由3种。每条路由表项…

【网络】route和 IP route的区别|route 和 IP route 添加路由

目录 route和 IP route的区别 route 和 IP route 显示路由 route 和 IP route 添加路由 route 添加路由 IP route 添加路由 添加的路由持久化 linux下添加路由的方法 使用 route 命令 使用ip route 命令 route和 IP route的区别 route是一个相当简单的工具,非常适合…

addRoute动态添加路由

项目进行到最后,突然通知说要使用动态路由,在网上找了一堆方法,发现不是要使用vuex就是要搭配缓存,这个时候完全不知如何下手,该怎么做简单一点呢? 先介绍一下项目需求,根据用户登录后返回的唯…

CentOS7添加路由

目录 一、route命令介绍 1、语法 2、命令使用举例 默认(网关)路由 主机路由 网络路由 二、ip 命令 三、永久添加路由条目(重启不会失效) 一、route命令介绍 命令用来显示并设置Linux内核中的网络路由表,设置的…

添加路由表

添加永久路由(网络重启后仍然有效) windows系统: 1.cmd打开控制台 2.输入:route add -p目的ip地址mask 子网掩码网关地址 ubuntu系统: 1.任意位置新建terminal输入: 2.sudo chmod 777 -R /etc/rc.local回车…

添加路由的2种方式--router

第一种cmd方法: 重新创建一个项目 添加路由: 打开文件夹 在路径栏里面输入cmd 打开cmd命令行 输入 vue create router-pro 选择下面选项 按下键选择路由并回车: 选择vue2版本 问你是否使用路由的历史模式: 输入n 问你eslint的语法规范选择…

内外网同时使用之添加路由

鉴于工作需要,开发的项目需要在内网中进行测试。但是出现bug时又需要在互联网中查询bug来源,在整个过程中,需要切换内外网,断了外网切内网,断了内网切外网,麻烦的不是一批。所以向项目经理请教了一下&#…

RANSAC算法原理与实现

参考原文: RANSAC算法学习笔记 重点内容: 算法流程: 1、在可以有(也可以没有,主要看应用场景)条件限制(比如选的子集里的点不能过远等)的情况下,随机选取子集&#xff…

深度解析RANSAC算法(精华修正版)

RANSAC算法看似简单,实际上还是有很多坑的,网上有一些关于RANSAC算法的介绍不准确,或者说不全面。 之前我写过一个rnsac算法简介的博客,那么这篇博客将带你再次填这个大坑! 目录 1. RANSAC算法论述 2. RANSAC算法…

利用RANSAC算法筛选SIFT特征匹配

关于RANSAC算法的基本思想,可从网上搜索找到,这里只是RANSAC用于SIFT特征匹配筛选时的一些说明。 RANSAC算法在SIFT特征筛选中的主要流程是: (1) 从样本集中随机抽选一个RANSAC样本,即4个匹配点对 (2) 根据这4个匹配点对计算变…

Ransac算法学习python版

初学小白,注释的代码比较详细 import numpy as np import scipy as sp import scipy.linalg as sldef ransac(data, model, n, k, t, d, debug False, return_all False):"""参考:http://scipy.github.io/old-wiki/pages/Cookbook/RANSAC伪代码:http://en.wi…

RANSAC算法实现 + 直线拟合

一、RANSAC算法 1.参考资料 [1]题目来源与解析:商汤科技SLAM算法岗的RANSAC编程题 [2]牛客网题目:[编程题]线性回归 [3]牛客网解答参考:商汤科技某算法岗的编程题有点过分了啊 [4]RANSAC算法原理:RANSAC翻译、经典RANSAC以及…

精匹配——Opencv实现RANSAC算法进行误匹配对剔除,并和最小二乘法对比

精匹配——RANSAC算法思想及优缺点 目录 精匹配——RANSAC算法思想及优缺点前言一、RANSAC简介二、RANSAC基本思想1.步骤2.迭代次数的公式3.举例(拟合直线,拟合最佳单应性矩阵) 三、最小二乘法1、最小二乘法的主要思想2、最小二乘解3、仿射变…

ransca算法详细介绍

1、算法概述: RANSAC算法的基本假设是样本中包含正确数据(inliers,可以被模型描述的数据),也包含异常数据(outliers,偏离正常范围很远、无法适应数学模型的数据),即数据集中含有噪声。这些异常数据可能是由于错误的测…

RANSAC 特征匹配算法解析

一、RANSAC特征匹配算法简介   RANSAC算法是RANdom SAmple Consensus的缩写,意为随机抽样一致。表面上的意思就是从匹配样本中随机取样,寻找一致的样本点。RANSAC算法是根据一组包含异常数据的样本数据集,计算出数据的数学模型参数&#x…

RANSAC算法(原理及代码实现+迭代次数参数自适应)

RANSAC算法 前言算法流程Python代码RANSAC算法迭代参数的自适应 前言 随机样本一致性 (RANSAC) 是一种迭代方法,用于从一组包含异常值的观察数据中估计数学模型的参数,此时异常值不会对估计值产生影响。简言之,RANSAC是一种滤除异常值的常用算…