Java 关键字static详解及实例代码

Java关键字static详解及实例代码

什么是Java的关键字static

Java的关键字static用于声明类、方法和变量,它可以用来标识一个类、方法和变量是否为静态的。

当我们把一个成员变量或成员方法定义为静态时,它可以被所有对象所共享,无需实例化对象就可以直接访问它们。而非静态的成员变量和成员方法必须通过实例化后才能进行访问。

Java关键字static的使用

类级别的静态变量

类级别的静态变量指的是在类中声明的变量,使用关键字static来标识。这种变量在所有实例化对象中都是共享的。

下面是一个静态变量的例子:

public class Person {
    static int count = 0;
    public Person() {
        count++;
    }
}

在上面的例子中,我们声明了一个静态变量count,每次实例化一个Person对象时,count都会自增。在程序中通过Person.count就可以访问count了。因为count是静态变量,所以在程序中的任意地方都可以使用它,不需要实例化一个Person对象。

类级别的静态方法

Java中的静态方法,必须使用关键字static来进行定义和修饰,静态方法可以在类没有实例化的情况下直接调用。

下面是静态方法的一个例子:

public class Person {
    static int count = 0;

    public Person() {
        count++;
    }

    public static void printCount() {
        System.out.println("Total Person objects: " + count);
    }
}

在上面的例子中,我们定义了一个静态方法printCount,它可以在没有实例化Person对象的情况下执行,用于打印已经创建的Person对象的数量。在程序中,我们可以通过Person.printCount()方法来直接调用printCount方法,而不需要新建一个Person对象。

静态代码块

静态代码块指的是在类中使用关键字static来定义的块。这个块在类被加载时执行,并且只执行一次。通常用于初始化静态变量。

下面是静态代码块的一个例子:

public class Person {
    static {
        System.out.println("Person Class Loaded...");
    }
}

在上面的例子中,我们定义了一个静态代码块,当类被加载时会执行System.out.println("Person Class Loaded...")方法。

示例说明

示例1:计算矩形面积

下面的例子是利用静态变量和静态方法计算矩形面积的示例代码:

public class Rectangle {
    static int width;
    static int height;

    public static void setWidth(int w) {
        width = w;
    }

    public static void setHeight(int h) {
        height = h;
    }

    public static int getArea() {
        return width * height;
    }

    public static void main(String[] args) {
        Rectangle.setWidth(10);
        Rectangle.setHeight(5);
        int area = Rectangle.getArea();
        System.out.println("Width: " + Rectangle.width);
        System.out.println("Height: " + Rectangle.height);
        System.out.println("Area: " + area);
    }
}

在上面的例子中,我们定义了静态变量widthheight,以及静态方法setWidthsetHeightgetArea。在main函数中,我们通过Rectangle类调用静态方法setWidthsetHeight设置矩形的宽和高,并且我们通过调用静态方法getArea计算矩形面积。

示例2:使用静态块在数字数组中查找最大值

下面的例子是使用静态块在数字数组中查找最大值的示例代码:

public class Maxium {
    static int[] nums = {10, 20, 30, 40, 50};
    static int max;

    static {
        max = nums[0];
        for(int i = 1; i < nums.length; i++) {
            if(nums[i] > max) {
                max = nums[i];
            }
        }
    }

    public static void main(String[] args) {
        System.out.println("Maxium: " + max);
    }
}

在上面的例子中,我们定义了静态变量nums表示数字数组,以及静态变量max表示最大值。在静态块中,我们通过遍历nums数组查找最大值并将其赋值给静态变量max。在main函数中,我们通过直接调用Maxium.max变量打印最大值。

总结

以上就是Java关键字static的详细攻略,static关键字可以使变量和方法在类加载的时候就被初始化,从而免去了频繁地初始化的麻烦。同时,静态变量可以实现数据的共享,静态方法可以实现代码的共享,静态块可以在类加载时执行一些初始化代码,这些特性都使得static关键字在Java编程中经常被使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 关键字static详解及实例代码 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • 使用自定义Json注解实现输出日志字段脱敏

    以下是使用自定义Json注解实现输出日志字段脱敏的完整攻略。 什么是Json注解 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写。在Java应用程序中,我们通常使用Jackson或者Gson等库将Java对象序列化为JSON格式。而Json注解则是在Java对象中添加特定标记以控制序列化和反序列化过…

    Java 2023年5月26日
    00
  • SpringBoot接口接收json参数解析

    接下来我将为你详细讲解SpringBoot接口接收Json参数解析的完整攻略,包含以下流程: 创建SpringBoot项目 定义数据模型 定义控制器 确定请求方式 接收与解析Json参数 处理请求数据 接下来将逐步讲解每一个步骤。 1. 创建SpringBoot项目 我们首先需要创建一个SpringBoot项目,可以使用Spring官方提供的Spring I…

    Java 2023年5月20日
    00
  • java后端把数据转换为树,map递归生成json树,返回给前端(后台转换)

    首先,需要明确一下这个过程的流程和目的:将后端获得的数据转换为树形结构,再通过递归生成 JSON 树,并返回给前端。下面我们将详细讲解这个过程。 1. 将数据转换为树形结构 首先,需要将后端的数据进行转换,变成树形结构。可以使用递归来完成这个过程。 具体实现方式如下:首先,定义一个树节点的类 Node,包含节点名称、节点编号、父节点编号、节点类型等属性。然后…

    Java 2023年5月26日
    00
  • Tomcat配置及如何在Eclipse中启动

    下面我将详细讲解Tomcat配置及如何在Eclipse中启动的完整攻略。 1. Tomcat配置 Tomcat是开源的Web应用程序服务器,它可以为使用Java Servlet和JSP的Web应用程序提供运行环境。在使用Tomcat之前,需要进行配置。 1.1 下载Tomcat 首先需要在Tomcat官网下载Tomcat安装包,下载地址为http://tom…

    Java 2023年5月19日
    00
  • 关于json序列化(javaBean转Json的细节处理)

    关于json序列化(javaBean转Json的细节处理)的攻略,我将会从以下几个方面进行讲解: 什么是Json序列化 如何进行Json序列化 JavaBean转Json的细节处理 什么是Json序列化 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,由于其简洁性、易于读写和解析、支持多种语言等特性,已经成为了互联…

    Java 2023年5月26日
    00
  • 在JSP中处理虚拟路径

    如何在JSP中处理虚拟路径 在JSP中处理虚拟路径需要使用到JSP内置对象中的application对象、pageContext对象和HttpServletRequest对象。通过这些内置对象中提供的方法来获取虚拟路径的实际路径,并将其与页面的文件路径拼接在一起。 具体实现过程如下: 1.获取虚拟路径的实际路径 在JSP页面中获取虚拟路径的实际路径可以通过以…

    Java 2023年6月15日
    00
  • JSP中的源代码泄漏问题

    JSP(Java Server Pages)是一种跨平台的Web技术,它允许Java代码被嵌入到HTML页面中,以此来动态生成Web页面。但是,如果JSP页面中存在源代码泄漏的问题,攻击者可以利用这个漏洞来获取应用程序的源代码,从而非法获取系统信息,甚至进一步攻击应用程序。因此,JSP中的源代码泄漏问题是一项需要格外重视的安全问题。下面是详细讲解JSP中的源…

    Java 2023年6月15日
    00
  • javascript仿163网盘无刷新文件上传系统

    下面是“javascript仿163网盘无刷新文件上传系统”的完整攻略: 一、准备工作 1.1 前端代码 在前端页面中添加如下代码片段: <form id="uploadForm" enctype="multipart/form-data"> <input type="file" …

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部