一.运算符operator的优先级priority:
a.优先级比较: && 高于 ||
b.建议使用"( )"来区分优先级
二.语句
1.选择结构
a.if .. else if .. else
根据if中的条件进行判断, 选择执行某一条分支
如果if中的条件未满足, 就会判断else if中的条件
如果所有条件都未满足, 就会执行else中的语句
注:
if() {
}else if {
}else {
}
if() {
}else {
}
if(){
}
b.switch语句
通过一个变量, 确定从哪一个case开始执行, 一旦确定, 会从指定的case向下执行
如果执行某个case之后, 不想继续执行下面的case, 可以使用break中断
如果所有case都未满足条件, 会执行default选项
switch最初只能支持int类型(byte,short,char也可以), JDK5之后可以支持enum, JDK7之后可以支持String
注:
switch(month) {
case 3:
case 4:
case 5:
System.out.println("现在是春季!");
break;
case 6:
case 7:
case 8:
System.out.println("现在是夏季!");
break;
case 9:
case 10:
case 11:
System.out.println("现在是秋季!");
break;
case 12:
case 1:
case 2:
System.out.println("现在是冬季!");
break;
default:
System.out.println("兄弟,你是从火星来的吧!");
}
2.循环结构
a.while
先判断条件, 如果满足则执行循环体, 循环体执行结束后再次判断, 直到条件不满足时退出
注:
while() {
}
b.do .. while
先执行循环体, 然后判断条件, 条件满足则继续执行循环体, 直到条件不满足时退出
注:
do {
}while(); //注意:有分号
c.for语句
括号中可以写3条语句
第一条语句在循环开始之前执行, 只执行一次
第二条语句是循环条件, 如果为true就执行循环体, 为false则退出
第三条语句在每次循环体执行结束之后运行
注:
1.
for(;;) { //这样写,是无限循环!
}
等价于:
for(;true;) { //这样写,是无限循环!
}
2.for中语句的执行顺序:
语句1->判断语句2->语句2若是true,则执行语句4->执行语句4->判断语句2->语句2若是true,则执行语句4->......
for(语句1;语句2;语句3) {
语句4
}
d.循环控制
continue: 跳出本次循环, 继续执行下一次
break: 结束循环, 执行循环外的代码
return: 结束方法, 循环外的代码也不会再执行了,若使用在main主方法中,则程序结束!
注:
outer:
for() {
for() {
break outer; //直接会跳出两层循环
}
}
三.数组
1.什么是数组
数组是一个类型一致, 长度不可变的容器
2.定义方式
int[] arr1 = {1, 2, 3}; // 定义数组, 指定元素, 这种方式只能用在给一个变量赋值的时候,
注:
不能写成这样的格式:
int[] arr1 ;
arr1= {1, 2, 3};
int[] arr2 = new int[]{1, 2, 3}; // 定义数组, 指定元素, 这种方式在任何情况下都能使用
int[] arr3 = new int[3]; // 定义数组, 指定长度为3, 其中所有元素都是默认值. 基本数据类型的默认值都是0
3.遍历数组
使用length属性可以获取数组长度, 定义循环, 从0循环到length-1, 每次获取其中一个元素
注:
int [] a = new int[size]; //这边的size类型,只能是int类型(byte,short,char也可以),但是long不可以!
4.常见异常
ArrayIndexOutOfBoundsException: 访问数组索引越界时出现
NullPointerException: 数组引用为空时出现
5.多维数组:
数组的数组
分配空间时,必须先分配高维,再分配低维
注:
int[][] arr = new int[3][];
arr[0]=new int[3];
arr[1]=new int[4];
arr[2]=new int[5];
也可定义如下格式:
int[][]arr = new int[3][4]; //新建一个包含3个元素的二维的数组,该数组的每个元素又是一个包含4个元素一维的数组
四.参数传递:
基本类型: 改变形参的值,不会影响到实参
引用类型: 通过形参的改变,实参也会受影响.因为都是指向堆中的同一地址的数据!
(内存图)
栈内存: 每运行一个函数,都会开辟一块栈内存,用来存放函数中定义的变量.
堆内存: 用来存放一些引用数据类型的数据