当前位置: 首页 > news >正文

java基础+面向对象

Java基础语法

CMD命令

cls 清屏

cd 目录进入文件

cd… 退回

dir 查看当前目录所有文件

E:进入E盘

exit 退出

环境变量就是不用去专门的盘符去找,直接去环境变量里找到文件


语言优势

编译型语言c: 整体翻译

解释型语言python: 不用翻译直接把源文件交给操作系统

混合型语言java: 翻译成.class文件后交给虚拟机处理

跨平台原理:针对不同的操作系统安装不同的虚拟机就可以了


JDK和JRE

JDK: JVM 核心类库 开发工具(包含运行工具)

JRE没有开发工具,只需要运行就可以了


计算机存储

数字是二进制保存,字母和汉字是asc码表保存的

二进制:0b开头

十进制:无前缀

八进制:0开头

十六进制(0-9和a-f组成):0x开头

1字节 = 8比特

1kb = 1024字节

1mb = 1024kb

1gb = 1024mb

1tb = 1024gb

因为计算机采用的二进制计数,对于储存容量来说用2的幂次来划分更加自然和方便

2^10次方 = 1024


数据类型

byte 1字节

short 2字节

int 4字节

long 8字节

float 4字节

double 8字节

char 2字节

boolean 虚拟机没有明确规范,但是通常用1字节

内存单位是字节,位是比特,所以float是32位,double是64位

image-20250227083444072

image-20250227083454538


标识符规则

方法变量:小驼峰

类名:大驼峰

数字,字母,_ $组成

不能由数字开头


键盘录入

Scanner sc = new Scanner(System.in);
int a = sc.nextInt();

nextInt(); 接收整数

nextDouble(); 接受小数

next(); 接收字符串,没有空格

nextLine(); 接收字符串,带空格


小数运算不准确

image-20250227084152787

整数可以用二进制表示,对于小数二进制很大,无法用有限的二进制来表示小数,只能截取一部分,所以会有误差

float是4字节32位,double是8字节64位,所以多出来部分会截取


隐式转换和强制转换

隐式转换(小 -> 大)

image-20250227085051702

image-20250227085102315 image-20250227085129753

强制转换

image-20250227085155675

数据过大会出现错误


字符计算

image-20250227085245047

记忆 大小写相差32,小写字母大

0——9 对应48——57

asc码表一共0——127,128个字符

2^7 = 128


方法

image-20250227162757337

方法重载

image-20250227162839608

方法会进入栈内存,从main方法开始,执行完毕出栈,先进后出

引用数据类型保存在堆内存,栈内存指向堆内存地址

方法值的传递

传递基本数据类型传递的是真实值,形参改变不会影响实际参数

传递引用数据类型传递的是地址值,形参改变会影响实际参数


this

代表方法调用者的地址值

image-20250227164047396

image-20250227164118686

成员变量默认初始值

整数类型:0

浮点类型:0.0

字符类型:\u0000 空字符,对应ASCII码值为0

布尔类型:false

引用数据类型:null


构造方法

创建对象的时候给成员变量初始化的

没有构造方法虚拟机会自动创建一个空参构造

如果有带参构造,就不会创建空参构造,用空参构造会报错

image-20250227164745808

对象的内存关系

类加载:.class文件在方法区加载,static,final修饰的成员变量是属于类的,所以存放在方法区

创建对象:在堆内存中开辟空间存放对象的成员变量,成员方法在方法区中

堆内存保存的是成员变量的具体数据,成员方法是保存在方法区的,但是成员变量的信息也会保存在方法区里

实例:单独的对象(堆内存)

静态:属于类,整体(方法区)


局部变量和成员变量

局部变量是在栈内存中

成员变量是在堆内存中

生命周期:局部变量随着方法消失而消失,成员变量随着对象的消失而消失

作用域:局部变量是整个方法,成员变量是整个类

main方法中定义的int a = 10;属于局部变量

创建对象的时候,需要定义这个类的局部变量去指向new出来的对象

image-20250227170921148

image-20250227171217799 此时没有被局部变量指向,但是堆内存中还是会开辟一定空间创建对象

但是后续JVM会执行垃圾回收,在合适的时机回收该对象占用的堆内存空间


面向对象进阶

static静态变量

属于整个类,随着类加载而加载,可以直接用**类名.**来调用

静态变量随着类加载而加载,优先于对象的创建

静态变量会随着类的加载而加载到堆内存的静态区中

工具类方法一般定义为静态方法
image-20250301121543568

image-20250301121620062

静态方法会去静态区找静态变量,此时没有new关键字,所以堆内存中没有开辟对象的储存空间,无法找到

当new了一个对象后,堆内存这块对象地址可以访问到静态区的静态变量的内容,所以非静态可以访问静态

静态区

事实上没有静态区这个概念,在jvm的虚拟内存中,有栈内存,堆内存,方法区,这三个

栈内存主要存放局部变量和方法调用的上下文,堆内存用于存储对象实例,方法区用于存储类的相关信息

实例对象new的时候会申请在堆内存开辟空间来存储实例变量(成员变量)

当 Java 虚拟机加载一个类时,会把这个类的所有信息,包括静态方法的字节码指令,都加载到方法区中

静态变量随着类的加载而加载到方法区中,这个方法区存放一些公开的数据,包括成员方法,不管他是实例还是静态,都储存在方法区

然后一部分成员变量的信息也会储存在方法区,JDK8以后,引入了元空间,和方法区类似,但使用的是本地内存,解决了内存溢出等问题


修饰符

访问控制修饰符

public(任何地方访问)
private(本类中访问)
protected(同一个包内访问,不同包的子类访问)
默认(同一个包内访问)

image-20250301145518139 ·

非访问控制修饰符

static 属于类本身,不属于实例
final 修饰类不能被继承,修饰方法不能被重写,修饰变量不能被修改,为常量(单个单词全部大写,多个单词全部大写用_隔开)

image-20250301145359238

synchronized 修饰方法 保证同一时刻只有一个线程可以访问,实现线程同步
abstract 修饰类为抽象类,不能被实例化;修饰方法为抽象方法,没有方法体,必须在子类中实现


继承

image-20250301122335078

虚方法就是非private非static非final

object类一共有5个虚方法

继承的内存图

image-20250301122712262

创建子类对象的时候先加载父类后加载子类.class文件(包含成员变量和成员方法)到方法区

new的时候,父类和子类的成员变量共用一块地址

赋值的时候,z.name 先去子类找name,没有的话就去父类找name赋值


子类重写父类虚方法

image-20250301123706152

重写后,子类中被重写的那个方法就会被覆盖

构造方法

父类的构造方法不会被继承

子类初始化之前,一定要调用父类构造方法先完成父类的数据空间的初始化super();

由虚拟机自动调用,因为子类可能会访问父类中的成员变量,所以会默认调用父类的空参构造初始化成员变量


多态

image-20250301125219791

父类引用指向子类对象

Fu f = new zi();

用多态方法创建对象的时:访问成员变量(编译运行都看左)访问成员方法(编译看左,运行在右)

就是访问成员变量,如果父类有这个成员变量,编译成功,反之编译失败,运行的时候显示的也是父类的成员变量

当访问成员方法的时候,如果父类没有这个成员方法,编译失败,运行的是子类的成员方法(因为重写了子类的方法,会把继承下来的父类方法覆盖了,只有子类方法)

所以多态的弊端就是不能调用子类的特有方法(必须父类中有才能编译成功)

多态的优势:方法中,使用父类型作为参数,可以接收所有子类对象


包就是文件夹,在使用同一个包中的类的时候和使用java.lang包下的类的时候不需要导包

其他情况都需要导包,如果使用两个包中的同名类的时候,需要用全类名


静态代码块

static{}

随着类的加载而加载,只执行一次

使用场景:类加载过程中,对一些数据进行初始化的


抽象

abstract

image-20250301151733613

抽象类不能创建对象,但可以有构造方法(创建子类对象的时候给子类赋值)

因为抽象类可以被子类继承,当创建子类对象的时候,虚拟机会自动调用super();这个代码来初始化父类对象,所以抽象类可以有构造方法

当没写构造方法时,虚拟机会自动创建一个空参构造

image-20250301151759091


接口

interface

接口就是一种规则,是对行为的抽象,不能被创建对象
而父类是一种类型

image-20250301152219139

image-20250301152311531

image-20250301152336239

image-20250301153332163

接口的多态

image-20250301153704906

和继承的多态类似

属于一个类,可以出现在方法的参数中

可以传递这个类的所有子类,对于接口来说就是可以传递这个接口的所有实现类


内部类

image-20250301153841648

发动机就是内部类,也有品牌,年龄等属性

内部类单独出现没有意义

内部类可以直接访问外部类,包括私有

外部类访问内部类需要创建内部类对象


匿名内部类

当我们只需要用到一个抽象类或者接口中的某一个方法的时候,必须要先创建一个子类对象或者实现类对象,然后重写方法去调用

很麻烦,需要创建对象,那我们就可以用匿名内部类来调用方法

image-20250301154626531

这个整体属于一个对象,可以直接调用重写的方法,或者被当作参数传递

例如:

image-20250301154748784

image-20250301154804557

使用匿名内部类

1.当作参数传递

image-20250301154832455

2.直接调用重写方法

image-20250301154851486

相关文章:

java基础+面向对象

Java基础语法 CMD命令 cls 清屏 cd 目录进入文件 cd… 退回 dir 查看当前目录所有文件 E:进入E盘 exit 退出 环境变量就是不用去专门的盘符去找,直接去环境变量里找到文件 语言优势 编译型语言c: 整体翻译 解释型语言python&#x…...

Linux 检测内存泄漏方法总结

文章目录 strace检测asan内存检测linux下gperf工具&#xff08;tcmalloc&#xff09;检查C/C代码内存泄露问题参考 strace检测 &#xff08;1&#xff09;启动程序 &#xff08;2&#xff09; strace -f -p <PID> -tt -e brk,mmap,mmap2,munmapbrk 变大 → 说明堆增长…...

本地部署deepseek大模型后使用c# winform调用(可离线)

介于最近deepseek的大火&#xff0c;我就在想能不能用winform也玩一玩本地部署&#xff0c;于是经过查阅资料&#xff0c;然后了解到ollama部署deepseek,最后用ollama sharp NUGet包来实现winform调用ollama 部署的deepseek。 本项目使用Vs2022和.net 8.0开发&#xff0c;ollam…...

Python----数据分析(Numpy:安装,数组创建,切片和索引,数组的属性,数据类型,数组形状,数组的运算,基本函数)

一、 Numpy库简介 1.1、概念 NumPy(Numerical Python)是一个开源的Python科学计算库&#xff0c;旨在为Python提供 高性能的多维数组对象和一系列工具。NumPy数组是Python数据分析的基础&#xff0c;许多 其他的数据处理库&#xff08;如Pandas、SciPy&#xff09;都依赖于Num…...

Leetcode-最大矩形(单调栈)

一、题目描述 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵&#xff0c;找出只包含 1 的最大矩形&#xff0c;并返回其面积。 输入&#xff1a;matrix [["1","0","1","0","0"],["1","0&…...

域内委派维权

为某个服务账户配置 krbtgt 用户的非约束性委派或基于资源的约束性委派。这里我的 krbtgt 的基于资源约束性委派我利用不了&#xff0c;所以使用的是域控的机器账户 dc01$ 进行维权。 抓取所有 hash。 mimikatz.exe "privilege::debug" "lsadump::dcsync /doma…...

leetcode---LCR 140.训练计划

给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号&#xff0c;请查找并返回倒数第 cnt 个训练项目编号。 示例 1&#xff1a; 输入&#xff1a;head [2,4,7,8], cnt 1 输出&#xff1a;8 提示&#xff1a; 1 < head.length < 1000 < head[i] <…...

Linux基础 -- ARM 32位常用机器码(指令)整理

ARM 32位常用机器码&#xff08;指令&#xff09;整理 1. 数据处理指令&#xff08;运算、逻辑、比较&#xff09; 指令含义示例备注MOV赋值&#xff08;寄存器传输&#xff09;MOV R0, R1直接将 R1 复制到 R0MVN取反MVN R0, R1R0 ~R1ADD加法ADD R0, R1, R2R0 R1 R2ADC带进…...

内存中的缓存区

在 Java 的 I/O 流设计中&#xff0c;BufferedInputStream 和 BufferedOutputStream 的“缓冲区”是 内存中的缓存区&#xff08;具体是 JVM 堆内存的一部分&#xff09;&#xff0c;但它们的作用是优化数据的传输效率&#xff0c;并不是直接操作硬盘和内存之间的缓存。以下是详…...

基于 Spring Boot 的 +Vue“宠物咖啡馆平台” 系统的设计与实现

大家好&#xff0c;今天要和大家聊的是一款基于 Spring Boot 的 “宠物咖啡馆平台” 系统的设计与实现。项目源码以及部署相关事宜请联系我&#xff0c;文末附上联系方式。 项目简介 基于 Spring Boot 的 “宠物咖啡馆平台” 系统设计与实现的主要使用者分为 管理员、用户 和…...

LeetCode 解题思路 7(Hot 100)

解题思路&#xff1a; 初始化窗口元素&#xff1a; 遍历前 k 个元素&#xff0c;构建初始单调队列。若当前索引对应值大于等于队尾索引对应值&#xff0c;移除队尾索引&#xff0c;将当前索引加入队尾。遍历结束时当前队头索引即为当前窗口最大值&#xff0c;将其存入结果数组…...

linux-Dockerfile及docker-compose.yml相关字段用途

文章目录 计算机系统5G云计算LINUX Dockerfile及docker-conpose.yml相关字段用途一、Dockerfile1、基础指令2、.高级指令3、多阶段构建指令 二、Docker-Compose.yml1、服务定义&#xff08;services&#xff09;2、高级服务配置3、网络配置 (networks)4、卷配置 (volumes)5、扩…...

deepseek部署:ELK + Filebeat + Zookeeper + Kafka

## 1. 概述 本文档旨在指导如何在7台机器上部署ELK&#xff08;Elasticsearch, Logstash, Kibana&#xff09;堆栈、Filebeat、Zookeeper和Kafka。该部署方案适用于日志收集、处理和可视化场景。 ## 2. 环境准备 ### 2.1 机器分配 | 机器编号 | 主机名 | IP地址 | 部署组件 |-…...

微软Office 2016-2024 x86直装版 v16.0.18324 32位

微软 Office 是一款由微软公司开发的办公软件套装&#xff0c;能满足各种办公需求。包含 Word、Excel、PowerPoint、Outlook 和 OneNote 等软件。Word 有强大文档编辑功能和多人协作&#xff1b;Excel 可处理分析大量数据及支持宏编程&#xff1b;PowerPoint 用于制作演示文稿且…...

CMake宏定义管理:如何优雅处理第三方库的宏冲突

在C/C项目开发中&#xff0c;我们常常会遇到这样的困境&#xff1a; 当引入一个功能强大的第三方库时&#xff0c;却发现它定义的某个宏与我们的项目产生冲突。比如&#xff1a; 库定义了 BUFFER_SIZE 1024&#xff0c;而我们需要 BUFFER_SIZE 2048库内部使用 DEBUG 宏控制日志…...

【SpringCloud】Gateway

目录 一、网关路由 1.1.认识网关 1.2.快速入门? 1.2.1.引入依赖 1.2.2.配置路由 二、网关登录校验 2.1.Gateway工作原理 ?2.2.自定义过滤器 2.3.登录校验 2.4.微服务获取用户 2.4.1.保存用户信息到请求头 2.4.2.拦截器获取用户? ?2.5.OpenFeign传递用户 三、…...

Maven入门教程

一、Maven简介 Maven 是一个基于项目对象模型&#xff08;Project Object Model&#xff09;的构建工具&#xff0c;用于管理 Java 项目的依赖、构建流程和文档生成。它的核心功能包括&#xff1a; 依赖管理(Dependency Management)&#xff1a;自动下载和管理第三方库&#x…...

大数据与金融科技:革新金融行业的动力引擎

大数据与金融科技&#xff1a;革新金融行业的动力引擎 在今天的金融行业&#xff0c;大数据与金融科技的结合正在以惊人的速度推动着金融服务的创新与变革。通过精准的数据分析与智能化决策&#xff0c;金融机构能够更高效地进行风险管理、客户服务、资产管理等一系列关键操作…...

Autosar RTE配置-Port Update配置及使用-基于ETAS工具

文章目录 前言Autosar Rte中enableUpdate参数定义ETAS工具中的配置生成代码分析总结前言 在E2E校验中,需要对Counter进行自增,但每个报文周期不一样,导致自增的周期不一样。且Counter应该在收到报文之后才进行自增。基于这些需求,本文介绍使用RTE Port中的参数enableUpdat…...

【AVRCP】深入理解蓝牙音频 / 视频远程控制规范:从基础到应用

AVRCP&#xff08;Audio/Video Remote Control Profile&#xff09;作为蓝牙音频 / 视频控制领域的重要规范&#xff0c;通过其完善的协议架构、丰富的功能分类以及对用户需求的深入考量&#xff0c;为我们带来了便捷、高效的音频 / 视频设备控制体验。无论是在日常生活中的音乐…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...