JavaSE(上)-Day9
JavaSE(上)-Day9
- 集合
- static
- 静态变量
- 静态方法
- 静态方法的注意事项
- 重新认识main方法
- 继承
- 继承注意事项
- 子类到底能继承父类哪些内容
- 继承中成员变量和成员方法的访问特点
- 重写
- 构造方法的访问特点
- this & super
集合
- 因为数组是不可变的,我们在不确定一个容器长度的时候,应该选择一个长度可变的容器,此时引出了ArrayList
- ArrayList需要指定泛型,泛型不可以是基本数据类型,我们可以使用基本数据类型的包装类
- 在创建ArrayList对象的时候,JDK7之前两个泛型位置都需要填写泛型,JDK7之后,只需要填写前面位置的泛型,但后面也需要<>
- ArrayList的容器默认的容量为0,可以自动扩容
- ArrayList有便捷的方法,新增add(E)->boolean,修改set(index,E) ->oldE,删除remove(E)->boolean 或 remove(index)->E,查询get(index)->E
static
静态变量
1.用static修饰的成员变量就是静态变量
2.静态变量创建是随着类的字节码文件加载到元空间后,在堆内存中的静态区添加该静态变量进行存储,先设置默认初始值,然后显式赋值,然后方法里赋值,成员变量是随着对象的创建,在堆内存中开辟空间存储
3.静态变量是属于类的,可以被这个类所有的对象共享编辑或使用
4.一般通过类名.静态变量名调用
5.同一种对象共用的一个属性就可以定义成静态变量
静态方法
1.用static修饰的成员方法就是静态方法
2.静态方法用于Test类和工具类
3.JavaBean类指的是描述一类事物的类
4.Test类是用于测试其他类的类
5.工具类是帮我们做一些事情的类,不描述一类事物
6.工具类要求见名知其义
7.私有化构造方法,不可以定义工具类的对象,因为工具类的对象是无意义的
8.方法定义成静态的,方便调用
9.用类名.静态方法名(…),是从元空间中找到这个类的字节码文件,找到对应的静态方法名进栈运行
静态方法的注意事项
- 静态方法中是没有this关键字的,其实是因为成员方法中this作为第一个形参隐藏起来啦,给的值就是调用者的地址,而静态方法没有this
- 静态方法不用成员变量和成员方法,原因就是没有this关键字
- 成员方法既可以调用成员方法又可以调用静态方法,每个对象都可以调用类创建的静态区的静态变量
重新认识main方法
- public给出足够大的访问权限,便于JVM调用
- staticJVM不需要实例化,直接调用
- voidJVM不提供返回值
- main为JVM查询的方法入口名称,固定
- String[] args过去接收一些参数,现在由Scanner代替
继承
为什么需要继承?
- 当类与类之前有相同的属性和方法时,并且这些类又是同一大类,就可以使用继承
- 可以把子类中共同的属性和方法提取到父类中,提高代码的复用性
- 子类 extends 父类,可以让子类使用父类的属性和方法,子类只需要补充编写特有的属性和方法
- extends关键字是让两个类建立继承关系,满足语句:子类是父类。
继承注意事项
- Java是单继承,只能继承一个直接父类,支持多层继承,可以有多个间接父类
- Java中所有的类都直接或间接的继承Object类
- 子类只能访问父类中非私有的成员变量和成员方法(代码层面)
子类到底能继承父类哪些内容
- 子类不能继承父类的构造方法,父类的构造方法拷贝过来不符合要求 public/private 类名
- 子类可以继承父类的成员变量, 虽然可以继承父类的私有成员变量,但无法直接使用
- 子类可以继承父类非private且非static且非final的成员方法,它们属于虚方法,会传给子类方便直接调用,如果不是虚方法,就需要先找子类,再找父类,周而复始,没有则报错
继承中成员变量和成员方法的访问特点
- 就近原则 先局部找,然后在本类找,最后再父类中找,逐级向上,找不到报错
- 可以用this,super改变找的起点
重写
- 当父类的方法不满足子类的需求,可以重写该方法
- 重写要求方法名和形参列表完全相同
- 要求访问修饰符权限子类>=父类
- 要求返回值范围子类 <= 父类
- 重写写@Override注解,方便进行重写格式的校验
- 重写只可以重写虚方法,重写本质就是覆盖虚方法
构造方法的访问特点
- 父类的构造方法不能被子类继承
- 子类构造方法默认情况调用父类的无参构造方法super();,为了给父类属性完成初始化,父类的属性初始化完毕,子类才可以调用
- super(); this();必须出现在构造方法的第一行,两者互斥
- 想要调用有参的父类构造方法,需要显式的在子类构造方法的第一行调用。
this & super
- this指的是调用者的地址值,可以理解一个形参变量
- super代表父类的存储空间
相关文章:
JavaSE(上)-Day9
JavaSE(上)-Day9 集合static静态变量静态方法静态方法的注意事项重新认识main方法 继承继承注意事项子类到底能继承父类哪些内容继承中成员变量和成员方法的访问特点重写构造方法的访问特点this & super 集合 因为数组是不可变的,我们在…...
Java 内存模型概述
Java 内存区域 引言: 在并发编程中,需要解决两个问题:线程之间如何通信和线程之间如何同步 通信是指线程之间以何种机制来交换信息 在命令式编程中,通信机制主要分为两种:共享内存和消息传递 Java 的并发采用的是…...
远程桌面安卓版下载 安卓远程控制免费版
远程桌面安卓版下载与安卓远程控制免费版的应用解析 随着移动互联网的快速发展,远程桌面应用逐渐成为了许多用户、特别是技术爱好者和商务人士的必备工具。它们不仅可以在电脑上实现远程控制,还能将这种功能延伸到移动设备上,如安卓手机和平…...
算法打卡day18|二叉树篇07|Leetcode 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
算法题 Leetcode 530.二叉搜索树的最小绝对差 题目链接:530.二叉搜索树的最小绝对差 大佬视频讲解:二叉搜索树的最小绝对差视频讲解 个人思路 因为是在二叉搜索树求绝对差,而二叉搜索树是有序的,那就把它想成在一个有序数组上求最值&…...
MySQL 中的自增ID及其应用场景
在MySQL中,自增ID主要体现在几种不同的场景下,每种自增ID都有其特定用途和行为特征: 1. Auto-Increment ID (PRIMARY KEY AUTO_INCREMENT) 场景:在创建表时,可以为某个整数字段设置AUTO_INCREMENT属性,生成…...
ChatGPT高效完成简历制作[中篇4]-有爱AI实战教程(十一)
演示站点: https://ai.uaai.cn 对话模块 官方论坛: www.jingyuai.com 京娱AI 一、导读: 在使用 ChatGPT 时,当你给的指令越精确,它的回答会越到位,举例来说,假如你要请它帮忙写文案,…...
5.2.5、【AI技术新纪元:Spring AI解码】VertexAI Embeddings
基于Models REST API的PaLM API允许开发者利用下一代大型语言模型PaLM构建生成式AI应用。大型语言模型(LLMs)是一种强大的、多用途的机器学习模型,通过一系列提示使计算机能够理解和生成自然语言。PaLM API基于Google的下一代LLM PaLM,擅长多种任务,包括代码生成、推理和文…...
【vue baidu-map】实现百度地图展示基地,鼠标悬浮标注点展示详细信息
实现效果如下: 自用代码记录 <template><div class"map" style"position: relative;"><baidu-mapid"bjmap":scroll-wheel-zoom"true":auto-resize"true"ready"handler"><bm-mar…...
uniapp canvas文字和元素居中
文字居中:ctx.textAlign "center"; 元素居中:ctx.arc(screenWidth / 2, 122, 40, 0, 2 * Math.PI); ctx.arc()的x轴为当前屏幕的宽度/2; let screenWidth 540; let screenHeight 960; // 头像 if (photoimg) {ctx.setFillSty…...
深度探索:SWAT模型和生物地球化学循环模型实现流域生态系统水-碳-氮耦合过程模拟
目录 专题一 流域水碳氮建模概述 专题二 ArcGIS入门 专题三 SWAT模型建模流程 专题四 DEM数据制备流程 专题五 土地利用数据制备流程 专题六 土壤数据制备流程 专题七 气象数据制备流程 专题八 农业措施数据制备流程 专题九 参数率定与结果验证 专题十 CENTURY模型建…...
C语言经典算法-5
文章目录 其他经典例题跳转链接26.约瑟夫问题(Josephus Problem)27.排列组合28.格雷码(Gray Code)29.产生可能的集合30.m元素集合的n个元素子集 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三角形 4. …...
python与excel第二节
python与excel第二节 打开一个工作簿 例子: import xlwings as xw app xw.App(visibleTrue,add_bookFalse) workbook app.books.open(rD:\TEST\python与excel\工作簿test0.xlsx) 上面例子打开了工作簿test0.xlsx。 但是,如果该excel文件不存在则报错…...
Google云计算原理与应用(四)
目录 七、海量数据的交互式分析工具Dremel(一)产生背景(二)数据模型(三)嵌套式的列存储(四)查询语言与执行(五)性能分析(六)小结 八、…...
面试常问:为什么 Vite 速度比 Webpack 快
前言 最近作者在学习 webpack 相关的知识,之前一直对这个问题不是特别了解,甚至讲不出个123....,这个问题在面试中也是常见的,作者在学习的过程当中总结了以下几点,在这里分享给大家看一下,当然最重要的是…...
principles of network applications网络应用原理
Creating a network app write programs that: ▪ run on (different) end systems ▪ communicate over network ▪ e.g., web server software communicates with browser software application transport network data link physical application transport network data li…...
QT增加线程函数步骤流程
在使用线程的时候,不仅要关注线程开启的时机,同时还要关注线程安全退出,这样才能保证程序的健壮性,如果线程开启的较多,且开启关闭比较频繁,建议使用线程池来处理。开启线程有三种方式:第一种C的…...
Python基础----字符串(持续更新中)
字符串的介绍 定义:是python中常用的数据类型之一,可以使用单引号、双引号、三引号来进行创建 字符串的标识类型:str 字符串的特性 字符串属于不可变数据类型,不能直接修改字符串的本身 数字、元组也属于不可变数据类型 字符串…...
【论文阅读】DiffSpeaker: Speech-Driven 3D Facial Animation with Diffusion Transformer
DiffSpeaker: 使用扩散Transformer进行语音驱动的3D面部动画 code:GitHub - theEricMa/DiffSpeaker: This is the official repository for DiffSpeaker: Speech-Driven 3D Facial Animation with Diffusion Transformer paper:https://arxiv.org/pdf/…...
NVM使用教程
文章目录 ⭐️写在前面的话⭐️1、卸载已经安装的node2、卸载nvm3、安装nvm4、配置路径以及下载源5、使用nvm下载node6、nvm常用命令7、全局安装npm、cnpm8、使用淘宝镜像cnpm9、配置全局的node仓库🚀 先看后赞,养成习惯!🚀&#…...
mysql 学习
本文来自于《sql必知必会》 所需要的文件教程连接 本站其他的小伙伴 第一课 了解sql 数据库基础 什么是数据库 数据库(database) 保存有组织的数据的容器(通常是一个文 件或一组文件)。 表 表(table)…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
