IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java基础学习笔记-类的静态属性和静态方法 -> 正文阅读

[Java知识库]Java基础学习笔记-类的静态属性和静态方法

程序运行时的内存占用

代码区(code area) 存放代码
数据区(data area) 存放全局数据、静态数据
堆区(heap area) 存放动态申请的数据
栈区(stack area) 存放局部数据、参数

Static

  • 用static修饰的变量称为静态属性,又叫类变量
  • 用static修饰的方法称为静态方法,又叫类方法(静态方法里,无this)
  • 用来修饰初始化语句块,称为静态初始化语句块

类的静态属性和静态方法

  • 即使没有创建该类的具体对象,类中的static类成员也会存在,这时可以通过:
    类名.静态变量
    类名.静态方法

  • static方法中不能直接调用非static的域或方法(必须通过对象名引用)。
    static函数并不需要先产生任何对象,就可以通
    过类名来调用。
    non-static数据/函数和对象绑定
    在static函数中“直接”取用non-static数据/函数,会产生语法错误。

静态代码块

只能定义在类里,独立于任何方法,不能定义在方法里
里面的变量都是局部变量
会在类被加载时自动执行
一个类中允许定义多个静态代码块,执行顺序=定义顺序
只能访问类的静态成员,不允许访问实例成员(说实话这个我没太搞懂,我再学习一下然后会回来,把这里补一下我的大白话理解)

实例成员通俗理解

  • 在类里写的方法就是 成员方法
  • 在类里可以直接定义一些变量 成员变量(就是不是写在方法里的那些)

静态代码块与非静态代码块的异同点

  • 相同点:
  1. 都在JVM加载类时且在构造方法执行之前执行,在类中可定义多个
  2. 在代码块中对一些static变量进行赋值
  • 不同点:
  1. 静态代码块在非静态代码块之前执行
    静态代码块—>非静态代码块—>构造方法
  2. 静态代码块在第一次new执行一次,之后不再执行
    非静态代码块在每new一次就执行一次

通俗理解

  • 静态代码块就是项目启动的时候随着类就被加载了,可以随时随地调用了
  • 其他的没有加static的都是要调用的时候才会加载
  • 区别就是,加载的时间不一致

示例代码 代码地址

// package com.sun.xxx // 这个 是包名
public class Persion {
    // 1.上面的那个Publuc控制是否其他的类可以调用这个类的方法属性
    String name; // instance variable
    String sex; // instance variable
    int age; // instance variable
    private static int count; // 类变量class variable 在全局分配内存

    public static int getCount() { // 类方法 class method
        return count;
    }

    public Persion(String n, String s, int a) { // constructor
        name = n;
        sex = s;
        age = a;
        count++;
    }

    public String toString() { // instance method
        String s = "姓名:" + name + ", 性别:" + sex + ", 年龄:" + age;
        return s;
    }
}

public class TestPerson {
    public static void main(String[] args) {
        Persion p1 = new Persion("哇咔咔", "女", 1); // 这个代码调用了constructor的count++;
        System.out.print("p1.getCount():" + p1.getCount() + "\n"); // 1
        System.out.print("Persion.getCount():" + Persion.getCount() + "\n"); // 1
        Persion p2 = new Persion("哇咔咔2", "女", 2);
        System.out.print("p2.getCount():" + p2.getCount() + "\n"); // 2
        System.out.print("Persion.getCount():" + Persion.getCount() + "\n"); // 2
        Persion p3 = new Persion("哇咔咔3", "女", 3);
        System.out.print("p3.getCount():" + p3.getCount() + "\n"); // 3
        System.out.print("Persion.getCount():" + Persion.getCount() + "\n"); // 3
        System.out.print("p3.getCount():" + p1.getCount() + "\n"); // 3
        System.out.print("p3.getCount():" + p2.getCount() + "\n"); // 3
        System.out.print("p3.getCount():" + p3.getCount() + "\n"); // 3
    }
}

在这里插入图片描述

这是我作为一名前端,第一次学习JAVA,如果本文有错误,欢迎路过的小哥哥小姐姐们帮助我纠正错误哦~~

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-29 22:56:59  更:2022-01-29 22:58:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:09:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码