可变参数笔记

概述

Java中的可变参数是一种特殊的参数类型,它可以接受不定数量的参数。这种特性在Java 5中被引入,主要用于解决方法参数数量不确定的问题。

声明和使用

在Java中,我们通过在方法声明时使用...来标识一个可变参数。例如,如果我们希望一个方法接受任意数量的字符串参数,我们可以这样声明:

image-20240204134557521特性

  • 只能有一个可变参数:在方法声明中,只能有一个...标记的形参类型。这是因为可变参数在语法上是作为数组处理的,而一个方法只能有一个数组参数。
  • 可变参数必须位于形参的最后一个位置:在方法声明中,可变参数之后不能有其他参数。这是因为可变参数的数量是不定的,如果它在其他参数后面,Java将无法确定哪个参数应该被视为可变参数的一部分。
  • 可变参数是数组:在方法内部,可变参数被视为一个数组。这意味着你可以像操作数组一样操作可变参数。例如,你可以使用length属性获取可变参数的数量,或者使用索引访问每个参数。

应用实例

image-20240204134827189

排序笔记

排序的类别:冒泡排序、快速排序、插入排序、希尔排序、选择排序、堆排序、归并排序、桶排序、基数排序和计数排序。

冒泡排序

冒泡排序是一种稳定的排序算法,它的工作原理是通过对待排序序列从前往后,依次比较相邻元素的排列码,若发现逆序则交换,使排序码较大的元素逐渐从前部移向后部。

image-20240204095731092

快速排序

快速排序是一种不稳定的排序算法,它的工作原理是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后再分别对这两部分记录继续进行排序,以达到整个序列有序。

image-20240204100008042

插入排序

插入排序是一种稳定的排序算法,它的工作原理是将未排序的数据插入到已排序的数据中的适当位置,从而使得整体数据有序。

image-20240204100100608

方法模块笔记

Java方法模块的基本流程:
  1. 创建一个Java模块:这可以通过在你的Java项目中创建一个新的包来实现。在包中,你可以创建多个类文件,并且这些类文件将组成一个模块。
  2. 在模块中定义一个类并实现方法:在刚创建的模块中,你需要定义一个类,并在该类中实现你需要调用的方法。
  3. 在其他模块中引用该模块:现在,你已经在一个模块中定义了一个类和方法。接下来,你需要在其他模块中引用并调用这个方法。为了实现这一步,你需要在其他模块中导入这个模块,并通过创建该类的实例并调用方法。
方法定义
  1. 修饰符:修饰符是可选的,它可以告诉编译器如何调用该方法。例如,public 表示该方法可以从任何地方被访问。
  2. **** 返回值类型:方法可能会返回值,returnValueType 是方法返回值的数据类型。如果方法不返回任何值,那么 returnValueTypevoid。****
  3. **** 方法名:方法名是方法的实际名称,它应该是描述性的,以便其他人阅读你的代码时能够理解它的作用。****
  4. **** 参数列表:参数是传递给方法的值。参数之间用逗号分隔,每个参数都有自己的数据类型和名称。****
  5. **** 方法体:方法体是方法执行的代码块。****
注意事项

- 方法名应遵循驼峰命名法,首字母小写。
- 如果方法没有返回值,需要在方法声明时使用 void 关键字。
- 在方法体中,使用 return 语句来返回方法的值。
- 避免在方法中编写过多的代码,使方法尽可能地简洁和易于理解。

huang2024/1/22-2024/1/28

本周学习大纲

  1. 控制结构
  2. 数组

本周学习日历

日历 学习内容 其他
星期一 顺序控制、分支控制(if,else,switch) \
星期二 循环控制(for,while,do while,多重循环) \
星期三 break,continue,return \
星期四 \ \
星期五 数组 \
星期六 赋值机制 \
星期天 二维数组 \

本周学习内容 及 收获

  1. 控制结构笔记

    https://snail0220.github.io/2024/01/27/%E6%8E%A7%E5%88%B6%E7%BB%93%E6%9E%84%E7%AC%94%E8%AE%B0/

  2. 数组笔记

    https://snail0220.github.io/2024/01/27/%E6%95%B0%E7%BB%84/

总结

控制结构内容较多,把握尚且不够全面,运用不熟

数组的简单运用可以掌握,但是有点浅

下周学习大纲

  1. 排序
  2. 方法模块
  3. 可变参数

数组笔记

Java数组是Java中一种重要的数据结构,用来存储固定大小的同类型元素。

基本内容

数组的特点包括:

1.数组元素可以是基本数据类型,也可以是引用数据类型,数组本身是引用数据类型。

2.在创建数组时,数组的所有元素会根据定义的类型进行初始化,整型数组元素会被初始化为0,浮点型数组元素会被初始化为0.0,布尔型数组元素会被初始化为false。

3.数组的大小一旦确定,不能进行更改。

4.数组的每一个元素之间的内存地址是连续的,开辟数组空间的时候是申请了一块连续的内存空间用于存放数组元素。

5.数组中的元素都有对应的下标,且下标从0开始计数。

声明数组的语法如下:

数据类型[] 数组名 = new 数据类型[数组长度];

访问数组元素的语法是:

数组名[下标];

其中,下标从0开始,最大值为数组长度减1。

此外,Java还提供了一些方法来操作数组,比如System.arraycopy()方法可以用来复制数组,Arrays.sort()方法可以用来对数组进行排序,Arrays.binarySearch()方法可以用来在已排序的数组中查找特定元素等。

赋值机制

主要有两种类型

基本数据类型赋值

方式:值拷贝,即赋值的是具体的数据,而且相互不影响。

引用数据类型赋值

方式:引用赋值,即赋值的是地址,赋值后的数组元素会互相影响。

此外,还有一种赋值方式叫做数组的初始化,例如

int[] arr = new int []{1,2,3};

这样可以一次性初始化整个数组[6]

二维数组

定义和初始化

image-20240127110236393

访问二维数组

使用两个方括号来访问二维数组中的元素。

第一个方括号表示我们要从中访问项目的数组,而第二个方括号表示我们要访问的项目的索引。

控制结构笔记

顺序控制

顺序结构是指程序从上到下逐行地执行,中间没有任何判断和跳转。

image-20240127094442617

分支结构

让程序有选择的执行主要有三种:单分支、双分支和多分支。

单分支

image-20240127094726860

当条件表达式为true时,就会执行,如果为false,就不执行。

双分支

image-20240127094942357

当条件表达式1成立时,即执行代码块1,否则执行代码块2.

多分支

image-20240127095136857

当条件表达式1成立时,即执行代码块1,如果表达式1不成立,才去判断表达式2是否成立,如果表达式2成立,就执行代码块2,以此类推。

循环控制

循环控制让程序可以反复执行某段代码,主要是while循环、do while循环、for循环

while循环

image-20240127095626017

当条件表达式为true时,就会执行,如果为false,就不执行。

do while 循环

image-20240127095830090

无论条件表达式的真假,至少会执行一次{}的代码,然后根据条件表达式的结果决定是否继续执行。

for循环

image-20240127100213854

在每次循环开始时,都会先执行初始化语句,然后检查条件表达式,如果为true,就执代码块,然后执行更新表达式,最后再次检查条件表达式。

break

break关键字用于强制退出循环,不执行循环中剩余的语句。它可以用在for、while、do while等各种类型的循环中。

continue

continue关键字用于跳出本次循环,继续 执行下一次循环。他只能出现在循环体中,并与break不同,continue并不是终止循环,而是跳过此次循环,也是跳过当前的循环,继续进入下一次的循环。

return

return主要有两个方面的作用

1.返回方法指定类型的值:return语句用于终止函数的执行或退出类的方法,并把控制权返回该方法的调用者。

2.结束方法的执行:return语句也可用于提前结束方法的执行。

image-20240127103137146

算术运算符

image-20240121092602854

关系运算符

image-20240121092710534

逻辑运算符
  1. 逻辑与(AND):两个逻辑值都为真,结果才为真
  2. 逻辑或(OR):两个逻辑值中至少有一个为真,结果就为真
  3. 逻辑非(NOT):将一个逻辑值取反,即真变假,假变真
赋值运算符

基本赋值运算符:=

复合赋值运算符:+=,-=,/=,%=

位运算符
  • 按位与(&)
  • 按位或(|)
  • 按位异或(^)
  • 取反(~)
三元运算符

img

运算符优先级

单目运算符优先级最高,例如++(自增)、–(自减)

算术运算符优先级次之,+、-、*、/

关系运算符优先级再次之,<、>、<=、>=、==、!=

逻辑运算符优先级再次之,&&(逻辑与)、||(逻辑或)、&(按位与)、|(按位或)

赋值运算符优先级最低,包括=

  1. 本周学习大纲

    1. 运算符

    本周学习日历

    日历 学习内容 其他
    星期一 算数运算符 \
    星期二 关系(比较)运算符 \
    星期三 逻辑运算符 \
    星期四 赋值运算符 \
    星期五 位运算符 \
    星期六 三元运算符 \
    星期天 运算符优先级 \

    本周学习内容 及 收获

    1. 笔记

      Hexo (snail0220.github.io)

    总结

    这周的学习让我的逻辑认识更加清楚,运算符的认识更加完善。

    缺点是学习内容有些少,部分练习题没有整理出来

    下周学习大纲

    1. 控制结构
    2. 数组

huang2023/12/18-2023/12/24学习周报

本周学习大纲

  1. 完善自己的博客
  2. 学习Python的面向对象程序设计
  3. 复习期末考试: 高数 、线代、英语

本周学习日历

日历 学习内容 其他
星期一 复习高数
星期二 概述
星期三 类、魔术方法
星期四 访问限制、属性
星期五 继承(基本语法、方法重写)
星期六 复习线代
星期天 银行账户的资金交易管理

本周学习内容 及 收获

  1. 复习高数线代 image-20231224103810633

  2. 面向对象程序设计https://snail0220.github.io/2023/12/19/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E7%AC%94%E8%AE%B0/

  3. 博客美化

    没有实现,复习时间紧张,又没有必须的要求,就放弃了这边的内容。

总结

复习内容要抓紧时间

博客没有进行美化

Python的程序报错修改需要抓强

下周学习大纲

  1. 学习turtle模块
  2. 继续复习期末考试: 高数 、线代、英语

面向对象程序设计
三大基本特征:封装(核心)、继承、多态

类的定义:用class关键字实现

__init__魔术方法

注意要包含一个self函数,且必须要为第一个参数。

访问限制
foo:表示定义特殊方法,一般是系统定义名字,如__init__()
_foo:是protected(保护)类型的成员,只允许本身和子类进行访问
___foo:是private(私有)类型的成员,只允许定义该方法的类本身进行访问,而且也不能通过类的实例进行访问,但是可以通过”类的实例名.类名__××ד

创建类的成员并访问

img

继承的基本语法img

银行账户资金交易管理

img