变量的使用
1.变量必须先声明后使用。
2.变量都定义在其作用域内,在作用域内有效,出了作用域就失效了。
3.同一个作用域内不能声明两个同名变量。
数据类型
基本数据类型(primitive type)
整型 byte(1字节) -128~127 , short (2字节), int(4字节) , long(8字节) l或L结尾
浮点型 float(4字节) 定义时要以f或F结尾 , double(8字节)
字符型 char(2字节)
布尔型 boolean 只能取两个值之一 :true , false
7种基本数据类型之间的计算(不包括布尔类型):
1.自动类型提升:
容量小的数据类型变量与容量大的数据类型做运算时,运算结果自动装换为容量大的。
byte , char , short –> int –> long –> float –> double
所有的byte , short , char 类型的值将被提升为int型;
被final 修饰的变量不会自动提升其类型
2.强制类型转换:
使用强转符 () ,可能造成精度损失
引用数据类型(reference type)
类 class
String类型: 声明时使用一对””,可以与8种基本数据类型做运算,+ 只能表示连接
接口 interfere
数组 [ ]
运算符
算术运算符
逻辑运算符
&&与&的区别:
& : 左边无论真假,右边进行运算
&& : 左边为真,右边参与运算;左边为假,右边不参与运算
|与||的区别:
||:左边为真,右边不参与运算
位运算:
运算符优先级:
单目乘除为(位)关系,逻辑三目后赋值。
单目:单目运算符+ –(负数) ++ – 等
乘除:算数单目运算符* / % + -
为(位):位移单目运算符<< >>
关系:关系单目运算符> < >= <= == !=
逻辑:逻辑单目运算符&& || & | ^
三目:三目单目运算符A > B ? X : Y
后:无意义,仅仅为了凑字数
赋值:赋值=
流程控制
顺序结构
分支结构
循环结构
break : 结束当前循环
continue : 结束当次循环
数组
数组的特点:
1.数组是有序排列的
2.数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型的变量
3.创建数组对象时会在内存中开辟一整块连续的内存空间
4.数组的长度一旦确定就不能修改
一维数组的使用:
1 | public class ArrayTest { |
一维数组元素的默认初始值
基本数据类型:
整形:0
浮点型:0.0
char型:0(ASCII码值) 而非’0’
boolean型:false
引用数据类型:null
一维数组的内存解析:
在栈空间中申请一个变量用来存储堆空间中数组的首地址值
在堆空间中申请一个数组用来存放数组元素
多维数组的使用:
1 | public class ArrayTest1 { |
二维数组元素的默认初始值:
针对初始化方式一:String [][] arr1 = new String[3][2];
外层元素的初始化值为:地址值
内层元素的初始化值为:与一维数组的初始化情况相同
针对初始化方式二:String [][] arr1 = new String[3][];
外层元素的初始化值为:null
内层元素的初始化值为:不能调用,否则报错
二位数组的内存解析:
在栈空间中申请一个变量用来存储堆空间中数组的首地址值
在堆空间中申请一个数组用来存放二维数组的外层元素,外层元素中存放着指向存储内层元素数组的首地址
在堆空间中申请一个数组用来存储内层元
数组中涉及的常见算法
数组元素的赋值
1 | /** |
求数值型数组中元素的最大值、最小值、平均数、总和等
1 | /** |
赋值与复制
赋值:array2 = array1;// array1指向堆空间的地址赋给array2,不能称为数组的复制
对array2修改就是对array1进行修改
复制:for(int i = 0;i < array2.length;i++) {
array2[i] = array1[i];
}
对array2修改不会影响到array1
数组的反转
1 | String[] array1 = new String[] {"Tom","Taylor","Justin","Troye","Swift"}; |
查找
- 线性查找
1 | String[] array1 = new String[] {"Tom","Taylor","Justin","Troye","Swift"}; |
- 二分查找
1 | int [] array3 = new int [] {1,2,3,4,5,6,7,8,9,10}; |
排序
冒泡排序
排序思想:
- 比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步
做完后,最后的元素会是最大的数。 - 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要
比较为止。
1 | int [] array = new int[] {1,2,8,4,6,8,6,5,3,33,1,0}; |
Arrays工具类
java.util.Arrays :操作数组的工具类,定义了许多操作数组的方法
1 | public static void main(String[] args) { |
数组使用的常见异常
1.数组脚标越界异常
ArrayIndexOutOfBoundsException:访问到了数组中的不存在的脚标时发生。
合理范围:[0,array.length-1]
2.空指针异常
NullPointerException:array引用没有指向实体,却在操作实体中的元素时。