JAVA第二周小结(上)

目录

1.三目运算符

2.循环结构

3.for循环【重点】

4.嵌套循环【重点难点】

5.方法

6.数组 



1.三目运算符

        语法格式:

        数据类型 x = (表达式) ?  value1 :  value2;

        执行流程: 来判断表达式 你如果表达式为true 就将value1赋值给x这个变量, 如果为false         就 将value2赋值给变量x

package com.qf.a_sanmu;

public class Demo1 {
	public static void main(String[] args) {
		int a = 30;
		int c;
		//int c = a > 31 ? 20 : 21;
		//执行流程:  判断a > 31 的值  如果 是true 将 20赋值给c     如果是false 将21 赋值给c
		//System.out.println(c);
		//三目运算符和if-else  类似
		
		if (a > 31) {
			c = 20;
		} else {
			c = 21;
		}
		System.out.println(c);
		
		
	}
}

2.循环结构

       while循环

        语法格式: while (布尔表达式) {
                    语句体
        }

        执行流程: 当代码执行到while关键字的时候,先去判断布尔表达式,如果布尔表达式为false,就不会执行

语句体。如果布尔表达式为true 执行语句体,然后(重要) 再去判断布尔表达式,如果布尔表达式为true

执行语句体,然后再去判断布尔表达式,直到布尔表达式为false的时候,循环就结束了(就不再执行语句体了)。接着执行循环以外的代码

package com.qf.a_sanmu;

public class Demo3 {
	public static void main(String[] args) {
		//打印4遍的中午吃烤羊排,使用while循环
		
		//无论任何循环  都要必须有三个条件:
			//1.初始化条件
			//2.循环条件
			//3.终止条件
		
		/**
		 * 分析代码,主要是分析执行的流程:
		 * i=0   0<4  true  执行大括号里面的代码  打印第一次的  中午吃烤羊排  i++
		 * i=1   1<4 true 执行大括号里面的代码  打印第二次的  中午吃烤羊排  i++
		 * i=2   2<4 true 执行大括号里面的代码  打印第三次的  中午吃烤羊排  i++
		 * i=3   3<4 true执行大括号里面的代码  打印第四次的  中午吃烤羊排  i++
		 * i=4  4<4 false  就不再执行大括号中的代码了!!!
		 */
		//1.声明一个变量
		int i = 0;//初始化条件
		while (i < 4) {// i <  4  终止条件   
			System.out.println("中午吃烤羊排");
			i++;//i++  是循环条件  自身加1
		}
		
		
	}
}

3.for循环【重点】

        语法格式:

        for (表达式1; 布尔表达式2; 表达式3) {
                    语句体
        }

表达式1: 初始化的条件

表达式2: 终止条件

表达式3: 循环条件

执行流程: 首先执行表达式1,再执行表达式2,如果布尔表达式2为true,执行大括号中语句体。然后再执行表达式3,再执行表达式2,再次判断布尔表达式2,直到为false,就不执行语句体。就意味着循环结束

package com.qf.a_sanmu;

public class Demo9 {
	public static void main(String[] args) {
		//打印3遍今天好热,但是我穿了棉袄
		
		/**
		 * i = 0   0 <3  true  执行大括号中的语句体  打印第一遍的今天好热,但是我穿了棉袄  i++
		 * i = 1   1<3  true 执行大括号中的语句体  打印第二遍的今天好热,但是我穿了棉袄 i++
		 * i=2 2<3   true执行大括号中的语句体  打印第三遍的今天好热,但是我穿了棉袄 i++
		 * i=3 3<3  false  大括号中的代码不再执行 循环结束了
		 */
		for (int i = 0; i < 3; i++) {
			System.out.println("今天好热,但是我穿了棉袄");
		}
		
	}
}	

4.嵌套循环【重点难点】

前提是循环

一个循环里面套另外一个循环。秉承着一个特点: 从外层循环先进入到内层循环,然后 内存循环先结束

然后再回到外层循环,再进入到内层循环,内层循环结束,再会带外层循环

package com.qf.a_sanmu;

public class Demo14 {
	public static void main(String[] args) {
		//打印直角三角形
		
		/**
		 * i = 1  1<5 true 执行大括号内的内层的for循环
		 * 		j=1 1<=1  true 打印1个*  j++
		 * 		j=2 2<=1 false 立马换行   i++
		 * i = 2  2<5  true 执行大括号内的内层的for循环
		 * 		j=1 1<= 3  true  打印*  j++
		 * 		j=2 2<= 3 true   打印一个* j++
		 * 		j=3 3<=3  true   打印一个* j++
		 * 		j=4 4<=3 false 内层循环结束  换行 i++
		 * i= 3 3<5  true 执行大括号内的内层的for循环
		 * 		j=1  1<=5 true  打印一个* j++
		 * 		...
		 * 		j=4  4<=5 true  打印一个* j++
		 * 		j=5  5<=5 true  打印一个* j++		
		 * 		j=6  6<=5  false  内层循环结束  换行 i++
		 * i= 4 4<5  true 执行大括号内的内层的for循环
		 * 		j=1 1<=7  true  打印一个*  j++
		 * 		...
		 * 		j=7 7<=7 true 打印一个*   j+=
		 * 		j=8 8<= 7false  内层循环结束  换行 i++
		 * i=5 5<5  false 整体循环结束
		 * 		
		 */
		for (int i = 1; i < 5; i++) {
			for (int j = 1; j <= (2 * i) - 1; j++) {
				System.out.print("*");
			}
			System.out.println();//换行
		}
	}
}

5.方法

定义方法的语法格式

      无参 无返回值的方法:

        语法格式:

public static void 方法的名字 () {
 语句体
}

注意事项:

1.方法的声明必须放在类中,main方法的外面

2.方法声明完以后,一定要记得在main函数中调用

package com.qf.a_homework;

public class Demo6 {
	//main方法必须要有的
	public static void main(String[] args) {
		//必须在main主函数中调用 才会执行
		//方法的调用
		printEatSheep();
		
	}
	//打印5遍的中午吃烤喜羊羊
	//void 是无返回值的
	//printEatSheep  方法的名字 和变量的命名规则是一样的
	public static void printEatSheep ()  {
		//大括号中写语句体,就是咱们需求功能
		for (int i = 0; i < 5; i++) {
			System.out.println("中午吃烤喜羊羊");
		}
	}
	
	
}

      有参 无返回值的方法:

        语法格式:

        public static void 方法的名字 (数据类型 变量1, 数据类型 变量2,... ) {
 语句体
}

package com.qf.a_homework;

public class Demo8 {
	public static void main(String[] args) {
		//34是实参  实际参数
		printNum(34);
		printHello(8);
		//printHello("goudan");
		printStr("孤舟蓑笠翁,独钓寒江雪");
		
		printNStr(9, "已是黄昏独自愁");
	}
	public static void  printNum (int sb) {//int  num  是形参  形式参数
		System.out.println(sb);
	}
	
	//打印n遍的hello  world
	public static void printHello (int num) {
		for (int i = 0; i < num; i++) {
			System.out.println("hello world");
		}
	}
	//打印随便字符串  打印8遍
	public  static void printStr(String str) {
		for (int i = 0; i < 8; i++) {
			System.out.println(str);
		}
	}
	//打印n遍的随便的字符串
	public static void printNStr (int a, String str) {
		for (int i = 0; i < a; i++) {
			System.out.println(str);
		}
	}
	
}

      无参有返回值的方法:

        语法格式:

        public static  数据类型 方法的名字() {
 
 return 返回的数据;//返回的数据的数据类型一定是声明方法的时候  的数据类型是一致的
}

package com.qf.a_homework;

public class Demo9 {
	public static void main(String[] args) {
		int a = giveNum();//  会返回一个值  5  将返回的数据 给变量 a
		System.out.println(a);
		
		
		System.out.println(giveString());//可以将返回的值  直接打印的
		//System.out.println(str);
		
	}
	//声明一个无参有返回值的方法
	public  static int giveNum () {
		
		return 5;//返回一个5 这个整型的数据
	}
	
	//声明一个返回值是字符串类型的数据的方法
	public static String giveString () {
		String str = "呵呵 爽啊 ";
		str += "xixi";
		return str;
	}
	
	
}

      有参有返回值的方法:

        语法格式:

        public  static 数据类型  方法的名字 (数据类型 变量1, 数据类型 变量2,...) {
     return  返回的数据;
}

package com.qf.a_homework;

public class Demo10 {
	public static void main(String[] args) {
		
		int sum = add(3, 4);
		System.out.println(sum);
	}
	public static int  add(int a , int b) {
		return a + b;
	}
}

6.数组 

数组在Java中如何定义的

变量定义:

数据类型 变量名字 = 值;

数组定义:

数据类型[] 数组名字 = 数组的值;

数组详细的语法格式:

第一种:

数据类型[]   数组的名字 = {值1, 值2, 值3,...};
或
数据类型   数组的名字 []= {值1, 值2, 值3,...};

第二种:

数据类型[]   数组的名字 = new  数据类型[容量];
或者
数据类型 数组的名字[] = new  数据类型[容量];

第一种和第二种区别: 第一种即声明了数组又对数组赋值了

第二种只是声明空的数组而已,暂时还没有赋值

第三种:【很少】

语法格式:

数据类型[] 数组的名字  = new 数据类型[]{值1, 值2, 值3,...};

其实是第一种的完全写法

package com.qf.test;

import java.util.Arrays;

public class Demo4 {
	public static void main(String[] args) {
		//数组第一种声明方式 :数据类型[]   数组的名字 = {值1, 值2, 值3,...};
		int[] arr = {23, 34, 12, 15};
		System.out.println(arr);//[I@15db9742  内存地址   但是数据看不到 那咋办?
		System.out.println(Arrays.toString(arr));//  将一个内存地址形式的数据变成 人类可以看懂的
		//[23, 34, 12, 15]
		
		String[] strs = {"狗蛋","文博", "广瑞"}; 
		System.out.println(strs);//@6d06d69c
		System.out.println(Arrays.toString(strs));//[狗蛋, 文博, 广瑞]
		
		boolean[] bools = {true, true, false, true};
		System.out.println(bools);//[Z@7852e922
		System.out.println(Arrays.toString(bools));//[true, true, false, true]
		
		float[] f2 = {12.3f, 45.6F};
		
		
		//声明一个char类型的数组
		char[]  chs = {'a', '中', '9'};
		System.out.println(chs);//a中9  这个比较特殊 打印不是地址  是数组中值组成的
		
	}
}
package com.qf.test;

import java.util.Arrays;

public class Demo5 {
	public static void main(String[] args) {
		
		//第二种声明方式: 数据类型[]   数组的名字 = new  数据类型[容量];
		int[] arr = new int[3];//在声明一个数组 ,且容量为3  只能存放3个数据  空的数组
		//arr = {0,0,0};
		System.out.println(arr);//内存地址
		System.out.println(Arrays.toString(arr));//[0, 0, 0]
		//此时是空的数组  
		String[] strs = new String[4];
		System.out.println(strs);
		System.out.println(Arrays.toString(strs));//[null, null, null, null]
		//这种方式的声明 是好比弄好了桌子 空桌子  
		

		
		
		
	}
}

1.3第二种声明方式 是空的数组,如何赋值

package com.qf.test;

import java.util.Arrays;

public class Demo7 {
	public static void main(String[] args) {
		//第二种数组的声明方式
		int[] arr = new int[3];//arr = {0,0,0};
		//对这个空的数组进行的的赋值
		arr[0] = 23;//将23d赋值给 下标为0 的arr这个数组  arr = [23, 0, 0]
		//System.out.println(Arrays.toString(arr));
		arr[1] = 45;
		//System.out.println(Arrays.toString(arr));//arr = [23, 45, 0]
		arr[2] = 678;
		System.out.println(Arrays.toString(arr));//arr = [23, 45, 678]
		//arr[3] = 250;  这个下标越界
		//ArrayIndexOutOfBoundsException   数组下标越界
		//System.out.println(Arrays.toString(arr));
		
		
		System.out.println("=========");//arr = [23, 45, 678]
		/**
		 * i=0  0<3  true   arr[0] = 89   arr = [89, 45, 678] i++
		 * i=1 1<3  true  arr[1] = 90 arr=[89, 90, 678] i++
		 * i=2 2<3  true  arr[2]= 91  arr =[89, 90, 91] i++
		 * i=3 3<3 false  循环结束以后  arr =[89, 90, 91]
		 */
		for (int i = 0; i < 3; i++) {
			arr[i] = 89 + i;
		}
		
		System.out.println(Arrays.toString(arr));//[89, 90, 91]
		
	}
}

对数组进行取值

通过下标来取值

package com.qf.test;

public class Demo8 {
	public static void main(String[] args) {
		int[] arr = {32, 45, 89, 12, 999, 5667};
		//获取数组中的值
		System.out.println(arr[0]);//32
		System.out.println(arr[1]);//45
		System.out.println(arr[2]);//89
		System.out.println(arr[3]);//12
		System.out.println("==============");
		
		for (int i = 0; i < 4; i++) {
			//i的循环的值 刚好作为数组的下标
			System.out.println(arr[i]);
		}
		
		//数组.length    数组的长度
		System.out.println(arr.length);//  arr的长度    4
		
		System.out.println("---------------");

		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
		
		
		
		String[] strs = {"张三", "狗蛋", "麻子", "嘻嘻"};
		for (int i = 0; i < strs.length; i++) {
			System.out.println(strs[i]);
		}
		
	}
}

数组可以 作为方法的参数

方法的参数 可以是哪些数据类型? 八大基本数据类型 和String

同理 数组也是可以作为方法的参数的

package com.qf.test;

import java.util.Arrays;
import java.util.Scanner;

public class Demo11 {

	public static void main(String[] args) {
		int[] arr2 = new int[3];//arr2 = {0,0,0};
		setArr(arr2);//arr2 = {89, 90, 91}
		System.out.println(Arrays.toString(arr2));//{89, 90, 91}
	}
	//准备对数组进行赋值
	public static void setArr (int[] arr) {//arr必须是空的数组 {0,0,0}
		Scanner scanner = new Scanner(System.in);
		
		/**
		 * i=0  0< 3  打印 :  请输入第1数   在控制台中输入了87   ===》  scanner.nextInt()=87  执行
		 * 				arr[0] = 87    arr = {87, 0,0}  i++
		 * i=1 1<3  打印:  请输入第2数   在控制台中输入 100  scanner.nextInt()=100
		 * 				arr[1] = 100  arr = {87,100, 0} i++
		 * i=2 2<3  打印:  请输入第3数  在控制台中输入  190  scanner.nextInt();=190
		 * 				arr[2] = 190 arr = {87, 100, 190}; i++
		 * i=3 3<3 false
		 */
		for (int i = 0; i < arr.length; i++) {
			System.out.println("请输入第" + (i + 1) + "数");
			arr[i] = scanner.nextInt();
			//arr[0] = 100   arr = {100,0,0}
			//arr[1] = 90    arr = {100, 90, 0}
			//arr[2] = 20    arr={100, 90, 20}
			
		}
		//arr = {89, 90, 91}
	}
}

数组可以作为方法的返回值

方法的返回值可以是八大基本数据类型 和String ,数组也是作为返回值的

package com.qf.test;

import java.util.Arrays;

public class Demo14 {

	public static void main(String[] args) {
		int[] arr = {9, 8, 7, 6};
		int[] arr2 = reverse(arr);
		System.out.println(Arrays.toString(arr2));
	}
	{1,2,3,4}  =>  {4,3,2,1}
	public static int[] reverse (int[] arr) {
		int[] arr1 = new int[arr.length];//创建了一个空的数组 长度 和 arr一样的
		for (int i = 0, j = arr.length - 1; i < arr.length; i++, j--) {
			arr1[j] = arr[i];
		}
		return arr1;
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值