当前位置: 首页 > 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;为我们带来了便捷、高效的音频 / 视频设备控制体验。无论是在日常生活中的音乐…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...