1.运算符优先级
2.变量
1.是什么:可以更改的量,方便操作,可以重复使用
有名字的内存空间
2.能干什么:
保存数据,操作数据
3.声明:
数据类型 变量名 = 值;
基本类型
数值型
整数:byte、short、int、long
浮点:float、double
字符型 char
布尔型 boolean
引用类型: 类、数组、接口
long和float需要在值后面加首字母(大小写随意),其他不用
long l = 123L;
float f = 2.5f;
4.分类
静态变量:
类体中使用static修饰
属于类级别变量,该类所有对象值共享
成员变量:
类体中没有static修饰
属于对象级别,对象之间变量值不共享
局部变量:方法中声明的变量
由于方法不调用不执行,调用才执行,并且执行完栈帧摧毁,所以方法在栈内存
是临时性的,所以局部变量也是具有临时性的,不适合长期存储。
另外,局部变量的作用域只能在该方法中
局部变量没有默认值,而静态变量和成员变量有默认值
5.调用
静态变量:类名.静态变量名,当前类中可以直接写变量名调用
成员变量:对昂引用.成员变量名,在成员方法中,调用当前对象中的成员变量可以直接写变量名调用
局部变量:只能在当前方法中,直接写局部变量名进行调用
如果局部变量和静态变量/成员变量同名,则布局变量优先级大于静态和成员
在方法中,可以使用类名区分同名的静态变量和局部变量
在成员方法中,可以使用this区分同名的局部变量和成员变量
3.逻辑运算
&& 和 & :两边都是true结果才是true
&&:短路与,假如第一个条件为false,则第二个条件不执行
&:不管第一个条件是否为false,第二个条件依然会执行
|| 和| :两边一个为真,结果就为真
|| :短路或,如果第一个条件为true,则第二个条件不再执行
| : 不管第一个条件为false还是true,第二个条件都执行
4.数组
1.是什么:
数组是引用数据类型,并且数组是源自底层的数据结构,用来保存和处理多个数据值
用来保存多个相同类型的数据的集合成为数组
并且数组存储方式是连续存储,并且每个元素都有独一无二的下标来标识,且数组长度一旦确认不能更改
所以数组在查询和更改的情况,效率极高,但是添加和删除效率较低,因为长度不能更改,
想要添加或者删除数组,必须先创建一个新数组,然后把原数组中数据复制进去,在复制过程中进行添加和删除操作
另外,数组还有一个length属性,保存数组的长度
2.应用场景:
用来保存多个数据,并且查询和更改操作较多的情况下,推荐使用数组
3.声明:
静态声明:已知数组中每一个元素内容的情况下使用静态声明
数据类型[] 变量名 = {类型值1,类型值2……};
数据类型[] 变量名 = new 数据类型[]{类型值1,类型值2……};
动态声明:在不知道数组中每一个元素内容的情况下,使用动态声明:
数据类型[] 变量名 = new 数据类型[长度];
4.操作:
查询: 数组[下标]
更改: 数组[下标] = 值;
遍历: for(int i=0;i<数组.length;i++){
数组[i];
}
5.插入复制
新数组长度 = target长度 + 插入个数
把目标数组中,起始位置以及起始位置之前的全部数据复制到新数组中
把原数组起始位置开始,取n个插入到新数组中
把目标数组起始位置之后的元素插入到新数组中
6.冒泡排序
相邻的元素进行比较,如果前面大于后面,就交换位置,
比较完一轮,最后一个肯定是最大的,
重复以上步骤,直到全比较完
7.选择排序
假设当前这个是最小,用该数据依次和后面的所有数据进行比较,如果发现比当前元素小的,交换下标
比较一轮后,当前保存的一定是最小元素的下标
8.二分法查找
目标 = 中间,返回中间
目标 > 中间,结束不变,起始 = 中间+1,重新生成中间值
目标 < 中间,起始不变,结束 = 中间-1,重新生成中间值
终止 = 起始 > 结束
5.面向对象
1.类和对象的关系
类定义属性,描述物体的特征
对象封装属性值,表示具体的个体