数组
数组概述
数组是一种线性数据结构,它由一组按顺序排列的元素组成。每个元素都有一个唯一的索引,用于
访问和操作该元素。数组可以包含任意类型的数据,如整型、浮点型、字符中型。
优点:快速访问和搜索速度。
缺点:插入和删除操作可能会导致大量元素的移动。从而影响性能。
数组与类、接口,是
引用类型
中的一种;
Java
的数组
长度一经确定不能改变
;
例如,一个数组的长度是
10
,那么最多能存
10
个数据,如果保存第
11
个就会出错;
数组在内存中是
连续分配
,所以读取速度快
使用数组变量名 .length 可以返回数组的长度
使用数组变量名 .length 可以返回数组的长度
定义数组的几种方式
数据类型
[]
数组名称
=new
数据类型
[
长度
];
//
常用
数据类型 数组名称
[]
=new
数据类型
[
长度
];
数据类型 数组名称
[]={
值
1,
值
2,….};
//常用
数组工具类
Java API
中有一个类
Arrays
,定义了大量的
sort方法,可以对数组中元素进行排序;
sort()
:用来对
array
进行排序。
binarySearch()
:在排好序的
array
中寻找元素。
Arrays.asList(array):
将数组
array
转化为
List (
此种方法不正规)
冒泡排序
冒泡排序主要的思想是进行相邻的两个元素之间比较并且交换,有利于利用原有元素在集合中的位
置优势,冒泡排序的原则是大的下沉小的上浮(跟最终的排序要求保持一致)
第一轮的排序,首先比较前两个元素
,
如果顺序与升序相反则交换
,
否则什么也不做
然后
,
依次比较第二位与第三位
,
第三位与第四位
,…..
冒泡排序速记口诀(升序)
N
个数字来排队
两两相比小靠前
外层循环
N-1
内层循环
N-1-i
代码框架
for (i = 0; i < N-1 ; i++){
for (j = 0; j < N-1-i ; j++){
//
比较
j
和
j+1
位置的元素
//
如果前大后小就交换
}
}
代码
总结:
数组:
数组就是一组数据的集合,其表现形式就是内存中的一段连续的内存地址,是一种线性数据结构。
冒泡排序:
冒泡排序是最简单、最常用的排序方法。其基本思想是:在待排序的一组数据中,将相领的两个数
进行比较,若前面的数大于后面的数则交换两数,否则不交换
;如此重复直至最终完成排序。因此可得,在排序过程中,大的数据往下沉,小的数据往上浮,就像气泡一样,于是将这种排序算法形象地称为冒泡排序
面向对象
面向过程
:
自己的事情自己干
,
代表语言
C
语言
洗衣服
:
每一步自己要亲力亲为
->
找个盆
,
放点水
,
找个搓衣板
,
搓搓搓
面向对象
:
自己的事情别人帮忙去干
,
代表语言
Java
语言
洗衣服
:
自己的事情别人干
->
全自动洗衣机
什么时候使用面向对象思想编程
:
调用别人的功能时
在一个类中想使用别的类中的成员时
,
就使用面向对象思想编程
至于我们使用的功能人家怎么实现的
,
我们不需要关心
,
我们只需要知道怎么使用即可
怎么使用面向对象思想编程
:
1.new
呀
,new
完点呀
->
点代表的是调用
2.特殊
:
如果调用的成员带
static
关键字
,
我们不需要
new,我们直接类名点即可
类
(
实体类
)_class
1.
测试类
:
带
main
方法的类
,
主要是运行代码的
2.
实体类
:
是一类事物的抽象表示形式
世间万物的分类
:
比如
:
人类 狗类 猫类 鼠标类
组成部分
:
1.
属性
(
成员变量
):
这一类事物有啥
a
.
定义位置
:
类中方法外
b
.
作用范围
:
作用于当前类
c
.
定义格式
:
数据类型 变量名
d
.
默认值
:
整数
:
0
小数
:
0.0
字符
:
'\u0000'
布尔
:
false
引用
:
null
2.行为 ( 成员方法 ): 这一类事物都能干啥
2.行为 ( 成员方法 ): 这一类事物都能干啥
对象
1.
概述
:
一类事物的具体体现
2.
使用
:
a
.
导包
:
import
包名
.
类名
如果两个类在同一个包下
,
想要使用对方的成员不需要导包
如果两个类不在同一个包下
,
想要使用对方的成员需要导包
特殊包
:
java
.
lang
->
使用
lang
包下的类不需要导包
->
String
友情提示
:
在学四种权限修饰符之前
,
尽量让两个类在同一个包下
b
.
创建对象
:
想要使用哪个类中的成员
,
就
new
哪个类的对象
类名 对象名
=
new
类名
()
->
比如
:
Person person
=
new
Person
()
c
.
调用成员
(
成员变量
,
成员方法
)
->
想要使用哪个类中的成员
,
就用哪个类的对象去点哪个成员
对象名
.
成员变量名
=
值
对象名
.
方法名
()
->
调用的是无参无返回值方法
对象名
.
方法名
(
实参
)
->
调用的是有参无返回值方法
数据类型 变量名
=
对象名
.
方法名
()
->
调用的是无参有返回值方法
数据类型 变量名
=
对象名
.
方法名
(
实参
)
->
调用的是有参有返回值方法
方法:
拥有功能性代码的代码块
将不同的功能放在不同的方法中
,
给每个方法取个名字
,
直接调用方法名
,
对应的方法就执行起来了
,
好维护
通用定义格式
:
修饰符 返回值类型
方法名
(
参数
){
方法体
return
结果
}
4.
通过通用格式
,
分成四种方法来学习
:
a
.
无参无返回值方法
b
.
有参无返回值方法
c
.
无参有返回值方法
d.有参有返回值方法
形式参数和实际参数区别
1.
形式参数
(
形参
):
在定义方法的时候形式上定义的参数
,
此参数还没有值
2.
实际参数
(
实参
):
在调用方法的时候给形参赋予的具体的值
可变参数(不定参数)
Java
把可变参数当做数组处理
可变参数必须位于最后一项
。当可变参数个数多余一个时,必将有一个不是最后一项,
所以只支持
有一个可变参数
。因为参数个数不定,所以当其后边还有相同类型参数时,
java
无法区分传入的参数属
于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项
可变参数用
...
代替标识,
...
位于变量类型和变量名之间,前后有无空格都可以
用可变参数的方法时,
编译器为该可变参数隐含创建一个数组
,在方法体中以数组的形式访问可变
参数。
//
定义一个方法,计算之和。计算的数据不限制个数,参数为不定参
public static
int
cal
(
int
...
nums
){
int
result
=
0
;
//
循环数组
for
(
int
num
:
nums
){
result
+=
num
;
}
return
result
;
}
}
方法注意事项
1.
方法不调用不执行
2.
方法的执行顺序只和调用顺序有关
3.
方法之间不能互相嵌套
4.
void
不能和
[
return
结果
]
共存
,
但是
void
能和
[
return
]
共存
a
.
void
:
代表没有返回值
b
.
return
结果
:
就代表有返回值了
先将结果返回
,
然后结束方法
c
.
return
:
仅仅代表结束方法
,
不代表有返回值
5.
一个方法中不能连续写多个
return
(
也就是说一个方法不能都多个返回值
)
6.
调用方法的时候要看看下面有没有这个方法
,
没有的方法直接调用会报错