static关键字的用法

article/2025/9/12 15:32:35

static关键字用法

目录

  • 一.概述
  • 二.使用动机
  • 三.使用方法
    1. static关键字修饰类
    2. static关键字修饰方法
    3. static关键字修饰变量
    4. static关键字修饰代码块

    一. 概述

    > static是一个静态修饰符关键字,表示静态的意思, ①方便在没有创建对象的情况下进行调用。可以修饰类、方法、变量以及代码块。

    【注释①】通常来说,当创建类时,就是在描述那个类的对象的外观和行为。除非用new创建那个类的对象,否则实际上并未获得任何对象。执行new来创建对象时,数据存储空间才被分配,其方法才供外界调用。即,不需要创建对象而直接通过类名进行访问。

    二. 使用动机

    当一个方法或者变量需要初始化加载,或者是经常被调用的时候可以加上static.用static修饰的方法可以用类名直接调用,不用一定要先实例化一个对象然后才可以调用。

    三. 使用方法

    3.1 static关键字修饰类

    在Java中,static一般用来修饰成员变量或者函数。但有一种特殊用法是用static修饰内部类(普通类是不允许声明为静态的,只有内部类才可以),被static修饰的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。
    class OuterClass {public static class InnerClass {InnerClass() {System.out.println("InnerClass Class");}public void Method() {System.out.println("InnerClass Method");}}
    }public class StaticClassTest01 {public static void main(String[] args) {// 不需要new一个OuterClassnew OuterClass.InnerClass();new OuterClass.InnerClass().Method();}
    }
    

    需要注意的是,当一个内部类没有使用static修饰的时候,是不能直接使用内部类创建对象,需要先使用外部类对象+ . + new内部类对象,如下代码所示:

    class OuterClass{public class InnerClass{InnerClass(){System.out.println("InnerClass Class");}public void Method(){System.out.println("InnerClass Method");}}
    }public class StaticClassTest02 {public static void main(String[] args) {//需要先生成OuterClass的实例,然后再new一个InnerClass()OuterClass oc = new OuterClass();oc.new InnerClass();oc.new InnerClass().Method();}
    }
    

    3.2 static关键字修饰方法

    >static修饰的方法被称之为静态方法,也叫类方法

    Attention!加Static修饰的方法与不加Static修饰的方法的区别
    ☺ 加static的方法,可以通过类名直接访问,也可以通过对象名访问;加了static的方法,不能再内部写this,因为直接用类名.方法的时候,没有当前对象
    而不加static只能通过对象名访问
    ☺ 加了static的方法,不能在内部访问非static的属性和行为,因为在静态方法的内部无法确定非static的内容属于那个对象,它是通过类名调用

    class StaticMethod {public static void Method(){System.out.println("Static Method");}
    }public class StaticMethodTest{public static void main(String[] args) {//1.直接通过类名.方法StaticMethod.Method();//2.创建对象,通过对象.方法StaticMethod sm = new StaticMethod();sm.Method();}
    }
    

    3.3 static关键字修饰变量

    被static修饰的成员变量属于类,不属于某个对象(也就是说:多个对象访问或修改static修饰的成员变量时,其中一个对象将static成员变量进行了修改,其他的对象的static成员变量值跟着改变,即多个对象共享同一个static成员变量被static修饰的成员,可以通过类名直接访问在静态方法中,不能访问非静态的内容(变量),不能使用this/super;非静态中,可以访问静态中的变量
    public class StaticVar {private static String name = "Static Var";public static void main(String[] args) {System.out.println(StaticVar.name);}
    }
    

    3.4 static修饰代码块

    静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。

    静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行。

    package com.practice.StaticTest;class StaticBlock {//构造方法public StaticBlock(){System.out.print("默认构造方法!-->");}//非静态代码块{System.out.print("静态代码块!-->");}//静态代码块static{System.out.print("静态代码块!-->");}public static void Method(){System.out.println("方法中的代码块!");}
    }public class StaticBlockTest{public static void main(String[] args) {//两次创建对象,static代码块只执行一次StaticBlock sb = new StaticBlock();sb.Method();StaticBlock sb1 = new StaticBlock();sb1.Method();}
    }
    


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

    相关文章

    static 关键字用法总结

    一、static 关键字的含义 static是Java50个关键字之一。static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局静态成员变量,修饰方法表示静态方法。(注意:不能修饰普通类,除了内部类,这是为什么&#…

    java static关键字的作用是什么_static关键字有什么作用

    今天主要学习下Java语言中的static关键字。 static关键字的含义及使用场景 static是Java50个关键字之一。static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局静态成员变量,修饰方法表示静态方法。(注意:不能修饰普通类,除了内部类,这是为什么?)class A …

    static关键字的作用

    目录 C语言中static关键字的作用 1.static关键字修饰局部变量 2.static关键字修饰全局变量 3.static关键字修饰函数 在C中static关键的作用 1.静态成员变量 2.静态成员函数 C语言中static关键字的作用 1.static关键字修饰局部变量 概念: static修饰局部变量就…

    静态关键词:static

    static关键字的作用 static是静态的意思,可以修饰成员变量,表示给成员变量只在内存中存储一份,可以被共享访问、修改 成员变量可以分为2类1、静态成员变量(有static修饰,属于类,内存中加载一次&#xff…

    C# -- static 关键字

    一、static关键字 static 关键字,用于修饰类,字段,属性,方法,构造方法等。被 static 修饰的类称之为“静态类”; 被 static 修饰的成员称之为“静态成员”,被修饰过的成员分别称为:…

    static关键字详解

    1.概述: static:就是多个对象共享同一份数据 一个类的不同对象有些共享的数据,这样我们就可以使用static来修饰 一旦使用了static关键字,那么这样的内容不再属于对象,而是属于类的,所以凡是本类的对象&…

    在 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个匹配点对计算变…