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日

相关文章

  • Java Collection集合的三种遍历方式详解

    Java Collection集合的三种遍历方式详解 在Java中,集合(Collection)是一种常见的数据结构,常用于存储、操作一组对象的场景中。集合提供了多种遍历方式,本文将详细介绍三种常见的遍历方式及其区别。 遍历方式一:for循环 for循环是最常见的遍历方式,它适用于所有类型的集合。使用for循环遍历集合需要以下步骤: for (Iterato…

    Java 2023年5月26日
    00
  • Sprint Boot @NotNull使用方法详解

    @NotNull是Spring Boot中的一个注解,用于标记一个字段或方法参数不能为空。在本文中,我们将详细介绍@NotNull注解的作用和使用方法,并提供两个示例说明。 @NotNull注解的作用 @NotNull注解用于标记一个字段或方法参数不能为空。当使用@NotNull注解标记一个字段或方法参数时,如果该字段或方法参数为null,则会抛出javax…

    Java 2023年5月5日
    00
  • 详解Java单元测试之Junit框架使用教程

    详解Java单元测试之Junit框架使用教程 什么是单元测试? 单元测试是指对软件的最小测试单位——函数、方法、类进行测试的方法。其目的是为了发现代码中的错误和缺陷,确保软件的质量以及代码的可维护性。 Junit框架概述 Junit是Java项目中最流行的单元测试框架之一。Junit提供了一些常用的断言方法,可以方便地进行测试结果的验证。Junit是开源软件…

    Java 2023年5月26日
    00
  • Java编写网络聊天程序实验

    Java编写网络聊天程序是Java网络编程的典型案例之一。下面是一份完整的攻略: 确定需求 在开始编写之前,我们需要明确我们的需求是什么。我们的聊天程序需要实现以下功能: 客户端可以连接到服务器 客户端可以发送消息、接收消息 服务器可以广播客户端发送的消息给所有客户端 设计架构 为了实现这些需求,我们需要考虑使用什么样的架构。我们可以使用一个基于线程池的架构…

    Java 2023年5月23日
    00
  • Sprint Boot @JsonIgnore使用方法详解

    @JsonIgnore是Spring Boot中的一个注解,用于标记某个字段或方法不参与序列化或反序列化。在本文中,我们将详细介绍@JsonIgnore注解的作用和使用方法,并提供两个示例。 @JsonIgnore注解的作用 @JsonIgnore注解用于标记某个字段或方法不参与序列化或反序列化。当使用@JsonIgnore注解标记某个字段或方法时,该字段或…

    Java 2023年5月5日
    00
  • Java 动态数组的实现示例

    下面是 Java 动态数组的实现示例的完整攻略: 动态数组的定义 动态数组是指在数组长度不够时可以动态扩容的数组。在 Java 中,动态数组又被称作 ArrayList。 动态数组的实现方式 Java 中的动态数组可以通过 ArrayList 类来实现。ArrayList 中本身就包含了自动扩容的功能,可以根据需要动态增大数组的长度。 ArrayList 例…

    Java 2023年5月26日
    00
  • 强引用的作用是什么?

    强引用是指对象之间的一种引用关系,如果一个对象被另一个对象强引用了,那么这个对象在内存中就不能被垃圾回收器回收。在实际开发中,使用强引用的场景非常多,下面对强引用的作用进行详细讲解。 强引用的作用 1. 避免对象被回收 强引用最常见的用途就是保持对象不被垃圾回收器回收。如果一个对象被多个地方引用着,那么可以使用强引用来确保这个对象一直存在于内存中。比如,在A…

    Java 2023年5月10日
    00
  • SpringBoot项目打包war包时无法运行问题的解决方式

    如果在将SpringBoot项目打包成war包后无法正常运行,有以下两种解决方式: 1. 修改WebApplicationType属性 在SpringBoot 2.0.X之后的版本中,默认的WebApplicationType属性是SERVLET,生成的是一个标准的Servlet容器WAR包。但是如果将SpringBoot项目打包成WAR包后在tomcat等…

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