记一下 Java Static 有哪些玩法

2023-11-13

static 变量

static变量是使用 static关键字定义的变量,又被称为静态变量

静态变量是属于类的,也叫类变量;实例变量(非static变量)属于某个具体的对象

静态变量和非静态变量的区别:

  • 静态变量被所有对象共享,在内存中只有一个副本,在类初次加载的时候才会初始化
  • 非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响

静态变量可以通过类名直接引用。

class Dome {
    public static int staticVariable = 10;
}

public class Test {
    public static void main(String[] args) {
        System.out.println(Dome.staticVariable);
    }

}

static 方法

static方法是使用 static关键字定义的方法,和静态变量类似,同时它也不属于任何一个实例对象,即无需对象访问

class Dome {
    public static String staticMethod() {
        return "静态方法";
    }
}

public class Test {
    public static void main(String[] args) {
        System.out.println(Dome.staticMethod());
    }

}

static 代码块

静态代码块加载类时候加载,可以使用静态代码块初始化类,静态代码块可以出现在类的任意部分,当类被加载时按照静态代码块的顺序来执行每个代码块

class Dome {
   static {
       System.out.println("静态代码块");
   }
}

public class Test {
    public static void main(String[] args) {
        Dome dome = new Dome();
        Dome dome1 = new Dome();

    }

}

输出:

静态代码块

static 类(内部类)

内部类就是在一个类内部定义其他类结构的嵌套操作。

class Dome { // 外部类
    class InterClass { // 内部类
    }    
}

使用static定义的内部类称为静态内部类

非静态内部类在编译完成之后会隐含的保存着一个引用,该引用是指向创建它的外部类,但是静态类没有。没有这个引用就意味着静态内部类不会持有外部类当前对象的引用,所以在静态内部类中无法访问外部类的非static定义的类、属性和方法,同时静态内部类也不依赖于外部类。


class Dome {
    public String str = "内部类";
    class InterClass {

        InterClass() {
            System.out.println("内部类");
            System.out.println(str);
        }
    }

    static class InterClassStatic {
        InterClassStatic() {
            System.out.println("静态内部类");
            System.out.println(str); // Error: 无法从静态上下文中引用非静态 变量 str
        }

    }
}

public class Test {
    public static void main(String[] args) {
        Dome dome = new Dome();
        new Dome.InterClassStatic();
        new Dome.InterClass(); // Error: 需要包含Dome.InterClass的封闭实例
        dome.new InterClassStatic(); // Error: 限定的新静态类
        dome.new InterClass();

    }


}

static 包

import 后使用 static 导入包称为静态导包,使用import static 可以导入类里的静态方法,如直接导入Math类中的PI而无需引用Math类来使用PI

import static java.lang.Math.PI;
import static java.lang.System.out;

public class Test {
    public static void main(String[] args) {
        System.out.println(Math.PI);
        System.out.println(PI);
        out.println(PI);
    }
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记一下 Java Static 有哪些玩法 的相关文章

  • 如何让 BlazeDS 忽略属性?

    我有一个 java 类 它有一个带有 getter 和 setter 的字段 以及第二对 getter 和 setter 它们以另一种方式访问 该字段 public class NullAbleId private static final
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • OW-DETR

    欢迎关注我的公众号 极智视界 获取我的更多笔记分享 大家好 我是极智视界 本文解读一下 基于 Transformer 的开放世界目标检测器 OW DETR 开放世界目标检测 OWOD 是一个具有挑战性的计算机视觉问题 其任务是检测一组已知的
  • 现代密码学第三次实验:不对称加密算法RSA

    现代密码学第三次实验 不对称加密算法RSA 前言 一 实验目的 二 实验环境 三 实验步骤 四 实验基本方法 五 实验程序清单 七 实验结果 八 实验总结 前言 为了帮助同学们完成痛苦的实验课程设计 本作者将其作出的实验结果及代码贴至CSD
  • python实验数据预处理案例_Python数据分析小案例——红楼梦文本分析(一) 文本预处理...

    本文开始介绍一个简单的数据分析案例 分析红楼梦文本 本文主要内容是将红楼梦文本按照章节获取每一回的标题 字数 段落数并保存到csv中方便后续数据分析 红楼梦小说文本可以在这里下载 链接 https pan baidu com s 1WEmu
  • 获取中文、英文、数字的首字母

    function getFirstChar s 获取第一个 s0 mb substr s 0 1 utf 8 一些汉字可能获取不到 可以如下单独处理 if s0 奧 return A if s0 斐 return F if s0 麒 ret
  • java实现洗牌算法——详解Collections.shuffle()

    洗牌题目描述 请撰写一个简单的洗牌程序 显示洗牌结果如下 题目分析 相当于实现52个数字随机打乱顺序 没有王 代码实现 SpringBootApplication public class HelloWorldMainApplication
  • 正交多载波调制(OFDM)

    Orthogonal Frequency Division Multiplexing OFDM OFDM is a special case of multi carrier communication as opposed to a co
  • [深入研究4G/5G/6G专题-39]: URLLC-10-《3GPP URLLC相关协议、规范、技术原理深度解读》-4-如何区分URLLC业务?网络切片的架构与技术详解

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 目录 前言 第1章 什么是网络切片 网络切片的基本概念 1 1 千变万化的业务需求
  • WSL2无法连接网络

    建议您可以参考下面的步骤重置一下网络试试 按键盘Win R打开 运行 输入cmd然后按Ctrl Shift 回车 以管理员身份打开命令提示符 在打开的命令提示符窗口中粘贴运行下面的命令 netsh winsock reset 命令执行完成后
  • 04PL-SQL过程之声明各种简单变量

    declare v temp number 2 v count binary integer 0 v sal number 7 2 4000 00 v date date sysdate v pi constant number 3 2 3
  • mockito mock void方法_Mockito调用静态方法和void方法

    静态类首先给你的类添加以下注解 PrepareForTest 静态类 class ContextConfiguration RunWith PowerMockRunner class PowerMockRunnerDelegate Spri
  • python练习6——PTA

    7 1 重复元素查找 100 分 每一个列表中只要有一个元素出现两次 那么该列表即被判定为包含重复元素 编写程序 对n行字符串进行处理 一行字符串构成一个列表 程序判定每一个列表中是否包含重复元素 最后统计包含重复元素的行数与不包含重复元素
  • 通俗讲解:PoW共识机制与以太坊的关系、Ghost协议 及 Casper PoS共识机制的变种...

    作者 林冠宏 指尖下的幽灵 掘金 juejin im user 587f0d 博客 www cnblogs com linguanh GitHub github com af913337456 腾讯云专栏 cloud tencent com
  • JavaScript 字符串:判断是否包含数字(待补充正则表达式做法)

    描述 给定字符串 str 检查其是否包含数字 包含返回 true 否则返回 false 示例1 输入 abc123 输出 true function containsNumber str return str indexOf 0 1 2 3
  • 1435 牛刀小试结构体

    题目描述 你已经用C语言提供的基本数据类型编写了很多的程序了 事实上 C语言还允许编程者在标准数据类型的基础上创建新的数据类型 你想不想试试 苏轼诗曰 读遍牙签三万轴 欲来小邑试牛刀 今天你也学下斯文 牛刀小试结构体吧 请用标准数据类型创建
  • ON_MESSAGE使用方法

    ON MESSAGE响应的是自定义消息 有关自定义消息的处理请看如下步骤 1 定义消息 在CCDlg类的头文件中加入如下代码 define WM CUSTOMIZE WM USER 1 头文件中加入Customize的声明 afx msg
  • 剑指offer !! 68.二叉树的最近公共祖先

    二叉树的最近公共祖先 中等 2 4K 相关企业 给定一个二叉树 找到该树中两个指定节点的最近公共祖先 百度百科中最近公共祖先的定义为 对于有根树 T 的两个节点 p q 最近公共祖先表示为一个节点 x 满足 x 是 p q 的祖先且 x 的
  • BeyondCompare4破解最佳实践

    先说原理 和大多数软件破解的方法一致 针对官方给出的试用期做文章 一般来说 收费软件大多提供一个 7 30 天的试用期 那对于软件来说 找出记录这个试用期的值就是关键 找到试用期的值以后 能够自动化修改即可完美实现无线循环使用正版软件 完美
  • 计算机毕业设计Node.js+Vue大学生网络安全题库系统(程序+源码+LW+部署)

    该项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 欢迎交流 项目运行 环境配置 Node js Vscode Mysql5 7 HBuilderX Navicat11 Vue Express 项目技术 Express框架 No
  • 简单 TCP UDP server client

    UDP server include stdafx h include
  • 记一下 Java Static 有哪些玩法

    static 变量 static变量是使用 static关键字定义的变量 又被称为静态变量 静态变量是属于类的 也叫类变量 实例变量 非static变量 属于某个具体的对象 静态变量和非静态变量的区别 静态变量被所有对象共享 在内存中只有一