一、基础语法
1.++和- - 的用法
①如果++或者--在变量的后面,先拿变量参与操作,后变量做++或者--。
②如果++或者--在变量的前面,先变量做++或者--,后拿变量参与操作。
2.&&与&的区别
①最终结果一样。
②&&具有短路效果。左边是false,右边不执行。
③&是无论左边是false还是true,右边都会执行。
3.||和|的区别
①最终结果一样。
②||具有短路效果,左边是true,右边不执行。
③|是无论左边是false还是true,右边都会执行。
4.三元运算符概述
①(关系表达式)?表达式1:表达式2;
②如果条件为true,运算后的结果是表达式1;
③如果条件为false,运算后的结果是表达式2;
// 获取两个数中大数 int x=3,y=4,z; z = (x>y)?x:y; // z变量存储的就是两个数的大数
5.键盘录入数据的步骤
①导包(位置放到class定义的上面)。
import java.util.Scanner;
②创建对象
Scanner sc = new Scanner(System.in);
③接收数据
int x = sc.nextInt();
6.continue的作用
①break 退出当前循环。
②continue 退出本次循环。
二、一维数组
1.Random的使用
①导包
import java.util.Random;
②创建对象
Random r = new Random();
③获取随机数
int number = r.nextInt(10);
2.数组的定义格式
1) 数组概念
①数组是存储同一种数据类型多个元素的容器。
②数组既可以存储基本数据类型,也可以存储引用数据类型。
2) 数组的定义格式
①数据类型[ ] 数组名;
②数据类型 数组名[ ];
3.数组的初始化
①Java中的数组必须先初始化,然后才能使用。
②初始化就是为数组中的数组元素分配内存空间,并为每个数组元素赋值,分为动态初始化和静态初始化。
4.动态初始化
①动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
②格式:数据类型[ ] 数组名 = new 数据类型[数组长度];
③数组长度其实就是数组中元素的个数。
int[ ] arr = new int[3];
解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值。
5.静态初始化
①静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
②格式:数据类型[ ] 数组名 = new 数据类型[ ]{元素1, 元素2, 元素3...}。
③简化:数据类型[ ] 数组名 = {元素1, 元素2, 元素3}。
int[ ] arr = {1,2,3};
6.数组的元素访问
System.out.println(arr); // [I@3fa5ac,地址值 // 获取到地址值没有意义,应该要数组中的数据值 // 其实数组中的每个元素都是有编号的,编号是从0开始的,最大的编号就是数组的长度-1 // 用数组名和编号的配合我们就可以获取数组中的指定编号的元素 // 这个编号的专业叫法:索引 // 格式:数组名[编号] -- 数组名[索引] System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]);
7.数组使用的两个小问题
1) 数组越界异常
产生的原因:访问了不存在的索引元素。
java.lang.ArrayIndexOutOfBoundsException
2) 空指针异常
产生的原因:数组已经不指向堆内存的数据了,还使用数组名去访问元素。
java.lang.NullPointerException
9.数组获取最值(最大值和最小值)
public class ArrayTest2 { public static void main(String[] args) { //定义数组 int[] arr = {12,98,45,73,60}; //定义参照物 int max = arr[0]; //遍历数组,获取除了0以外的所有元素,进行比较 for(int x=1; x<arr.length; x++) { if(arr[x] > max) { max = arr[x]; } } System.out.println("数组中的最大值是:"+max); } }
三、二维数组
1.二维数组
指元素为一维数组的数组。
2.定义格式
①数据类型[ ][ ] 数组名。
②数据类型 数组名[ ][ ],不推荐。
③数据类型[ ] 数组名[ ],不推荐。
3.动态初始化
①数据类型[ ][ ] 数组名 = new 数据类型[m][n];
②m表示这个二维数组有多少个一维数组。
③n表示每一个一维数组的元素有多少个。
4.静态初始化
①数据类型[ ][ ] 数组名 = new 数据类型[ ][ ]{{元素...},{元素...},{元素...},...};
②简化:数据类型[ ][ ] 数组名 = {{元素...},{元素...},{元素...},...};
5.二维数组的遍历
遍历思想:首先使用循环遍历出二维数组中存储的每个一维数组,然后针对每个遍历到的一维数组在使用循环遍历该一维数组中的元素。
public class ArrayArrayTest { public static void main(String[] args) { // 定义二维数组 int[ ][ ] arr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; for(int y=0; y<arr.length; y++) { for (int x = 0; x < arr[y].length; x++) { System.out.print(arr[y][x] + " "); } System.out.println(); } } }
四、方法的概述及基本使用
1.方法格式
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
方法体;
return 返回值;
}
2.方法格式解释
①修饰符:目前记住 public static。
②返回值类型:用于限定返回值的数据类型 。
③方法名:一个名字,为了方便我们调用方法 。
④参数类型:用于接收调用方法时传入的数据的类型 。
⑤参数名: 用于接收调用方法时传入的数据的变量 。
⑥方法体:完成功能的代码 。
⑦return:结束方法,把返回值带给调用者。
3.定义方法注意事项
①返回值类型:明确功能结果的数据类型 。
②参数列表:明确有几个参数,以及参数的类型。
五、方法的重载及参数传递
1.方法重载的概述
①在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
2.方法重载特点
①与返回值类型无关,只看方法名和参数列表 。
②在调用时,虚拟机通过参数列表的不同来区分同名方法。
3.方法中参数传递
①形式参数的改变不影响实际参数。
②形式参数:用于接收实际数据的变量 。
③实际参数:实际参与运算的变量。