3.31学习总结

news2025/1/17 23:13:46

(本次学习总结,总结了目前学习java遇到的一些关键字和零碎知识点)

一.static关键字

static可以用来修饰类的成员方法、类的成员变量、类中的内部类(以及用static修饰的内部类中的变量、方法、内部类),另外可以编写static代码块来优化程序性能。

1.static修饰类的成员变量

static修饰的成员变量称为静态变量或类变量:

静态变量和非静态变量的区别:

静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。static成员变量的初始化顺序按照定义的顺序进行初始化。

2.static修饰的成员方法

static修饰的成员方法称为静态方法:在静态方法中不能访问类的非静态成员方法和非静态成员变量。但是在非静态方法中可以访问静态成员方法和静态成员变量。

public class Student {
    //静态变量
    public static String name="张三";
    private static String sex="男";
    //非静态变量
    public int age=21;

    //静态方法
    public static void show1(){
        System.out.println(name);
        System.out.println(sex);
        System.out.println(age);
    }

    //非静态方法
    public void show2(){
        System.out.println(name);
        System.out.println(sex);
        System.out.println(age);
    }
}

(可以看到这里我们无法在静态方法中调用非静态成员变量,这里会报错)

3.static修饰代码块

static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次并且静态修饰的代码块最先执行.

public class Daimakuai {
    private String name;
    private int age;

    //构造代码块:
    //1.写在成员位置的代码块
    //2.作用:可以把多个构造方法中重复的代码抽取出来
    //3.执行时机:我们在创建本类对象的时候会先执行代码块中的构造方法
    {
        System.out.println("这里是构造代码块!");
    }

    //静态代码块:
    //随着类的对象创建而加载,同时只运行一次
    static{
        System.out.println("这里是静态代码块!");
    }
    //空参的构造函数
    public Daimakuai() {
    }

    //带参的构造函数
    public Daimakuai(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //get,set方法
    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;
    }
}

从结果我们可以看到,静态的代码块最先得到执行.

4.static修饰内部类

public class Car extends AbsCar {
    //静态内部类中可以用static继续修饰内部类
    static class A {
        static class B {
            static int num0 = 10;
        }
    }
 
    //静态内部类C
    static class C {
        int num1 = 10;
    }
 
    //普通内部类D
    class D{
        int num2 =10;
    }
 
    public static void main(String[] args) {
        int num = A.B.num0;
 
        C c = new C();
        int a = c.num1;
 
    }
  }

二.this关键词

this 关键字是 Java 常用的关键字,可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。

1.this.属性名

大部分时候,普通方法访问其他方法、成员变量时无须使用 this 前缀,但如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用 this 前缀。

当一个类的属性(成员变量)名与访问该属性的方法参数名相同时,则需要使用 this 关键字来访问类中的属性,以区分类的属性和方法中的参数

public class Person {
    private String name;
    private String sex;
    private int age;

    //空参构造
    public Person() {
    }
    //带参构造
    //在构造方法中使用了 this 关键字对属性 name、sex 和 age 赋值,this 表示当前对象。
    public Person(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
}

2.this.方法名

this 关键字最大的作用就是让类中一个方法,访问该类里的另一个方法或实例变量。

大部分时候,一个方法访问该类中定义的其他方法、成员变量时加不加 this 前缀的效果是完全一样的。

public void da() {
    // 使用this引用调用da()方法的对象
    this.jump();
    System.out.println("正在执行da方法");
}

注意:对于 static 修饰的方法而言,可以使用类来直接调用该方法,如果在 static 修饰的方法中使用 this 关键字,则这个关键字就无法指向合适的对象。所以,static 修饰的方法中不能使用 this 引用。并且 Java 语法规定,静态成员不能直接访问非静态成员。

3.this( )访问构造方法

可以使用在构造方法当中,通过当前的构造方法调用其他的构造方法,括号中可以有参数,如果有参数就是调用指定的有参构造方法。

注意:this( ) 不能在普通方法中使用,只能写在构造方法中。在构造方法中使用时,必须是第一条语句。

public class Person {
    String name;
    // 无参构造方法(没有参数的构造方法)
    public Student() {
        this("李四");
    }
    // 有参构造方法
    public Student(String name) {
        this.name = name;
    }
    // 输出name和age
    public void print() {
        System.out.println("姓名:" + name);
    }
}

三.final关键字

final 是 Java 中的一个关键字,可以用于修饰类、方法和变量。当一个类被声明为 final 时,它意味着该类不能被继承。当一个方法被声明为 final 时,它意味着该方法不能被重写。当一个变量被声明为 final 时,它意味着该变量的值不能被修改

1.final修饰类

如果声明一个类为final类,  那么这个类就是最终类,不能被继承,一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写

public final class Parent {
    public void happy() {
        System.out.println("父母");
    }
}

//如果要求继承他则会报错
public class Child extends ParentClass{
 
}

2.final修饰方法

当final用来修饰一个方法的时候,这个方法就是最终方法,那么很明显就是说不能被覆盖重写。

使用final方法的作用:第一个作用是把方法锁定,以防任何继承类修改它的含义;第二个作用是提高效率。

public class ParentClass {
 
    public void happy() {
        System.out.println("高兴");
    }
    
    //用final关键字修饰的方法
    //final修饰的方法,是一个最终方法,不能被子类去覆盖重写
    protected final void play(){
        System.out.println("开心的玩耍");
    }
 
}

3.final修饰变量

当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化;如果final修饰一个引用类型时,则在对其初始化之后便不能再让其指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。

final成员变量表示常量,只能被赋值一次,赋值后值不再改变。

class Animal {
    private final int count = 0;
    public Animal() {
        //只能赋值一次,会报错
        count = 1; 
        final Object object = new Object();
        object = new Object(); //报错
    }
}

注意:final修饰一个成员变量(属性),必须要显示初始化。这里有两种初始化方式,一种是在变量声明的时候初始化;第二种方法是在声明变量的时候不赋初值,但是要在这个变量所在的类的所有的构造函数中对这个变量赋初值。

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

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

相关文章

权限问题(Windows-System)

方法:用命令来写一个注册表的脚本 ?System是最高级用户,但不拥有最高级权限 编写两文档:system.reg 和 remove.reg,代码如下: system.reg: Windows Registry Editor Version 5.00[-HKEY_CLASSES_ROOT\*…

YOLOv5改进 | 低照度检测 | 2024最新改进CPA-Enhancer链式思考网络(适用低照度、图像去雾、雨天、雪天)

一、本文介绍 本文给大家带来的2024.3月份最新改进机制,由CPA-Enhancer: Chain-of-Thought Prompted Adaptive Enhancer for Object Detection under Unknown Degradations论文提出的CPA-Enhancer链式思考网络,CPA-Enhancer通过引入链式思考提示机制&am…

Proteus 12V to 5V buck电路仿真练习及遇到的一些问题汇总

基础电路仿真实验记录贴!!!如有写的不对的地方欢迎交流指正!!! 平台:PC win10 软件:Proteus8.10 仿真目标:buck降压电路(PWM控制输出电压) 写在…

《Lost in the Middle: How Language Models Use Long Contexts》AI 解读

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

MySQL核心命令详解与实战,一文掌握MySQL使用

文章目录 文章简介演示库表创建数据库表选择数据库删除数据库创建表删除表向表中插入数据更新数据删除数据查询数据WHERE 操作符聚合函数LIKE 子句分组 GROUP BY HAVINGORDER BY(排序) 语句LIMIT 操作符 分页查询多表查询-联合查询 UNION 操作符多表查询-连接的使用-JOIN语句编…

选择排序及其优化

目录 思想: 代码: 代码优化: 需要注意的特殊情况: 可能出现的所有特殊情况: 优化完成代码: 思想: 每一次遍历数组,选择出最大或最小的数,将其与数组末尾或首位进行…

Oracle Solaris 11.3开工失败问题处理记录

1、故障现像 起初是我这有套RAC有点问题,我想重启1个节点,结果发现重启后该节点的IP能PING通,但SSH连不上去,对应的RAC服务也没有自动启动。 操作系统是solaris 11.3。由于该IP对应的主机是LDOM,于是我去主域上telnet…

汇编语言第四版-王爽第2章 寄存器

二进制左移四位,相当于四进制左移一位。 debug命令实操,win11不能启动,需要配置文件 Windows64位系统进入debug模式_window10系统64位怎么使用debugger-CSDN博客

扫雷(蓝桥杯)

题目描述 小明最近迷上了一款名为《扫雷》的游戏。其中有一个关卡的任务如下, 在一个二维平面上放置着 n 个炸雷,第 i 个炸雷 (xi , yi ,ri) 表示在坐标 (xi , yi) 处存在一个炸雷,它的爆炸范围是以半径为 ri 的一个圆。 为了顺利通过这片土…

开源博客项目Blog .NET Core源码学习(13:App.Hosting项目结构分析-1)

开源博客项目Blog的App.Hosting项目为MVC架构的,主要定义或保存博客网站前台内容显示页面及后台数据管理页面相关的控制器类、页面、js/css/images文件,页面使用基于layui的Razor页面(最早学习本项目就是想学习layui的用法,不过最…

网络安全 | 网络攻击介绍

关注wx:CodingTechWork 网络攻击 网络攻击定义 以未经授权的方式访问网络、计算机系统或数字设备,故意窃取、暴露、篡改、禁用或破坏数据、应用程序或其他资产的行为。威胁参与者出于各种原因发起网络攻击,从小额盗窃发展到战争行为。采用各…

C语言自定义类型

本篇文章主要介绍三种自定义类型,分别是:结构体、联合体、枚举。 一.结构体 1.结构体类型的声明 直接举一个例子: //一本书 struct s {char name[10]; //名称char a; //作者int p; //价格 }; 2.特殊的声明 结构体也可以不写结构体标…

NVIDIA Jetson Xavier NX入门-镜像为jetpack5(3)——pytorch和torchvision安装

NVIDIA Jetson Xavier NX入门-镜像为jetpack5(3)——pytorch和torchvision安装 镜像为jetpack5系列: NVIDIA Jetson Xavier NX入门-镜像为jetpack5(1)——镜像烧写 NVIDIA Jetson Xavier NX入门-镜像为jetpack5&#…

医院陪诊管理系统(源码+文档)

TOC) 文件包含内容 1、搭建视频 2、流程图 3、开题报告 4、数据库 5、参考文献 6、服务器接口文件 7、接口文档 8、任务书 9、功能图 10、环境搭建软件 11、十六周指导记录 12、答辩ppt模板 13、技术详解 14、前端后台管理(管理端程序) 15、项目截图 1…

CCIE-07-OSPF_TS

目录 实验条件网络拓朴逻辑拓扑实现目标 环境配置开始Troubleshooting问题1. R22的e0/0接口配置了网络类型问题2. R22和R21之间的IP地址子网掩码长度不一致问题3. R21的e0/0口配置了被动接口问题4. R3配置了不一致的hello-time问题5. R21配置了max-metric导致路由无效问题6. R3…

LLM大模型可视化-以nano-gpt为例

内容整理自:LLM 可视化 --- LLM Visualization (bbycroft.net)https://bbycroft.net/llm Introduction 介绍 Welcome to the walkthrough of the GPT large language model! Here well explore the model nano-gpt, with a mere 85,000 parameters. 欢迎来到 GPT 大…

GPUPixel:以光速打造美丽,开源跨平台的实时美颜滤镜库,赋能您的应用尽显商业级影像魅力!- 精选真开源,释放新价值。

GPUPixel:以光速打造美丽,开源跨平台的实时美颜滤镜库,赋能您的应用尽显商业级影像魅力!- 精选真开源,释放新价值。 概览 GPUPixel是一款精心设计并采用现代C11标准编写的高性能图像和视频AI美颜效果处理库,其核心价值…

vue 视频添加水印

1.需求背景 其实腾讯云点播的api也支持视频水印,但是只有单个水印,大概效果是这样子的,不满足我们的需求,我们的需求是需要视频中都是水印。 腾讯云点播水印 项目需求的水印(主要是防录屏,最后的实现效果是这样&…

【前端面试3+1】06继承方式及优缺点、缓存策略、url输入到渲染全过程、【二叉树中序遍历】

一、继承有哪些方式?以及优缺点 继承的方式包括原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承和组合式继承。 1.原型链继承: 实现方式:将子类的原型指向父类的实例来实现继承。优点:简单易懂,代码量少。…

整数删除,蓝桥杯训练题

题目描述: 给定一个长度为 N 的整数数列:A1,A2,…,AN。 你要重复以下操作 K 次: 每次选择数列中最小的整数(如果最小值不止一个,选择最靠前的),将其删除,并把与它相邻的整数加上被删除的数值。 …