java基础6(黑马)
一、static
1.static修饰成员变量
static:叫静态,可以修饰成员变量、成员方法。
成员变量按照有无static,分两种。
类变量:有static修饰,属于类,在计算机中只有一份,会被类的全部对象共享。静态成员变量。
实例变量(对象的变量):无static修饰,属于每个对象。

访问:
类名.类变量(推荐)
对象.类变量(不推荐)
类变量直接放在堆内存中。
类变量:属于类,与类一起加载一次,在堆内存中只有一份,可以被类和类的所有对象共享。
实例变量:属于对象,每个对象都有一份,只能用对象访问。
类变量的应用场景:
在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义类变量来记住。
2.static修饰成员方法
成员方法的分类:
类方法:有static修饰的成员方法,属于类:

成员方法:无static修饰的成员方法,属于对象。

Student类:
package cn.ensource.d2_staticmethod;public class Student {double score;// 类方法public static void printHelloWorld() {System.out.println("Hello World");System.out.println("Hello World");}// 实例方法public void printPass() {System.out.println("成绩:" + (score >= 60 ? "及格" : "不及格"));}
Test测试类:
package cn.ensource.d2_staticmethod;public class Test {public static void main(String[] args) {// 目标:掌握有无static修饰方法的用法// 1. 类方法的用法// 类名.类方法Student.printHelloWorld();// 对象.类方法(不推荐)Student st = new Student();st.printHelloWorld();st.score = 80;st.printPass();// Student.printPass(); // 报错}}
实例方法是不允许使用类名调用。
类方法可以使用类名调;也可以使用实例调,但是不推荐。
static修饰成员方法的应用场景:类方法最常见的应用场景是做工具类。
工具类是什么?
工具类中的方法都是一些类方法,每个方法都是用来完成一个功能的,工具类是给开发人员共同使用的。

3.Static的注意事项
使用类方法和实例方法时的几点注意事项:
类方法中可以直接访问类成员,不可以直接访问实例成员;
实例方法中即可以直接访问类成员,也可以直接访问实例成员(变量和方法);
实例方法中可以出现this关键字,类方法中不可以出现this关键字。
package cn.ensource._d4_static_attention;public class Student {static String schoolName; // 类变量double score;public static void printHelloWorld1() {Student.schoolName = "黑马";Student.printHelloWorld2();// 类方法中不能访问实例变量、实例方法 //System.out.println(score);//printPass();//System.out.println(this);}public static void printHelloWorld2() {System.out.println("Hello World");System.out.println("Hello World");}// 实例方法public void printPass() {Student.schoolName = "黑马";printHelloWorld2();System.out.println(score);printPass2();System.out.println(this); //那取对象}public void printPass2() {}}
只要记住:类方法只能只能访问类成员。
二、Static应用知识
1.代码块
代码块是类的五大成员之一(成员变量、构造器、方法、代码块、内部类)。
Java类生命周期:加载、验证、准备、初始化、卸载。
代码块分为两种:
静态代码块:
格式:static {}
特点:类加载时自动执行,由于类只会加载一次,所以静态代码也只会执行一次。
作用:完成类的初始化,例如:类变量的初始化赋值。
实例代码块:
格式:{}
特点:每次创建对象的时候,,执行实例代码块,并在构造器前执行。
作用:和构造器一样,都是用来完成对象的初始化的,例如:对实例变量进行初始化赋值的。
2.单例设计模式
设计模式:
架构师会使用到设计模式,开发框架,就需要掌握很多设计模式。
在Java基础阶段学习设计模式,将来面试笔试的时候,笔试题目会经常靠到设计模式。
将来会用到设计模式。框架代码中会用到设计模式。
什么是设计模式?(design pattern)
一个问题经常会有n种解法,其中肯定有一种解法是最优的,这种优的解法被人总结出来了,称之为设计模式。
设计模式就是具体问题的最优解决方法。
设计模式有20多种,对应20多种软件开发中会遇到的问题。
单例设计模式:确保一个类只有一个对象。
写法:
1)把类的构造器私有;
2)定义一个类变量记住类的一个对象;
3)定义一个类方法,返回对象。
三、继承
1.概念
继承:Java中提供了一个关键字extends,用这个关键字,可以让一个类和另外一个类建立父子关系。

继承的特点:
子类能继承父类的非私有成员(成员变量、成员方法)。
父类的私有成员,子类是不能继承的。而父类的非私有成员,子类是能继承的。
私有:private
继承后对象的创建:子类的对象是由子类和父类共同完成的。
继承的执行原理:

私有的变量是不能直接访问的,只能通过getter/setter方法进行访问。
k是私有变量,只能自己访问,k通过B的方法去访问并对外开放。
2.权限修饰符
权限修饰符:就是用来限制类中的成员(成员变量、成员方法、构造器、代码块....)能够被访问的范围。

public是公开完全暴露的意思。
protected:在任意包下的子类里。
我们用到的最多的是private和public。
3.单继承、Object类、方法重写
Java 是单继承的,Java中的类不支持多继承,但是支持多层继承。
Object类是所有类的父类。

Object类:Object类是java所有类的祖宗类,我们写的任意一个类,其实都是Object类的子类或子孙类。
方法重写:
当子类觉得父类中的某个方法不好用,或者无法满足自己的需求的时候,子类可以重写一个方法名称、参数列表一样的方法,去覆盖父类的这个方法,这个就称为方法重写。
注意:重写后,方法的方法,Java会遵循就近原则。

方法重写的概念:
子类写了一个方法名称,形参列表与父类某个方法一样的方法,去覆盖父类的该方法。
申明不变,重新实现。
Override的注解:
用来检测当前的方法,是否是重写的方法,起到校验的作用。
方法重写的注意事项:
私有方法不能被重写(父类私有成员子类是不能继承的)
子类方法访问权限不能更低(public->默认->私有)
子类中访问其他成员遵循就近原则
如果指定访问某个成员变量:
局部变量跟成员变量冲突的时候,我们可以使用shis。this代表的是当前对象。
如果要找父类的成员变量,我们就使用super。super代表父类。
4.子类构造器
子类构造器的特点:子类的全部构造器,都会先调用父类的构造器,再执行自己。
子类会继承父类的数据,可能还会使用父类的数据。所以,子类初始化之前,一定先要完成父类数据的初始化,原因在于,每一个子类构造方法的第一条语句默认就是super();
package cn.ensource.d14_extends_constructor;class F{public F() {System.out.println("F类构造器执行了!");}}class Z extends F{public Z() {super();System.out.println("Z类无参构造器执行了!");}public Z(String name) {super();System.out.println("Z类有参构造器执行了!");}}public class Test {public static void main(String[] args) {// 目标:先认识子类构造器的特点,再掌握子类构造器的应用场景Z z1 = new Z();Z z2 = new Z("播妞");}}
执行结果:

可见,不管是子类有参构造器,还是子类无参构造器,都是先调用父类构造器,然后再执行子类构造器。

其实,在子类构造器中,默认会有一个super()存在,不管你调用,还是不调用,都调用这个方法。
super:代表父类存储空间的标识。可以理解为父类对象的引用。
子类构造器可以通过调用父类构造器,把对象中包含父类这部分的数据先进行初始化赋值,再回来把对象里包含子类这部分的数据也进行初始化赋值。
然后t.getter方法,都是到子类和父类中调用相应的的getter方法。
补充知识:
this(...)调用兄弟构造器。
在任意类的构造器中,都可以通过this(...)去调用该类的其他构造器。
5.多态和final、常量
多态是在继承/实现情况下一种现象,表现为:对象多态和行为多态。
同一个对象,在不同时刻表现出来的不同形态。
多态的前提:
要有继承/实现关系
要有方法的重写
要有父类引用指向子类对象。
多态的一个注意事项:
多态对对象、行为的多态,Java中的属性(成员变量)不谈多态。
多态中成员访问特点(记忆):
成员访问特点:
成员变量:编译看父类,运行看父类;
成员方方法:编译看父类,运行看子类;
多态中的成员转型:
向上转型:
父类引用指向子类对象就是向上转型。
向下转型:
格式:子类 对象名 = (子类型)父类引用。
final关键字:final是最终的意思。可以修饰类、方法、变量。
修饰类:该类就被称为最终类,特点是不能被继承了。
修饰方法:该方法是最终方法,特点是不能被重写了。
修饰变量:该变量只能被赋值一次。
常量:使用了static final修饰的成员变量就称为常量。
作用:通常用于记录系统的常量信息。

注意:常量建议名称全部大写,多个单词下划线连接。
6.抽象类和接口概述
抽象类:
当我们在做子类共性功能抽取的时候,有些方法在父类中并没有具体的体现,这个时候就需要抽象类了。在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类就定义为抽象类。
在Java中有一个abstract,它是抽象的意思,可以用它修饰类、成员方法。

package cn.ensource.d4_abstract;// 抽象类public abstract class A {// 抽象方法,必须用abstract修饰,并且只有方法签名,不能有方法体public abstract void run();}

认识接口:Java提供了一个关键字Interface,用这个关键字我们可以定义一个特殊的结构:接口。

注意:接口不能创建对象,接口是用来被类实现(implements)的,实现接口的类称为实现类。
一个类可以实现多个接口(接口可以理解为干爹),实现类实现多个接口,必须重写全部接口的全部抽象方法,否则实现类需要定义成抽象类
7.内部类和
1、 内部类:
是类中五大成分之一(成员变量、方法、构造函数、内部类、代码块),如果一个类定义在另一个 类的内部,这个类就是内部类。
场景:当一个类的内部,包含了一个完整的事物,且这个事物没有必要单独设计时,就可以把这个事物设计成内部类。

内部类的四种形式:
成员内部类:了解
静态内部类:了解
局部内部类:了解
匿名内部类:重点
匿名内部类:(重点)
就是一种特殊的局部内部类;所谓匿名:指的是程序员不需要为这个类声明名字。
匿名内部类:(重点)
就是一种特殊的局部内部类;所谓匿名:指的是程序员不需要为这个类声明名字。

package d3_inner_class3;public class Test {public static void main(String[] args) {// 目标:掌握匿名内部类,并掌握其作用Animal a = new Cat(); // 创建子类对象a.cry();}}class Cat extends Animal {@Overridepublic void cry() {System.out.println("喵喵~");}}abstract class Animal {public abstract void cry();}
匿名内部类有啥特点:
匿名内部类本质上就是一个子类,并会立即创建出一个子类对象。
匿名内部类有啥作用、应用场景?
可以更方便创建出一个子类对象。
匿名内部类通常作为一个参数传递给方法。
相关文章:
java基础6(黑马)
一、static 1.static修饰成员变量 static:叫静态,可以修饰成员变量、成员方法。 成员变量按照有无static,分两种。 类变量:有static修饰,属于类,在计算机中只有一份,会被类的全部对象共享。…...
Transformer 详解:了解 GPT、BERT 和 T5 背后的模型
目录 什么是 Transformer? Transformer如何工作? Transformer 为何有用? 常见问题解答:机器学习中的 Transformer 在技术领域,突破通常来自于修复损坏的东西。制造第一架飞机的人研究过鸟类。莱特兄弟观察了秃鹫如何在气流中保持平衡,意识到稳定性比动力更重要。…...
Ollama命令使用指南
Ollama 命令使用指南 Ollama 命令使用指南1. Ollama 命令概览2. Ollama 命令详解2.1 启动 Ollama2.2 创建模型2.3 查看模型信息2.4 运行模型2.5 停止运行的模型2.6 从注册表拉取模型2.7 推送模型到注册表2.8 列出本地模型2.9 查看正在运行的模型2.10 复制模型2.11 删除模型 3. …...
【Prometheus】MySQL主从搭建,以及如何通过prometheus监控MySQL运行状态
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
上传文件防木马函数
项目环境:TP6、TP5 问题:解决旧项目中上传上来的文件校验不严格。导致会有木马文件入侵的情况发生。除了上篇博文中提及的限制上传文件存储的目录不可执行php文件外。仍需在入口处严格检验上传文件的类型,排除php类可执行文件上传。 解决&a…...
百问网imx6ullpro调试记录(linux+qt)
调试记录 文章目录 调试记录进展1.开发板相关1.1百问网乌班图密码 1.2 换设备开发环境搭建串口调试网络互通nfs文件系统挂载 1.3网络问题1.4系统启动1.5进程操作 2.QT2.1tslib1.获取源码2.安装依赖文件3.编译 2.2qt移植1.获取qt源码2.配置编译器3.编译 2.3拷贝到开发板1.拷贝2.…...
人脸识别与人脸检测技术
人脸识别技术,作为一种基于人的脸部特征信息进行身份识别的生物识别技术,近年来在人工智能和计算机视觉技术的推动下取得了显著进展。它利用摄像机或摄像头采集含有人脸的图像或视频流,自动在图像中检测和跟踪人脸,进而对检测到的人脸进行一系列计算和分别判断。这一技术不…...
前端性能分析常见内容
前端性能分析是前端开发中的重要部分,以下是对前端常考性能分析题目的详解: 一、性能指标 前端性能优化的核心目标是提升用户体验,常见的性能指标包括: 加载时间(Load Time):指从用户发出请求…...
ZEMAX POPD操作数
在Zemax中,POPD(Physical Optics Propagation Data) 是一个用于物理光学传播(POP)分析的关键操作数,主要用于优化或分析光束的物理特性(如束腰、发散角、M因子等)。以下是对其使用方…...
ansible使用学习
一、查询手册 1、官网 ansible官网地址:https://docs.ansible.com 模块查看路径:https://docs.ansible.com/ansible/latest/collections/ansible/builtin/index.html#plugins-in-ansible-builtin 2、命令 ansible-doc -s command二、相关脚本 1、服务…...
VS2022中cmath.h头文件功能介绍
在C语言的世界里,数学运算一直是程序开发中不可或缺的一部分。无论是进行简单的数值计算,还是处理复杂的科学工程问题,都需要借助数学函数来实现。在Visual Studio 2022(VS2022)中,cmath.h(在C语…...
基于 PyTorch 的树叶分类任务:从数据准备到模型训练与测试
基于 PyTorch 的树叶分类任务:从数据准备到模型训练与测试 1. 引言 在计算机视觉领域,图像分类是一个经典的任务。本文将详细介绍如何使用 PyTorch 实现一个树叶分类任务。我们将从数据准备开始,逐步构建模型、训练模型,并在测试…...
【STM32系列】利用MATLAB配合ARM-DSP库设计IIR数字滤波器(保姆级教程)
ps.源码放在最后面 设计FIR数字滤波器可以看这里:利用MATLAB配合ARM-DSP库设计FIR数字滤波器(保姆级教程) 设计IIR滤波器 MATLAB配置 设计步骤 首先在命令行窗口输入"filterDesigner",接着就会跳出以下界面…...
如何在本地部署deepseek?
1、打开ollama官网,点download(下载需要翻墙 https://ollama.com/ 2、双击下载好的OllamaSetup.exe,一直点下一步即可。 3、winR 输入cmd,打开命令提示符,输入ollama。有以下提示即安装完成。 4、可以根据 nvidia-…...
AJAX项目——数据管理平台
黑马程序员视频地址: 黑马程序员——数据管理平台 前言 功能: 1.登录和权限判断 2.查看文章内容列表(筛选,分页) 3.编辑文章(数据回显) 4.删除文章 5.发布文章(图片上传࿰…...
MarsCode AI插件在IntelliJ IDEA中使用
文章目录 前言一、MarsCode是什么?二、下载三、使用1、登录2、操作界面3、生成代码4、解释代码5、注释代码6、生成单测7、智能修复8、代码补全 总结 前言 随着 AI 技术浪潮席卷而来,各类 AI 工具呈爆发式涌现,深度融入我们的日常与职场&…...
如何将网站提交百度收录完整SEO教程
百度收录是中文网站获取流量的重要渠道。本文以我的网站,www.mnxz.fun(当然现在没啥流量) 为例,详细讲解从提交收录到自动化维护的全流程。 一、百度收录提交方法 1. 验证网站所有权 1、登录百度搜索资源平台 2、选择「用户中心…...
基于 SVPWM 的异步电机直接转矩控制系统的研究与仿真
标题:基于 SVPWM 的异步电机直接转矩控制系统的研究与仿真 内容:1.摘要 摘要:本文主要研究了基于 SVPWM 的异步电机直接转矩控制系统。首先,介绍了异步电机直接转矩控制的基本原理和 SVPWM 技术的特点。然后,详细阐述了系统的设计方法&#…...
C# OpenCV机器视觉:SoftNMS非极大值抑制
嘿,你知道吗?阿强最近可忙啦!他正在处理一个超级棘手的问题呢,就好像在一个混乱的战场里,到处都是乱糟糟的候选框,这些候选框就像一群调皮的小精灵,有的重叠在一起,让阿强头疼不已。…...
生信云服务器:让生物信息学分析更高效、更简单【附带西柚云优惠码】
随着生物信息学的快速发展,基因组测序、单细胞分析等复杂任务逐渐成为研究者们的日常工作。然而,个人电脑在处理这些任务时往往面临性能瓶颈,如内存不足、运算速度慢等问题,导致分析任务频繁失败或崩溃。为了解决这一难题…...
【清晰教程】通过Docker为本地DeepSeek-r1部署WebUI界面
【清晰教程】本地部署DeepSeek-r1模型-CSDN博客 目录 安装Docker 配置&检查 Open WebUI 部署Open WebUI 安装Docker 完成本地DeepSeek-r1的部署后【清晰教程】本地部署DeepSeek-r1模型-CSDN博客,通过Docker为本地DeepSeek-r1部署WebUI界面。 访问Docker官…...
AI知识库和全文检索的区别
1、AI知识库的作用 AI知识库是基于人工智能技术构建的智能系统,能够理解、推理和生成信息。它的核心作用包括: 1.1 语义理解 自然语言处理(NLP):AI知识库能够理解用户查询的语义,而不仅仅是关键词匹配。 …...
Flink-序列化
一、概述 几乎每个Flink作业都必须在其运算符之间交换数据,由于这些记录不仅可以发送到同一JVM中的另一个实例,还可以发送到单独的进程,因此需要先将记录序列化为字节。类似地,Flink的堆外状态后端基于本地嵌入式RocksDB实例&…...
快速部署 DeepSeek R1 模型
1. DeepSeek R1 模型的介绍 DeepSeek R1 模型是专为自然语言处理(NLP)和其他复杂任务设计的先进大规模深度学习模型 ,其高效的架构设计是一大亮点,能够更高效地提取特征,减少冗余计算。这意味着在处理海量数据时&…...
Java全栈项目实战:在线课程评价系统开发
一、项目概述 在线课程评价系统是一款基于Spring Boot Vue3的全栈应用,面向高校师生提供课程评价、教学反馈、数据可视化分析等功能。系统包含Web管理端和用户门户,日均承载10万课程数据,支持高并发访问和实时数据更新。 项目核心价值&…...
数据库系统概念第六版记录 四
1.sql组成 SQL 是最有影响力的商用市场化的关系查询语言。SQL 语言包括几个部分: 数据定义语言(DDL) ,它提供了定义关系模式、删除关系以及修改关系模式的命令。 数据操纵语言(DML) ,它包括查询语言,以及往数据库中插入元组、从数据库中删…...
无人机飞行试验大纲
无人机飞行试验大纲 编制日期:2025年02月11日 一、试验目的与背景 本次无人机飞行试验旨在验证无人机的飞行性能、控制系统稳定性、机体结构强度以及各项任务执行能力。随着无人机技术在各个领域的广泛应用,对其性能进行全面、系统的测试显得…...
DeepSeek在FPGA/IC开发中的创新应用与未来潜力
随着人工智能技术的飞速发展,以DeepSeek为代表的大语言模型(LLM)正在逐步渗透到传统硬件开发领域。在FPGA(现场可编程门阵列)和IC(集成电路)开发这一技术密集型行业中,DeepSeek凭借其…...
DeepSeek-V3 的核心技术创新
DeepSeek-V3 的核心技术创新 flyfish DeepSeek-V3 的核心技术创新主要体现在其架构设计和训练目标上,通过 多头潜在注意力(MLA)、DeepSeekMoE 架构、无辅助损失的负载均衡策略 和 多 Token 预测训练目标(MTP) 1. 多…...
函数指针(Function Pointer)与 typedef int (*FuncPtr)(int, int);typedef与using(更推荐)
C 函数指针(Function Pointer)详解 函数指针是指向函数的指针,它可以存储函数地址,并通过该指针调用函数。函数指针在回调函数、策略模式、动态函数调用等场景中非常有用。 1. 什么是函数指针? 函数指针是一个指向函…...
