详解Java中static关键字和内部类的使用

yizhihongxing

详解Java中static关键字和内部类的使用

Java中的static关键字和内部类是程序设计中非常重要的特性,本文将全面讲解它们的使用。

static关键字

概念

static关键字可以用来修饰类的成员变量和成员方法。

static关键字被修饰成员变量时,该变量成为静态变量,也可以称为类变量。静态变量的特点是在内存中只有一份,无论有多少个对象被创建,静态变量都只有一份副本。静态变量可以通过类名直接访问,例如ClassName.staticVariable

static关键字被修饰成员方法时,该方法成为静态方法。静态方法的特点是可以通过类名直接调用,例如ClassName.staticMethod()。静态方法不能访问非静态成员变量,因为非静态成员变量需要在对象被创建后才能分配内存空间,而静态方法和静态变量在类加载时就已经分配了内存空间。

示例

public class Student {
    private static int count;
    private String name;

    public Student(String name) {
        this.name = name;
        count++;
    }

    public static int getCount() {
        return count;
    }

    public String getName() {
        return name;
    }

    public static void main(String[] args) {
        Student s1 = new Student("Alice");
        Student s2 = new Student("Bob");
        System.out.println(s1.getName());
        System.out.println(s2.getName());
        System.out.println(Student.getCount());
    }
}

在上面的示例代码中,count变量被定义为静态变量,表示学生对象的个数。在Student类的构造方法中,每次创建一个新的学生对象,都会将count变量加1。通过getCount方法可以获取到学生对象的个数,因为count是静态变量,可以直接通过类名访问。

内部类

概念

内部类是定义在其他类内部的类。在Java中有四种内部类:

  • 成员内部类
  • 静态内部类
  • 局部内部类
  • 匿名内部类

其中最常用的是成员内部类和静态内部类。成员内部类和普通类的区别是成员内部类可以访问外部类的成员变量和方法,而普通类不能。静态内部类和成员内部类的区别是静态内部类不需要依赖于外部类的实例,可以直接通过类名访问。

示例

public class Outer {
    private String name = "outer class";

    public void test() {
        Inner inner = new Inner();
        inner.say();
    }

    public static class StaticInner {
        public void say() {
            System.out.println("static inner class");
        }
    }

    public class Inner {
        public void say() {
            System.out.println("inner class:" + name);
        }
    }

    public static void main(String[] args) {
        Outer outer = new Outer();
        outer.test();

        StaticInner staticInner = new StaticInner();
        staticInner.say();
    }
}

在上面的示例代码中,Outer类有一个成员内部类Inner和一个静态内部类StaticInner。在Outer类的test方法中,创建一个Inner对象并调用它的say方法,Inner类可以访问Outer类的name成员变量。在main方法中,创建一个StaticInner对象并调用它的say方法,StaticInner类可以直接通过类名访问。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java中static关键字和内部类的使用 - Python技术站

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

相关文章

  • java异常处理机制示例(java抛出异常、捕获、断言)

    Java 异常处理机制是 Java 编程语言的一部分,可以用来处理可能在程序执行期间发生的错误或特殊情况。该机制利用两个机制来实现异常处理:抛出异常和捕获异常。在代码块中,如果发生了异常,它将会被抛出,然后在某个程序块中被捕获并处理。下面我们将通过两条示例详细讲解 Java 异常处理机制和代码实现。 1. 抛出异常 Java 中的异常通常是以 throw 语…

    Java 2023年5月27日
    00
  • j2Cache线上异常排查问题解决记录分析

    下面是“j2Cache线上异常排查问题解决记录分析”的完整攻略。 1. 理解j2Cache 在开始排查j2Cache异常之前,应该先理解什么是j2Cache。j2Cache是一款Java的二级缓存框架,它可以将数据缓存在内存中,以提高访问速度。它支持多种缓存策略,如LRU、FIFO、LFU等。此外,j2Cache还支持分布式缓存,可以将缓存数据存储在多个节点…

    Java 2023年5月27日
    00
  • spring boot教程之全局处理异常封装

    Spring Boot教程之全局处理异常封装 在Spring Boot应用程序中,我们经常需要处理各种异常,例如数据库异常、网络异常、业务异常等。为了提高代码的可读性和可维护性,我们可以使用全局异常处理机制来封装和处理异常。本文将详细讲解Spring Boot全局处理异常封装的完整攻略,并提供两个示例。 1. 全局异常处理机制 以下是全局异常处理机制的基本流…

    Java 2023年5月15日
    00
  • 关于Java类的构造方法详解

    关于Java类的构造方法详解 类是Java的基本元素,而构造方法则是在创建类的实例时执行的一种特殊方法。本文将详细介绍Java类构造方法的相关知识以及使用技巧。 构造方法的定义 构造方法是一种特殊的方法,它的目的是在创建类的实例时执行一些初始化操作。一般情况下,构造方法和类的名称相同,不过它们没有返回值类型。在创建类的实例时,编译器会自动选择相应的构造方法并…

    Java 2023年5月26日
    00
  • 详解Java的继承

    详解Java的继承 Java中的继承是一种面向对象编程中非常重要的概念,它可以让子类拥有父类的属性和方法,同时也可以通过继承来实现代码的复用和继承树的建立。本文将详解Java的继承,包括继承的语法、继承的作用和细节问题,通过两个实例来帮助理解。 继承的语法 在Java中,使用关键字 extends 来创建子类并继承父类。例如: class Child ext…

    Java 2023年5月26日
    00
  • 深入解析Java多态进阶学习

    深入解析Java多态进阶学习攻略 简介 Java是一门支持多态的编程语言。多态是OOP语言中非常重要的特征之一,也是使OOP能够支持继承的灵魂所在。本篇文章将深入讲解Java多态进阶学习的攻略,帮助读者更好地掌握多态的实现方法和使用技巧。 什么是多态 在Java中,多态是指同一个方法在不同的情况下具有不同的行为。通俗地讲,就是同一个方法可以被不同的对象调用,…

    Java 2023年5月26日
    00
  • Java如何判断字符串中是否包含某个字符

    如果需要在Java中判断一个字符串是否包含某个字符,可以使用String类的contains()方法或indexOf()方法。 方法1:contains()方法 contains()方法用于判断一个字符串中是否包含另一个字符串。它返回一个布尔值,表示待判断的字符串是否包含指定的字符或字符串。 下面是一个例子: String str = "hello…

    Java 2023年5月27日
    00
  • Java实现排球比赛计分系统

    Java实现排球比赛计分系统 概述 排球是一项很受欢迎的运动项目,计分是比赛中必不可少的环节。本文将介绍如何使用 Java 实现排球比赛计分系统。 实现思路 排球比赛分为五局制,每局比赛先得分 25 分,并且要领先对手 2 分以上。如果进入决胜局(第五局),则比赛先得分 15 分,同样需要领先对手 2 分以上。 在进行比赛时,我们需要记录两个队伍的分数,以及…

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