基本循环语句的使用和方法(函数)的定义


(一)Java语言基础

(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>

* 首先计算比较表达式1看其返回值是true还是false,
 * 如果是true,就执行语句体1,if语句结束。
 * 如果是false,接着计算比较表达式2看其返回值是true还是false,
 
 * 如果是true,就执行语句体2,if语句结束。
 * 如果是false,接着计算比较表达式3看其返回值是true还是false,
 
 * 如果都是false,就执行语句体n+1。

 

(二)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循环。因为变量及早的从内存中消失,可以提高内存的使用效率。

 (5)循环语句实例举例

A,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嵌套循环
(1)
求请输出一个4行5列的星星(*)图案。

如图:
*****
*****
*****
*****
/*
* 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();
		}
	}
}

(2)冒泡排序代码演练(面试常用的)
<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>

(2)选择排序代码演练(面试常用的)
<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)折半查找排序代码演练(面试常用的)
*思路:
* int [] arr = {3,4,1,2,6,7,9};
* 无序的,所以先排序,在二分法查找.
* 在输出print();
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:参数的顺序不同(算重载,但是在开发中不用)

 

 

你可能感兴趣的:(黑马程序员)