JavaSE07_static和final

news2024/12/26 21:04:56

JavaSE-07 【static-final】

第一章 static关键字

1.1 静态static关键字概述

  • static关键字
    • 一个类的不同对象有些共享的数据,这样我们就可以使用static来修饰 。
    • 一旦使用了static关键字,那么这样的内容不再属于对象,而是属于类的,
    • 凡是本类的对象,都共享同一份。
    • static可以用来修饰成员变量,修饰成员方法,以及静态代码块

1.2 静态static关键字修饰成员变量

  • static修饰成员变量
    • 1、static修饰成员变量,那么此变量就不属于对象,而是属于所在的类
    • 2、本类的多个对象共享此变量
    • 3、调用方式:可以使用对象名调用,也可以使用类名调用
    • 4、推荐使用 类名.静态属性名调用。不推荐使用对象名调用
/**
 * 1、模板类
 */
public class Student {
    private String name;
    private int age;
    public static String address;//定义静态变量

    public Student() {
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
/**
 * static修饰成员变量
 *  1、static修饰成员变量,那么此变量就不属于对象,而是属于所在的类
 *  2、本类的多个对象共享此变量
 */
public class TestStaticFiled {
    public static void main(String[] args) {
        //创建对象
        Student s1 = new Student("Tom", 22);
        //设置静态变量的属性值
        s1.address = "迈阿密";
        //获取对象的属性值
        System.out.println(s1.getName()+" : "+s1.getAge()+"岁, 来自: "+s1.address);
        //创建对象
        Student s2 = new Student("Anny", 19);
        //获取对象的属性值
        System.out.println(s2.getName()+" : "+s2.getAge()+"岁, 来自: "+s2.address);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CQ7iwc0S-1686187990707)(photo/JavaSE07_static和final.assest/1664898331639.png)]

1.3 静态static关键字修饰成员方法

  • static修饰成员方法
    • 1、使用static修饰成员方法,那么方法就成为静态方法
    • 2、静态方法不属于对象,属于类
    • 3、调用方式:类名称.方法名();
    • 4、推荐使用类名.静态方法名调用。不推荐使用对象名调用
    • 5、对于本类中的静态方法之间的调用,可以省略类名称
  • 注意事项:
    • 1、静态只能调用静态,不能调用费静态
    • 2、非静态可以访问静态
    • 3、原因:在内存中,先有的静态内容,后有的非静态内容。后可以访问先,先不能访问后
    • 4、静态方法中不能使用this
public class Person {
    //成员方法
    public void method1(){
        System.out.println("普通成员方法");
    }
    //静态成员方法
    public static void staticMethod(){
        System.out.println("静态成员方法");
    }
}
/**
 * static修饰成员方法
 *  1、使用static修饰成员方法,那么方法就成为静态方法
 *  2、静态方法不属于对象,属于类
 *  3、调用方式:类名称.方法名();
 *  4、推荐使用类名.静态方法名调用。不推荐使用对象名调用
 *  5、对于本类中的静态方法之间的调用,可以省略类名称
 */
public class TestStaticMethod {
    public static void main(String[] args) {
        //创建Person对象
        Person p = new Person();
        //对象调用普通方法
        p.method1();
        //对于静态方法,可以通过对象名进行调用,也可以通过类名调用成员方法
        p.staticMethod();//不推荐
        Person.staticMethod();//推荐
        
        //对于本类中的静态方法之间的调用,可以省略类名称
        methodA();
    }
    
    public static void methodA(){
        System.out.println("AAAAA");
    }
}

1.4 静态static的内存图

在内存图的方法区当中,有一块独立的空间,叫静态区,专门用来存储静态static的数据。

根据类名称访问静态成员变量的时候,全程和对象没有任何关系。

img

1.5 静态代码块

  • 格式:
static{
    //静态代码块的内容
}
  • 特点
    • 1、当类加载的时候,静态代码块一起加载,且只执行一次
    • 2、静态优先于非静态,所以静态代码块优先于构造方法执行
    • 3、一般用来一次性的对静态成员变量进行赋值
public class User {
    //静态代码块
    static {
        System.out.println("静态代码块执行了");
    }
    //无参构造方法
    public User() {
        System.out.println("无参构造执行了");
    }
}
/**
 * 静态代码块
 *  格式:
 *      static{
 *          //静态代码块的内容
 *      }
 *  特点:
 *      1、当类加载的时候,静态代码块一起加载,且只执行一次
 *      2、静态优先于非静态,所以静态代码块优先于构造方法执行
 *      3、一般用来一次性的对静态成员变量进行赋值
 */
public class TestStaticCodeDiv {
    public static void main(String[] args) {
        User user1 = new User();
        User user2 = new User();
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jbH13ypt-1686187990708)(photo/JavaSE07_static和final.assest/1664900426184.png)]

第二章 final关键字

2.1 final关键字的概念

  • 定义:final表示最终的,不可改变的

2.2 final的四种用法

  • 四种用法:
    • 1、用于修饰类 : final修饰的类不能被继承
    • 2、用于修饰方法:
      • final修饰的方法不能被重写
      • final不能和abstract关键字一起使用,因为两者矛盾
    • 3、用于修饰局部变量
      • final修饰局部变量不可被修改
      • 对于基本类型来说:final修饰的局部变量不可变的是其数据值
      • 对于引用数据类型:final修饰的局部变量不可变的是地址值
    • 4、用于修饰成员变量
      • fianl修饰成员变量,那么这个变量也是不可变的
      • 1、由于成员变量有默认值,所以使用final关键字之后,必须手动赋值。不会再给默认值
      • 2、对于final修饰的成员变量,要么直接赋值,要么使用构造方法赋值

:final修饰的局部变量不可变的是其数据值
- 对于引用数据类型:final修饰的局部变量不可变的是地址值

  • 4、用于修饰成员变量
    • fianl修饰成员变量,那么这个变量也是不可变的
    • 1、由于成员变量有默认值,所以使用final关键字之后,必须手动赋值。不会再给默认值
    • 2、对于final修饰的成员变量,要么直接赋值,要么使用构造方法赋值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/622540.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过python封装接口seller_nick获取阿里巴巴店铺所有商品数据,阿里巴巴店铺所有商品数据接口,阿里巴巴API接口

今天给大家分享一个大体的思路和代码示例。请确保采集过程遵循相关网站的使用规则和政策。 使用阿里巴巴开放平台提供的API接口文档,找到seller_nick接口的具体参数及请求方式。使用ython中的requests库发送请求,获取接口返回的数据。对返回的数据进行处…

深度解读新档案法①:企业如何提高档案管理规范性?

上一次,我们列举了关于档案管理需要遵守的法律法规清单,想要了解详情的,可点击添加链接描述。关于如何依法进行档案管理,许多朋友仍有疑问。为此,我们开设了一个专栏,结合企业实践案例,详细解读…

7.5寸_Wifi标签功耗电流计算-单面屏幕-1.8V的Flash测试

7.5寸黑白屏幕Wifi标签不工作的时候电流的消耗主要来自两部分: 待机时,醒来监听时。经过测量,7.5寸黑白屏幕Wifi标签的待机电流是7.04uA , 醒来监听的峰值电流是80.1 mA。7.5寸黑白屏幕Wifi标签系统设定每间隔1秒醒来一次监听是否有唤醒数据…

PPT制作能力在职场中真的重要吗?一定要美术功底才能学好PPT吗?

前言 年轻时手握技术实力这把剑,我觉得闯荡江湖到处可以“仗义出剑”。实际做到一定级别后特别是我做到了架构师后发觉当不具备PPT能力后,我这条路反而越走越坚难了。 2009年时因为工作关系被企业推送了TOGAF培训,培训后以优秀的成绩拿到了…

vite+Vue3 createWebHistory 路由前缀配置

vue 作为前端最火的前端框架之一,大家在使用的过程中必不可少需要使用router(路由)。 路由有hash 和 history 两种,本期主要针对history模式下 路由前缀 使用和配置,进行简单介绍。 env变量 在根目录下,创建开发、测试、灰度、…

几种常见的 Python 数据结构

摘要:本文主要为大家讲解在 Python 开发中常见的几种数据结构。 数据结构和序列 元组 元组是一个固定长度,不可改变的 Python 序列对象。创建元组的最简单方式,是用逗号分隔一列值: In [1]: tup 4, 5, 6 当用复杂的表达式定义…

开放网关架构演进

淘宝开放平台是阿里与外部生态互联互通的重要开放途径,通过开放的产品技术把阿里经济体一系列基础服务,像水、电、煤一样输送给我们的商家、开发者、社区媒体以及其他合作伙伴,推动行业的定制、创新、进化, 并最终促成新商业文明生态圈。 开放…

最新ChatGPT网站源码+支持GPT4.0+Prompt设定+ai绘画+GPT3.5 API绘画+语音识别输入!

前言 程序已支持ChatGPT4.0、Midjourney绘画、GPT3.5 绘画、语音识别输入、文章资讯发布功能、用户每日签到功能一键更新版本。支持手机电脑不同布局页面自适应。 1、提问:程序已经支持GPT3.5、GPT4.0接口 2、支持三种Ai绘画模型(Midjourney模型、GPT3.5…

苹果Vision Pro物料成本曝光,3499美金售价原来是这样来的

苹果首款头显Vision Pro售价3499美元,近期网上流出了Vision Pro的物料清单(BOM),清单显示,Vision Pro物料成本约1509美元。 其中,二片内屏占700美元,为成本最高的零组件,由索尼供应…

谁说不可兼得,用scrcpy实现手机免流播放bilibili投屏电脑

目前的手机大额流量卡都是支持设备免流的,但是如何将这个流量用在其他设备,就相当麻烦。于是我查找了些相关Android投屏技术资料,发现了一个简单的USB投屏工具——scrcpy。 安装说明 Office:https://github.com/Genymobile/scrcp…

【JVM】JVM收集器CMS与G1区别

文章目录 区别一: 使用范围不一样区别二: STW的时间区别三: 垃圾碎片区别四: 垃圾回收的过程不一样CMS回收垃圾的4个阶段CMS的总结和优缺点G1回收器的特点大对象的处理G1回收垃圾的4个阶段什么情况下应该考虑使用G1G1设置参数 CMS…

Spark运行原理

1.BlockManager BlockManager是Spark的分布式存储系统 主从结构:BlockManagerMaster/BlockManager(Slave) BlockManagerMaster 在Driver端启动 :负责接受Executor上的BlockManager的注册 管理BlockManager的元数据信息 BlockMana…

浅谈养老所消防安全存在的问题与解决方案 安科瑞 许敏

1养老场所消防安全存在的问题 1.1筑物耐火等级低 养老场所新建的建筑较少,尤其是对于民办养老场所来说,大部分都是以原有的民房、工厂厂房、废弃学校等修建起来,通过简单的改造,而后演变成养老基地。这些建筑整体耐火等级不够&am…

海康工业相机WPF打开方式

1.通过nuget安装Gige和imageLibrary GitHub - Touseefelahi/GigeVision: Simple GigeVision implementation, GVSP, GVCP protocol implemented 2.窗体布局xaml代码 <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/x…

面向对象学习笔记

常见代码块应用 局部代码块 在方法中出现&#xff0c;限定变量的生命周期构造代码块&#xff08;初始化块&#xff09; 在类中方法外出现&#xff0c;多个构造方法方法中相同的代码存放到一起&#xff0c;每次调用构造都执行&#xff0c;在调用构造方法前执行静态代码块 在类中…

达摩院+华为 | NLP博士的春招历程

作者 | luan2006 整理 | NewBeeNLP 面试锦囊之面经分享系列&#xff0c;持续更新中 赶紧后台回复"面试"加入讨论组交流吧 写在前面 本博均985&#xff08;不同校&#xff09;、现北京Top2计算机类博士生、方向为人工智能-自然语言处理。 个人优势&#xff1a;绩点年…

PeekingDuck

介绍 计算机视觉项目可能会非常令人望而生畏&#xff0c;涉及到各种工具和包&#xff0c;如OpenCV、TensorFlow和PyTorch等等。不仅需要熟悉所涉及的工具和API&#xff0c;还需要正确组合各个包&#xff0c;以使整个计算机视觉流水线正常工作。 例如&#xff0c;OpenCV以[H&…

玩转百问网东山Pi壹号-SSD202 Linux开发板(一)

点击上方“嵌入式应用研究院”&#xff0c;选择“置顶/星标公众号” 干货福利&#xff0c;第一时间送达&#xff01; 来源 | 嵌入式应用研究院 整理&排版 | 嵌入式应用研究院 很早之前就做过SSD20x相关的平台&#xff0c;刚好手里有一块东山Pi壹号-开发板&#xff0c;于是我…

儿童睡眠慢波的起源、同步和传播

摘要 目的&#xff1a;使用EEG delta功率(&#xff1c;4Hz)测量的睡眠慢波活动在整个发育过程中发生显著变化&#xff0c;反映了大脑功能和解剖结构的变化。然而&#xff0c;个体慢波特征随年龄的变化尚未被彻底研究。在这里&#xff0c;本研究旨在表征儿童期到成年期的个体慢…

Redis从入门到精通【高阶篇】之底层数据结构简单动态字符串(SDS)详解

文章目录 1.原理解析1.1.SDS的内部实现原理1.1.1 Redis 6.0版本和Redis5.0对比1.1.2 redis6和redis5对比1.1.3 优势1.1.3.1. 动态扩容1.1.3.2. 常数复杂度获取字符串长度1.1.3.3. 杜绝缓冲区溢出1.1.3.4. 减少修改字符串的内存重新分配次数1.1.3.5. 二进制安全1.1.3.6. 兼容部分…