首页 > 其他分享 >Day57 Static关键字详解

Day57 Static关键字详解

时间:2024-01-24 20:24:35浏览次数:23  
标签:System 详解 static Student println Static out public Day57

Static关键字详解

static 加在方法上叫 静态方法

static 加在属性上叫 静态属性

1.static

package com.oop.demo09;

//static
public class Student {

    //一.静态属性
    private static int age;//  加了static  是静态的变量    多线程!
    private double score; //没有static      非静态的变量

    //二.静态方法
    public void run(){ //非静态方法
    //下面main方法里面要调用这个方法必须  先new一个Student     在main方法里面写 new Student().run(); 才能调用

        go();//非静态方法可以去调用静态方法里面的东西
    }

    public static void go(){  //静态方法
        //下面main方法   可以直接Student.go();  或者go();   调用
        //静态方法跟类一起加载。。。所以后面加载的非静态方法可以调用这里的东西
    }

    public static void main(String[] args) {
        
        Student s1 = new Student();
        
        System.out.println(Student.age);//静态属性   直接通过类Student.age调用
      //若把上一行代码Student.age换成Student.score就会报错
        //因为score是非静态的变量  没有加static     不能这样调用  程序会报错

        System.out.println(s1.age);//通过对象s1调用age和score    前提:要new一个Student类
        System.out.println(s1.score);

    }
}

2.代码块扩展

package com.oop.demo09;

public class Person {

    //2:赋初始值
    {
        //代码块(匿名代码块)
        System.out.println("匿名代码块");
    }

    //1:只执行一次
    static {
        //静态代码块
        System.out.println("静态代码块");
    }

    //3
    public Person() {
        System.out.println("构造方法");
    }

    public static void main(String[] args) {
        Person person1 = new Person();
        System.out.println("============================");
        Person person2 = new Person();
    }
}

结果是:

静态代码块
匿名代码块
构造方法
============================
匿名代码块
构造方法

由此可见 程序首先执行静态代码块(且只执行一次)

然后执行 匿名代码块 然后构造方法

3.静态导入包及final修饰符

package com.oop.demo09;

//静态导入包~
import static java.lang.Math.random;
import static java.lang.Math.PI;

public class Test {
    public static void main(String[] args) {
        System.out.println(random());
        //System.out.println(Math.random());这个是生成一个随机数的意思   要是不导入包  正常要这么写 得多写Math
        System.out.println(PI);

        //通过final修饰的类    另一个类无法通过extends继承    final之后断子绝孙

    }
}

标签:System,详解,static,Student,println,Static,out,public,Day57
From: https://www.cnblogs.com/baixiaofan/p/17985771

相关文章

  • 图的最短路-Dijkstra 详解
    Dijkstra  概念注意一下,Dijkstra不适用于有负边权的图   就是刚开始一些点(集合B),把排序的结果放入集合A,先确定起点0,然后找集合B里面的最小值,这样才可以确定你修改的这个点的最短路在目前是最优解(后期可能改动),因为集合A的都是确定好了的最短路,所以集合A的数不做修......
  • 指标平台详解(上):为什么有了 BI ,还需要指标平台?
    随着商业智能(BI)的快速普及与深度使用,企业在数据分析“深水区”普遍面临着指标分散定义导致口径不统一、重度依赖 ETL 作业开发报表、问题排查耗时耗力、复用率低等问题。如何兼顾敏捷与统一,实现指标的高效开发和有效管理?我们特策划了本期《指标平台详解》话题,通过两篇文章介绍指......
  • Unity3D Rts游戏里的群体移动算法是如何实现的详解
    前言实时战略(RTS)游戏是一种以管理和控制虚拟军队为主题的游戏类型。在这类游戏中,玩家需要控制大量的单位进行战斗、资源采集和建设等操作。其中,群体移动算法是实现这些操作的关键之一。本文将详细介绍Unity3DRTS游戏中群体移动算法的实现原理和代码实现。对惹,这里有一个游戏开......
  • 2024最新iOS17.3微信分身详解分享
    微信是目前最流行的社交软件之一,拥有庞大的用户群体。然而,对于一些需要同时使用多个微信账号的用户来说,使用官方版微信就显得有些不方便。iOS分身微信软件可以解决这个问题,它可以让用户在同一台设备上同时登录多个微信账号,从而实现工作生活两不误。iOS分身微信软件的优势iOS分身微......
  • C# Switch 语句进阶:模式匹配详解与实例演示
     在C#中,switch语句的模式匹配在C#7.0及以上版本中引入。以下是switch语句中常见的模式及其使用方法的示例:1.类型模式:优点: 用于检查对象的运行时类型,使代码更具可读性。publicstaticstringGetObjectType(objectobj){switch(obj){caseinti:......
  • 神经网络优化篇:详解调试处理(Tuning process)
    调试处理关于训练深度最难的事情之一是要处理的参数的数量,从学习速率\(a\)到Momentum(动量梯度下降法)的参数\(\beta\)。如果使用Momentum或Adam优化算法的参数,\(\beta_{1}\),\({\beta}_{2}\)和\(\varepsilon\),也许还得选择层数,也许还得选择不同层中隐藏单元的数量,也许还想使用学习......
  • SQL注入详解
    一、SQL注入注入攻击的本质,是把用户输入的数据当做代码执行。这里有两个关键条件,第一个是用户能够控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。varsql="select*fromtableNamewherename='"+"test"+"'";这个“拼接”的过程很重要,正是这个拼......
  • Unity3D 游戏转场时如何保留节点信息详解
    Unity3D是一款非常强大的游戏开发引擎,它提供了丰富的功能和工具,使开发者能够轻松创建各种类型的游戏。在游戏开发过程中,转场是一个非常常见的需求,它可以使游戏过程更加流畅和连贯。然而,在转场过程中,如何保留节点信息是一个需要解决的问题。本文将详细介绍Unity3D游戏转场时如何保......
  • Unity3D 协程的优缺点详解
    Unity3D是一款强大的游戏开发引擎,它提供了许多功能和工具,以帮助开发者创建高质量的游戏。其中一个非常重要的功能就是协程(Coroutine)。协程是一种特殊的函数,它可以在执行过程中暂停并在稍后的时间点继续执行。在本文中,我们将详细探讨Unity3D协程的优缺点,并提供一些技术详解和代码实......
  • C# Break 和 Continue 语句以及数组详解
    C#Break它被用于“跳出”switch语句。break语句也可用于跳出循环。以下示例在i等于4时跳出循环:示例:for(inti=0;i<10;i++){if(i==4){break;}Console.WriteLine(i);}C#Continuecontinue语句在循环中发生特定条件时中断一次迭代,并......