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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

水滴tabbar canvas实现思路

废话不多说之间看效果图,只要解决了这个效果水滴tabbar就能做出来了 源码地址 一、核心实现步骤分解 布局结构搭建 使用 作为绘制容器 设置 width=600, height=200 基础尺寸 通过 JS 动态计算实际尺寸(适配高清屏) function initCanvas() {// 获取设备像素比(解决 Re…

SpringBoot+Redis+Mybatis-plus黑马点评

短信登录 基于Session实现登录 流程: 发送短信验证码-->短信验证码注册登录-->校验登录状态(保存用户到ThreadLocal,方便后续使用) 不能每次请求服务都要进行登录状态校验,解决办法:拦截器 在Sp…

Windows之远程终端问题集锦(十二)

1.描述 远程终端的默认端口是3389 云vps一般会开启 没有启用的情况下,在较高的权限下可以使用注册表命令进行开启 2.注册表开启远程终端命令 2.1 2008 2012 2016 开启3389 这个就是新建.bat文件 在本来不开启的情况下 我们双击运行 他就自动开启了 当然我们必须获…

跟着源码实现LevelDB(二)util/status.cc

概述 本小节实现了leveld的Status类,Status看起来是个简单的类,但是其中也包含了leveldb对极致的性能实现的巧妙设计 Status的内存管理 Status 只有一个成员变量 const char* state_; state[0…3] 表示长度,state[4] 1个字节 表示状态的枚…

【Azure 架构师学习笔记】- Azure Databricks (13) -- 搭建Medallion Architecture part 1

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (12) – Medallion Architecture简介 前言 上文已经介绍了关于Medallion的知识,本文开始用ADB 来实现, 但是基于内容较…

模型优化之强化学习(RL)与监督微调(SFT)的区别和联系

强化学习(RL)与监督微调(SFT)是机器学习中两种重要的模型优化方法,它们在目标、数据依赖、应用场景及实现方式上既有联系又有区别。 想了解有关deepseek本地训练的内容可以看我的文章: 本地基于GGUF部署的…

欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、马氏距离理解学习

目录 一、欧氏距离(Euclidean Distance)公式:原理: 二、曼哈顿距离(Manhattan Distance)公式:原理: 三、切比雪夫距离(Chebyshev Distance)公式:原…

计算机三级网络技术备考(3)

【知识点补充:带宽是是链路的传输速率,宽带是一种服务】 第四章:路由设计技术 考点1:IP路由选择与路由汇聚 核心层:s0两个IP进行汇聚就行 汇聚层:聚合后两个以上的往前进几位(因为主机号不够因…

互联网医院实时数据监测智能分析系统设计概述(下)

阶段4:可视化仪表盘与用户界面开发 在这一阶段,我们将使用 Plotly Dash 来设计一个实时预测仪表盘,用于展示疾病传播趋势、医生评估信息等。我们还将实现实时数据更新与展示,确保数据能够及时反映系统中的变化。 1. 设计实时预测仪表盘 步骤 1:安装 Dash 依赖 首先,确…

VMware vSphere数据中心虚拟化——vCenter Server6.7创建配置数据中心集群

VMware vSphere数据中心虚拟化 vCenter Server6.7创建配置数据中心集群前期准备创建配置数据中心集群分配许可证 vCenter Server6.7创建配置数据中心集群 前期准备 已部署完成vCenter7.0集群为vSAN存储和vSphereHA高可用 提前规划好专属网络地址每台物理机至少提供两块硬盘&a…

【算法学习之路】4.简单数论(4)

简单数论(4) 前言三.高精度1.什么是高精度2.解决办法 精度乘除法一.精度乘法1.数据的存储2.步骤3.例题:高精度乘法 二.精度除法1.例子2.步骤3.例题:高精度除法 前言 我会将一些常用的算法以及对应的题单给写完,形成一套…

视频推拉流EasyDSS点播平台云端录像播放异常问题的排查与解决

EasyDSS视频直播点播平台是一个功能全面的系统,提供视频转码、点播、直播、视频推拉流以及H.265视频播放等一站式服务。该平台与RTMP高清摄像头配合使用,能够接收无人机设备的实时视频流,实现无人机视频推流直播和巡检等多种应用。 最近&…

pyQT5简易教程(一):制作一个可以选择本地图片并显示的桌面应用

可以参考之前的教程安装 PyQt 和 PyQt Designer https://blog.csdn.net/smx6666668/article/details/145909326?spm=1011.2415.3001.10575&sharefrom=mp_manage_link 一、打开pycharm中的QTdesigner 二、设计界面 和之前一样,使用 PyQt Designer 来设计界面并保存为 .u…

【洛谷贪心算法】P1090合并果子

为了使消耗的体力最小,每次都应该选择当前重量最小的两堆果子进行合并。可以使用优先队列(小根堆)来实现这个过程,优先队列可以自动维护元素的顺序,每次取出堆顶的两个元素(即最小的两个元素)进…

第四届大数据、区块链与经济管理国际学术会议

重要信息 官网:www.icbbem.com 时间:2025年3月14-16日 地点:中国-武汉 (线上召开) 简介 第四届大数据、区块链与经济管理国际学术会议(ICBBEM 2025),将于2025年3月14-16日在中国湖北省武汉市召开。…

【愚公系列】《Python网络爬虫从入门到精通》037-文件的存取

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…

pyside6学习专栏(八):在PySide6中使用matplotlib库绘制三维图形

本代码原来是PySide6官网的一个示例程序,我对其进行的详细的注释,同时增加了一个功能:加载显示cass的地形图坐标数据示例,示例可显示以下几种三维图形 程序运行界面如下: 代码如下: # -*- coding: utf-8 -…

【多模态大模型论文精读】MOSHI:双工实时语音对话大模型

写在前面 大型语言模型(LLM)的飞速发展,让人机对话变得越来越自然流畅。从 Alexa、Siri 到 Google Assistant,语音助手已经成为我们生活中不可或缺的一部分。然而,这些看似智能的对话系统,背后却隐藏着一个…

Elasticsearch --- 相关基础知识整理

目录 1、核心功能2、主要用途3、数据模型4、优势5、映射5.1 映射的作用5.2 字段数据类型5.3 动态映射与显式映射5.4 映射设置5.5 多字段与元字段5.6 映射的创建与管理5.7 映射优化建议 6、 倒排索引6.1 **倒排索引的基本概念**6.2 **倒排索引的工作原理**6.3 **倒排索引的优势*…

lqb官方题单-速成刷题清单(上) - python版

预计3月5日 Wednesday 前完成 【2025年3月1日,记】题目太简单了,3月3日前完成 蓝桥杯速成刷题清单(上) https://www.lanqiao.cn/problems/1216/learning/?problem_list_id30&page1 替换题号1216 目录 进度题解和碎碎念1. 排…