(1):运算符
A什么是运算符?
就是对常量和变量进行操作的符号
B运算符的分类以及有哪些?
算术运算符,赋值运算符,比较(关系或条件)运算符,逻辑运算符,位运算符,三目(元)运算符
+,-,*,/,%,++,--
(2)++和--的使用
++:自加。对原有的数据进行+1
--:自减。对原有的数据进行-1
(3)关系运算符的使用
关系运算符有哪些(比较运算符)
==,!=,>,>=,<,<=
(4) if 语句的三种格式
A,
<span style="font-size:18px;">if语句的格式1 if(比较表达式) { 语句体; }</span>
执行的流程
先计算比较表达式的值,看其返回值是true还是false。
如果是true,就执行语句体;
如果是false,就不执行语句体;
B,
<span style="font-size:18px;">if语句的格式 if(比较表达式) { 语句体1; }else { 语句体2; }</span>
执行流程:
* 首先计算比较表达式的值,看其返回值是true还是false。
* 如果是true,就执行语句体1;
* 如果是false,就执行语句体2;
C,
执行流程:
<span style="font-size:18px;">if(比较表达式1) { 语句体1; }else if(比较表达式2) { 语句体2; }else if(比较表达式3) { 语句体3; } ... else { 语句体n+1; }</span>
(二)for循环结构的格式和使用
(1)for的分类和语句格式
A:循环结构的分类
* for,while,do...while
B:循环结构for语句的格式 for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; }
C:执行流程:
* a:执行初始化语句
* b:执行判断条件语句,看其返回值是true还是false
* 如果是true,就继续执行
* 如果是false,就结束循环
* c:执行循环体语句;
* d:执行循环后的操作表达式
* e:回到B继续。
(2)while循环语句的格式和流程
A,格式 while循环的基本格式: while(判断条件语句) { 循环体语句; } 完整格式: 初始化语句; while(判断条件语句) { 循环体语句; 控制条件语句; }
B,执行流程:
* a:执行初始化语句
* b:执行判断条件语句,看其返回值是true还是false
* 如果是true,就继续执行
* 如果是false,就结束循环
* c:执行循环体语句;
* d:执行控制条件语句
* e:回到B继续。
(3)do....while循环语句
A,循环结构do...while语句的格式:do { 循环体语句; }while(判断条件语句); 完整格式; 初始化语句; do { 循环体语句; 控制条件语句; }while(判断条件语句);
B,执行流程:
* a:执行初始化语句
* b:执行循环体语句;
* c:执行控制条件语句
* d:执行判断条件语句,看其返回值是true还是false
* 如果是true,就继续执行
* 如果是false,就结束循环
* e:回到b继续。
(4)三种循环语句的区别
三种循环语句的区别:
* do...while循环至少执行一次循环体。
* 而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
for循环和while循环的区别:
如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用谁就用for循环。因为变量及早的从内存中消失,可以提高内存的使用效率。
/* * 需求:在控制台输出所有的”水仙花数” * 所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。 * 举例:153就是一个水仙花数。 * 153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153 分析: 1,100 - 999 2,获取每一个位数的值,百位,十位,个位 3,判断各个位上的立方和是否等于这个数,如果等于打印 */ class Test3_Flower { public static void main(String[] args) { for (int i = 100;i <= 999 ;i++ ) { //获取100到999之间的数 int ge = i % 10; //123 % 10 int shi = i / 10 % 10; //12 % 10; int bai = i / 10 / 10 % 10; //1 % 10 if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) { System.out.println(i); } } } }B,while循环的简单举例
class Test1_While { public static void main(String[] args) { /* * A:求和思想 * 求1-100之和 * B:统计思想 * 统计”水仙花数”共有多少个 */ //求1-100之和 /*int sum = 0; int i = 1; while (i <= 100) { sum += i; //sum = sum + i; i++; //让变量i自增 } System.out.println("sum = " + sum);*/ //统计”水仙花数”共有多少个 int count = 0; //计数器 int i = 100; while (i <= 999) { int ge = i % 10; int shi = i / 10 % 10; int bai = i / 100; if (i == ge * ge * ge + shi * shi * shi + bai * bai * bai) { count ++; } i++; }C,for嵌套循环
/* * A:案例演示 * 需求:请输出一个4行5列的星星(*)图案。 * 如图: ***** ***** ***** ***** 注意: System.out.println("*");和System.out.print("*");的区别 * B:结论: * 外循环控制行数,内循环控制列数 */ class Demo1_ForFor { public static void main(String[] args) { /*for (int i = 1;i <= 3 ;i++ ) { //外循环 System.out.println("i = " + i); for (int j = 1;j <= 3 ;j++ ) { //内循环 System.out.println("j = " + j); } }*/ for (int i = 1;i <= 4 ;i++ ) { //外循环决定的是行数 for (int j = 1;j <= 5 ;j++ ) { //内循环决定的是列数 System.out.print("*"); } System.out.println(); } } }
<span style="font-size:18px;">package com.heima.array; public class Demo1_Array { /** * * A:案例演示 * 数组高级冒泡排序代码 */ public static void main(String[] args) { int[] arr = {24, 69, 80, 57, 13}; bubbleSort(arr); //selectSort(arr); print(arr); } /* * 冒泡排序 * 1,返回值类型,void * 2,参数列表,int[] arr * * 第一次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3],arr[3]与arr[4]比较4次 第二次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3]比较3次 第三次:arr[0]与arr[1],arr[1]与arr[2]比较2次 第四次:arr[0]与arr[1]比较1次 */ public static void bubbleSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { //外循环只需要比较arr.length-1次就可以了 for (int j = 0; j < arr.length - 1 - i; j++) { //-1为了防止索引越界,-i为了提高效率 if(arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j+1] = temp; } } } } /* * 打印数组 * 1,返回值类型void * 2,参数列表int[]arr */ public static void print(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } }</span>
<span style="font-size:18px;">public static void selectSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { //只需要比较arr.length-1次 for (int j = i + 1; j < arr.length; j++) { if(arr[i] > arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } }</span>(2)折半查找排序代码演练(面试常用的)
public static void main(String[] args) { int [] arr = {3,4,1,2,6,7,9}; bubbleSort(arr); System.out.println(binaryArray(arr,9)); } public static void bubbleSort(int[] arr) { for (int i = 0; i < arr.length-1; i++) { for (int j = 0; j < arr.length-i-1; j++) { int temp = arr[j]; arr[j] = arr[j+1]; arr[i] = temp; } } } /* 数组高级二分查找代码 */ public static int binaryArray(int[] arr,int value) { int min = 0; int max = arr.length-1; int mid = (min+max)/2; while(arr[mid]!=value) { if (value>mid) { min = mid+1; }else if(value<min) { max = mid-1; } mid = (min+max)/2; if (min>max) { return -1; } }return mid; }
(三) 方法的概述和格式说明
A:为什么要有方法
* 提高代码的复用性
* B:什么是方法
* 完成特定功能的代码块。 方法是一个功能,一种动作,一种行为
* C:方法的格式
*
修饰符返回值类型方法名(参数类型 参数名1,参数类型 参数名2...) {
方法体语句;
return 返回值;
}
* D:方法的格式说明
* 修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。
* 返回值类型:就是功能结果的数据类型。
* 方法名:符合命名规则即可。方便我们的调用。
* 参数:
* 实际参数:就是实际参与运算的。
* 形式参数;就是方法定义上的,用于接收实际参数的。
* 参数类型:就是参数的数据类型
* 参数名:就是变量名
* 方法体语句:就是完成功能的代码。
* return:结束方法的。
* 返回值:就是功能的结果,由return带给调用者。
(四)方法的重载和使用
A:方法重载概述
* 求和案例
* 2个整数
* 3个整数
* 4个整数
* B:方法重载:
函数重载(Overload):
在同一个类中,方法名相同,参数列表不同(参数个数不同,对应位置的类型不同)的情况就叫方法重载,与返回值无关。
(与返回值无关:不能通过返回值的不同来实现方法重载,可以用调用不明确的问题来解释
* 参数列表不同:
* A:参数个数不同
* B:参数类型不同
* C:参数的顺序不同(算重载,但是在开发中不用)