首页 > 编程语言 >乱七八糟的java static知识(建议不要看)

乱七八糟的java static知识(建议不要看)

时间:2024-10-14 20:36:22浏览次数:1  
标签:java 变量 示例 静态 乱七八糟 实例 static public

  1. static变量(静态变量)
    静态变量是被static关键字声明的类变量,它们属于类而不是类的实例。

特点:
所有实例共享同一个静态变量。
在类加载时初始化,且在程序运行期间始终存在。
示例:

public class Counter {
// 静态变量
private static int count = 0;

// 构造函数
public Counter() {
    count++;
}

public static int getCount() {
    return count;
}

}
在这个示例中,count是一个静态变量,所有Counter类的实例共用这个变量。

  1. static方法(静态方法)
    静态方法是被声明为static的方法,可以直接通过类名访问,而无需创建实例。

特点:
不能直接访问实例变量和实例方法。
可以直接访问其他静态变量和方法。
示例:

public class MathUtil {
public static int add(int a, int b) {
return a + b;
}
}

// 调用静态方法
int sum = MathUtil.add(5, 10);
3. static块(静态初始化块)
static块是在类加载时执行的代码块,用于初始化静态变量。

特点:
仅执行一次,且在类的任何实例被创建之前执行。
示例:

public class Example {
private static int value;

static {
    value = 10; // 初始化静态变量
    System.out.println("静态初始化块执行");
}

}
4. 内存管理
static成员存储在方法区(Method Area),这些成员的生命周期是从类加载到程序终止。即便没有实例,静态变量依然存在。

  1. 单例模式(Singleton Pattern)
    static关键字通常用于实现单例模式,确保某个类只有一个实例,并提供访问该实例的方法。

示例:

public class Singleton {
private static Singleton instance;

private Singleton() {} // 私有构造函数

public static Singleton getInstance() {
    if (instance == null) {
        instance = new Singleton();
    }
    return instance;
}

}
6. 静态导入(Static Import)
静态导入是Java 5引入的功能,使得可以直接调用类的静态方法和字段,无需类名前缀。

示例:

import static java.lang.Math.*;

public class Test {
public static void main(String[] args) {
double result = sqrt(16); // 直接调用静态方法
System.out.println(result);
}
}
7. 静态接口成员
从Java 8开始,接口可以包含静态方法。静态接口方法能够直接通过接口调用。

示例:

public interface MyInterface {
static void staticMethod() {
System.out.println("这是静态方法");
}
}

// 调用静态接口方法
MyInterface.staticMethod();
8. 静态内部类
静态内部类是用static关键字声明的类,它不需要外部类的实例来创建。

特点:
可以访问外部类的静态成员,但不能访问外部类的实例成员。
示例:

public class Outer {
static int outerStaticVariable = 10;

static class Inner {
    void display() {
        System.out.println("外部类的静态变量: " + outerStaticVariable);
    }
}

}

// 创建静态内部类的实例
Outer.Inner inner = new Outer.Inner();
inner.display();
9.static 关键字的使用注意事项
不能访问非静态成员:在静态方法中,不能直接访问非静态变量或方法,必须通过对象引用来访问。
共享数据:static 变量是共享的,所有实例都共享同一个变量,因此对 static 变量的修改会影响到所有实例。
在单例模式中使用:static 可以用于实现单例模式,通过 static 方法或变量来确保只有一个实例存在。

标签:java,变量,示例,静态,乱七八糟,实例,static,public
From: https://www.cnblogs.com/yzl168324/p/18465256

相关文章

  • java多线程基础知识速通
     1.线程和进程的区别进程是正在运行的程序实例,每个进程包含了多个线程,每个现场执行不同的任务进程都有自己的内存空间,而一个进程下的线程们则是共享内存空间线程更加轻量,线程上下文切换的成本远低于进程上下文切换的成本 2.并行与并发的区别并行是多核CPU一般执行相应个......
  • JAVA中的Xms、Xmx、MetaspaceSize、MaxMetaspaceSize都是什么意思?
    原文链接:JAVA中的Xms、Xmx、MetaspaceSize、MaxMetaspaceSize都是什么意思?–每天进步一点点(longkui.site)某天需要修改一个web服务器的配置文件,看到了下面这样一行配置JAVA_OPTS="-Xms64m-Xmx512m-XX:MetaspaceSize=64M-XX:MaxMetaspaceSize=512m-Djava.net.preferIPv......
  • JavaScript中的对象,常用内置对象和数据类型
    一、对象1.概念什么是对象?在JavaScript中,对象是一组无序的相关属性和方法集合,所有的事物都是对象,例如:字符串、数值、数组和函数等等。对象是由属性和方法组成的。属性:事物的特征,在对象中属性来表示(常用名词)方法:事物的行为,在对象中用方法来表示(常用动词)手机: 属性—......
  • vue-java分享源码基于Spring Boot框架的学生作业课程管理系统的设计与实现
    目录功能和技术介绍系统实现截图本项目源码获取地址下载开发核心技术介绍:为什么选择最新的Vue与SpringBoot技术核心代码部分展示功能和技术介绍SpringBoot和Vue作为当前主流的技术框架,具有开发效率高、安全性强、用户体验良好等优点。使用开源的SpringBoot框架进行......
  • 基于springboot的某学院勤工俭学岗位兼职平台设计与实现java+vue毕业设计源码
    目录为什么选择最新的Vue与SpringBoot技术功能和技术介绍系统实现截图本项目源码获取地址下载开发核心技术介绍:可行性分析核心代码部分展示为什么选择最新的Vue与SpringBoot技术在本系统由众多子功能模块构成,每个模块各司其职,合作构成整体,这也解释了为何选择采用最......
  • java实现简易计算器
    写一个计算器,实现简单的加减乘除,要求有用户交互。思路:四个方法利用循环,switch输出importjava.util.Scanner;publicclassJiSuanQi{//定义加法、减法、乘法、除法方法publicstaticdoubleadd(doublea,doubleb){returna+b;}publicstaticd......
  • 设计模式--Java面试题
    目录什么是设计模式?你是如何理解设计模式的?设计模式的理解:设计模式的分类:如何使用设计模式:面对一个具体问题,你如何决定使用哪种设计模式?一些常见的问题和对应的设计模式:我想了解在实际项目中如何应用设计模式,有没有具体的案例可以分享?解释创建型、结构型和行为型设计模式的区......
  • 0基础学java之Day06(下午完整版)
       需求1:打印以下图形      ****      ****      ****      for(inti=0;i<3;i++){//控制行数         for(intj=0;j<4;j++){//控制列数            System.out.print("*");//打印一个一个的星号(......
  • 【Java 22 | 3】 深入解析Java 22 :轻量级线程
    Java22轻量级线程特性详细介绍基础介绍轻量级线程(VirtualThreads)是Java平台在Java19中引入的特性,目的是简化并发编程并提高应用程序的可伸缩性。在Java22中,轻量级线程得到了进一步的完善,使得开发者能够更方便地创建和管理大量并发任务。轻量级线程的特点高......
  • 深入理解 JavaScript 异步:掌握 Promise、Async/Await 与 Promise.all 全指南
    博文:深入理解JavaScript中的Promise、await、.then()和Promise.all()在现代JavaScript中,处理异步操作时,Promise、async/await和Promise.all()是关键工具。本文将深入讲解它们的用法及实现,并结合实际例子。1.Promise的基本使用Promise是一种处理异步操作的方式。......