首页 > 其他分享 >静态成员、静态方法、静态代码块

静态成员、静态方法、静态代码块

时间:2024-09-12 09:53:02浏览次数:10  
标签:School 静态方法 String 静态 代码 library num public name

静态成员
           静态数据成员是属于类的,并且为这个类所有对象共享,只占一块内存空间、
           随着类的加载而先创建出来,然后对象才被创建出来。
           一般是通过类名去访问去访问、修改,不推荐,(因为如果用对象去访问,结果可能被覆盖,后续可能混淆,找不出问题。)
                private static String library;  
                School.library="栋梁图书馆"; (School是对象    s1是library    School.library是静态变量)
                School s1=new School("第一中学:",3000);

public class School{
    //成员属性
    private String name;   //学校名字
    private int num;      //学生人数
    private static String library;    //图书馆名字 //私有
}

静态方法
           可以使用类名调用(推荐),也可以使用对象调用
                public static void test(){
                }
           静态方法和普通方法的区别
                1.静态方法只能访问静态成员变量
                2.非静态方法能访问静态成员变量,也能访问非静态成员变量
                3.静态方法没有this关键字

 //成员方法get,set
    public static String getLibrary(){
        return library;
    }
    public static void setLibrary(String library){
        //静态方法中没有this关键字
        School.library=library;

    }

          尽量不要在构造器中操作静态成员变量

    // 全参构造器
      public School(String name,int num){
        this.name=name;
        this.num=num;
        //this.library=library;  不可以
        //School.library="你好图书馆";
    }


 静态代码块
           代码块
                在java中用{}括起来的代码叫代码块,
                分类:1.局部代码块
                         位置:类的方法中定义的
                              {
                               语句体;
                              }
                          作用:限定变量的生命周期,尽早释放,遇到}时释放,提高内存效率
                      2.构造代码块
                          位置:类中 方法外
                             {
                                语句体;
                             }
                          作用:可以把构造方法中,相同的代码提取到这里,提高代码的复用性
                          特点:构造方法执行前会执行他
                          系统默认的构造方法执行前会执行他
                      3. 静态代码块
                          位置:类中 方法外
                             static {
                                      语句体;
                                     }
                          作用:可以在类加载时 给静态成员变量赋值
                          特点:类加载的时候会执行,只执行1次
                          不能访问普通成员变量
                          静态代码块和构造代码块都有时,静态代码先执行
                          静态代码块和我们显示的声明静态变量谁在前面谁先执行

(举例)全部代码

public class School{
    //成员属性
    private String name;   //学校名字
    private int num;      //学生人数
    private static String library;    //图书馆名字 //私有
    // public static String library;  //公有
    static{
        System.out.println("静态代码块执行");
        library="栋梁图书馆2";
    }

    //成员方法get,set
    public static String getLibrary(){
        return library;
    }
    public static void setLibrary(String library){
        //静态方法中没有this关键字
        School.library=library;

    }

    //构造器
    //无参构造器
    public School(){
    }
    //全参构造器
    // public School(String name,int num,String library){
    //     this.name=name;
    //     this.num=num;
    //     this.library=library;
    // 全参构造器
      public School(String name,int num){
        this.name=name;
        this.num=num;
        //this.library=library;  不可以
        //School.library="你好图书馆";
    }
    public void show(){
        System.out.println("学校名称:"+name+"学生数量"+num+"图书馆名称:"+School.library);
    }
}
public class TestSchool{
  // main
  public static void main(String[] args){
    // School.library = "栋梁图书馆";
     School.setLibrary("栋梁图书馆");
    System.out.println("School.getLibrary():"+School.getLibrary());
    // 创建一个学校的对象
    School s1 = new School("第一中学",3000);
    s1.show();
    // s1.setLibrary("第一中学图书馆");
    School s2 = new School("秀峰中学",2500);
    s2.show();
    // School s3 = new School("娄江中学",1800);
    // s3.show();
    // s3.library = "启强图书馆";
    // System.out.println("s3.library:"+s3.library);
    
  }
}

运行结果

静态代码块执行
School.getLibrary():栋梁图书馆
学校名称:第一中学学生数量3000图书馆名称:栋梁图书馆
学校名称:秀峰中学学生数量2500图书馆名称:栋梁图书馆

标签:School,静态方法,String,静态,代码,library,num,public,name
From: https://blog.csdn.net/2301_77975643/article/details/142164966

相关文章

  • 将 Source Generator 生成的源代码保存到本地文件
    默认的源代码生成器所生成的代码都是没有直接存放到项目文件夹里面的,不受源代码管理工具管理,对使用方的开发者来说很难直接阅读或查找到SourceGenerator生成的源代码。本文将和大家介绍如何使用EmitCompilerGeneratedFiles属性配置将生成的代码保存到本地文件将SourceGene......
  • [全网独家原创]基于(BO)Bayes-Transformer-LSTM多输出回归预测(多输入多输出)Matlab代码
    [全网独家原创]基于(BO)Bayes-Transformer-LSTM多输出回归预测(多输入多输出)Matlab代码你先用你就是创新!!!每个输出都有以下线性拟合图等四张图!!!具体看图,独家图像!!!程序已经调试好,替换数据集根据输出个数修改outdim值即可运行!!!数据格式为excel!(如下)需要其他算法的都可以定制!贝叶......
  • c++求助bfs流星雨题目为什么代码编不过
    题目链接3669--MeteorShower(poj.org)英文题目DescriptionBessiehearsthatanextraordinarymeteorshoweriscoming;reportssaythatthesemeteorswillcrashintoearthanddestroyanythingtheyhit.Anxiousforhersafety,shevowstofindherwayt......
  • 代码整洁之道--读书笔记(8)
    代码整洁之道简介:本书是编程大师“Bob大叔”40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更高台阶。本......
  • 计算机毕业设计 智能推荐旅游平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解
    ......
  • 通过git进行本地项目代码备份与版本控制
    在本地进行项目开发时,由于代码需要进行多次迭代,因此备份代码是不可缺少的。因此使用版本控制系统来进行代码备份是很有必要的。本文将介绍有关git配置gitee以及github的相关内容,并对一些问题做出相应解释。1.git工具1.1git介绍Git是一个开源的分布式版本控制系统,可以有效、......
  • ALIENTEK电容按键按键的介绍与驱动代码
    目录前言电容触摸按键原理 硬件接线检测电容触摸按键过程驱动代码 tpad.htpad.cmain.c 前言我没有独立的电容触摸按键模块,所以使用正点原子STM32F103ZET6精英版开发板上的电容触摸按键。采用STM32F103C8T6检测电容触摸按键,代码为正点原子精英版开发板移植。电......
  • 【自用22.】C++类的静态数据成员以及静态成员函数
    需要获取总的人数,如何实现?方案一:使用全局变量,在构造函数中对这个全局变量进行修改具体代码如下:在Human.cpp中定义全局变量,并在构造函数中对人数进行增加操作#include"Human.h"#include<iostream>usingnamespacestd;intHumanCount=0;Human::Human(){ name......
  • TensorFlow深度学习框架改进K-means、SOM自组织映射聚类算法及上海招生政策影响分析研
    全文链接:https://tecdat.cn/?p=37652 原文出处:拓端数据部落公众号 分析师:ChenZhang 在教育政策研究领域,准确评估政策对不同区域和学生群体的影响至关重要。2021年上海市出台的《上海市初中学业水平考试实施办法》对招生政策进行了调整,其中名额分配综合评价模块的变化尤为......
  • 【SpringBoot】静态方法获取 bean的
    背景:使用springboot,要从spring容器里面取到一个bean,那是很容易的。但从静态方法里面取出一个bean,有什么方法呢?比如:场景1:要写一个工具类,可以提供静态方法去获取一个bean。场景2:要写一个工具类,可以提供静态方法去获取一个bean,并且这个工具类不能给spring管理(因为常规操作,交给......