Java大数据学习第五天---while do-while循环 数组 方法重载 冒泡排序

Java大数据学习第五天---while do-while循环 数组 方法重载 冒泡排序,第1张

Java大数据学习第五天---while do-while循环 数组 方法重载 冒泡排序 复习 结构
  1. 顺序结构
  2. 分支结构 if
  3. 循环结构 for
  4. 选择结构 switch
变量
  1. 成员变量
  2. 局部变量
第五天 while循环
  1. 结构:

    while(循环条件){

    ​ 循环体;

    }

do-while循环
  1. 结构:

    do{

    循环体;

    }while(循环条件);

三种循环区别
  1. for:知道循环次数
  2. while/do while:当循环次数不确定时
  3. while:先判断,不符合规则,不执行代码
  4. do while:代码最少被执行一次,再去判断,符合规则,再次执行代码
  5. 循环之间都可以互相替代,但是一般最好选择合适的循环结构来完成代码哦~
数组
  1. 概念:

    数组Array,标志是[ ] ,用于储存多个相同类型数据的集合,想要获取数组中的元素值,可以通过脚标(下标)来获取,数组下标是从0开始的,下标的最大值是数组的长度减1

  2. 创建数组:

    • 静态创建
      • 类型[] 数组名={数组的组成元素}
      • 类型[] 数组名=new 类型{数组的组成元素}
    • 动态创建
      • 类型[] 数组名=new 类型[数组长度]
  3. 数组创建过程

    • 例子:程序创建数组 int[] a = new int[5]; 时发生了什么?
    1. 在内存中开辟连续的空间,用来存放数据,长度是5
    2. 给数组完成初始化过程,给每个元素赋予默认值,int类型默认值是0
    3. 数组完成初始化会分配一个唯一的地址值
    4. 把唯一的地址值交给引用类型的变量a去保存
  4. 数组长度:数组的长度用 length属性来表示,数组一旦创建,长度不可改变,数组的长度允许为0

    ​ 使用时 数组名.length

  5. 数组特性:

    1. 数组的长度通过**数组名.length;**来获取
    2. 数组一旦创建,长度无法改变
    3. 数组的下标从0开始,最大下标为数组长度-1
    4. 如果访问到了不存在的下标,会数组下标越界异常
  6. 数组的工具类Arrays

    • toString(数组名),除了char类型以外,其他类型的数组想要查看数组的具体元素,都得使用这个方法,如果不用,打印是数组的地址值
    • sort(数组名),给数组进行排序
    • copyOf(要复制的数组,新数组的长度)
      如果新的长度大于原数组的长度–数组的扩容
      如果新的长度小于原数组的长度–数组的缩容
      如果新的长度等于原数组的长度–普通的复制
      注意:不管是什么长度,都不是修改原数组,而是创建新数组
  7. 数组的遍历

    • 如果只是想查看数组中有哪些元素,直接使用System.out.println(Arrays.toString(数组名));就可以
    • 如果想要拿到数组中的一个个的具体元素,或者是对数组中的元素做进一步的 *** 作,就需要对数组进行遍历
    • 遍历:把数组中的所有元素,从头到尾逐个“过一遍”
    • 通过循环遍历数组,所以循环中的循环变量代表的是数组的下标
冒泡排序

排序思路:要比较多轮,每轮两个相邻的元素做比较,位置不对就互换
代码思路:
通过嵌套for循环来完成

外层循环:控制的是轮数,如果有n个数,最多n-1轮
内层循环:控制的是每轮中比较的次数,每一轮的次数会递减,之前轮确定的最大值不应该参与后面轮的比较
注意:外层循环的循环变量代表的是轮数1 2 3 4…
内层循环的循环变量代表的是数组的下标[0,a.length-i)

方法的重载

今日案例

案例一
package cn.yedu.review;

import java.util.Random;
import java.util.Scanner;

import javax.annotation.processing.SupportedSourceVersion;


public class TestWhile {
	public static void main(String[] args) {
		//需求  产生一个随机数,和用户猜的数字进行比较,直到用户猜对
		//1.创建并调用生成随机数的方法  根据业务分析 哟返回值
		int r = creatNum();
		System.out.println("生成的随机数:"+r);
		//3.创建并调用 猜数字的方法
		guessNum (r);
	
	}

	private static void guessNum(int r) {
		//让用户去猜数字
		
		while(true ){//死循环要设置出口
			//5.提示并接受用户才的数字
			System.out.println("猜猜看:");
			int input = new Scanner(System.in).nextInt();
			//6.判断用户是否猜对()
			if(input>r) {
				System.out.println("猜大了,悠着点");
			}else if(input100);
		
		
	}
}
案例三
    package cn.tedu.array;

import java.util.Arrays;


public class TestArray {
	public static void main(String[] args) {
		//1.创建数组
		//1.1静态创建数组--创建数组的时候已经确定了每个元素的具体值
		char[] c1= {'h','e','l','l','o'};//创建一个char类型数组  char[]   是一个引用类型 表示一个char类型数组
		char[] c2= new char[] {'h','e','l','l','o'};
		
		//1.2动态创建数组--只知道数组的长度 后续再动态给数组每个元素赋值
		char[] c3=new char[5];//在内存中开辟一块连续空间,用来存放5个字符--数组长度为5,有默认值
		
		c3[0]='h';
		c3[1]='e';
		c3[2]='l';
		c3[3]='l';
		c3[4]='o';
		//打印查看刚刚创建的数组
		System.out.println(c1);
		System.out.println(c2);
		System.out.println(c3);
		
		//3.创建String类型数组  存放 a  b  c
		//3.1静态
		String[] s1= {"a","b","c"};
		String[] s2= new String[]{"a","b","c"};
		String[] s3= new String[3];
		s3[0] = "a";
		s3[1] = "b";
		s3[2] = "c";
		
		System.out.println(Arrays.toString(s1));
		System.out.println(Arrays.toString(s2));
		System.out.println(Arrays.toString(s3));
	}
}
案例四
package cn.tedu.array;

import java.util.Arrays;


public class TestArray2 {
	public static void main(String[] args) {
		//1.
		int[] a= {1,2,3,4,5,6};
		int[] b=new int[] {1,2,3,4,5,6};
		int[] c= new int[6];
		c[0] = 1;
		c[1] = 2;
		c[2] = 3;
		c[3] = 4;
		c[4] = 5;
		c[5] = 6;
		System.out.println(Arrays.toString(a));
		System.out.println(Arrays.toString(b));
		System.out.println(Arrays.toString(c));
		
		System.out.println(a);
		
		System.out.println(a.length);//6  数组a的长度  
		
	}
}
案例五
package cn.tedu.array;

import java.util.Arrays;
import java.util.Random;


public class TestArrayExec {
	public static void main(String[] args) {		
		//1.创建一个获取1年中12个月每个月天数的方法 ,打印x月有x天
		dayOfMonth();
		//2.存数据 创建一个方法 像int数组存入1-10
		addNumToArrays();
		//3.创建随机数组:创建一个长度为6的随机整型数组 
		creatArrays();
	
	}
//3.
	private static void creatArrays() {
		int[] a=new int[6];//创建长度为6的动态数组
		for(int i = 0;i<6;i++) {//数组遍历 依次存入数据
			a[i]=new Random().nextInt(100);//随机0-100的数据
		}
		//循环结束 打印数组
		System.out.println(Arrays.toString(a));
	}
//2.
	private static void addNumToArrays() {
		//创建一个长度为10的int数组
		//遍历数组 像数组中每个位置依次存入数据
		int[] a=new int[10];
		for(int i=0;i<10;i++) {
			a[i]=i+1;			
		}
		//for循环结束之后
		//循环存入数据以后 打印查看数组中的具体元素
		System.out.println(Arrays.toString(a));
	}
//1.
	private static void dayOfMonth() {
		// 创建一个int类型数组来存12个月的天数
		int[] a= {31,28,31,30,31,30,31,31,30,31,30,31};
		//数组的遍历--
		//从那开始:数组的第一个元素:a[0]
		//到那结束:数组的第十二个元素:a[11]-----a[a.length-1]
		//如何变化:数组的下标++
		for(int i=0;i<=a.length-1;i++) {
			System.out.println(a[i]);
			System.out.println((i+1)+"月有"+a[i]+"天");
		}
		
	}
}
案例六
 package cn.tedu.array;

import java.util.Arrays;


public class TestArraysCopyOf {
	public static void main(String[] args) {
		//1.创建数组
		int[] from= {1,2,3,4,5};//数组一旦创建,长度不可改变
		//1.1数组的普通复制
		
		int[] to=Arrays.copyOf(from,5);//有返回值  所以要用int[]接受一下复制完毕的新数组	
		System.out.println(Arrays.toString(to));//[1,2,3,4,5]
		
		//1.2数组的扩容
		
		int[] to2=Arrays.copyOf(from,10);	
		System.out.println(Arrays.toString(to2));//[1,2,3,4,5,0,0,0,0,0]
		
		//1.3数组的缩容
		
		int[] to3=Arrays.copyOf(from,3);
		System.out.println(Arrays.toString(to3));//[1,2,3]
		
		//1.4 指定首尾 截取原数组中的元素
		
		int[] to4=Arrays.copyOfRange(from,2,4);
		System.out.println(Arrays.toString(to4));//[3,4]
		
		int[] to5=Arrays.copyOfRange(from,1,7);//截取并扩容
		System.out.println(Arrays.toString(to5));//[2,3,4,5,0,0]  
		
		
		
	}
	
		
}   
案例七
package cn.tedu.basic;

import java.util.Arrays;


public class BubbleSort {
	public static void main(String[] args) {
		//创建一个无序数组
		int[] a= {27,96,73,25,21};
		//调用自己实现的排序方法进行排序
		//方法一
		method(a);
		//方法二  
		
		Arrays.sort(a);
		System.out.println(Arrays.toString(a));
	}

	private static void method(int[] a) {
		//外层循环 控制比较的轮数 假设有n个数 最多比较n-1轮
		//循环变量代表的是轮数 比如五个数 最多比较四轮,i取值[1,2,3,4]代表4轮
		for(int i=1;i<=a.length-1;i++) {
			System.out.println("第"+i+"轮");
			//内层循环 控制数组中的两个相邻元素进行比较 位置不对就进行互换位置
			//循环变量代表的是数组的下标
			for(int j=0;ja[j+1]) {
					//交换位置
					int t;
					t=a[j];
					a[j]=a[j+1];
					a[j+1]=t;
					
				}
			}
			System.out.println("第"+i+"轮比较后的结果:"+Arrays.toString(a));
		}
		System.out.println(Arrays.toString(a));
	}
}    
案例八
package cn.tedu.basic;

public class TestMethod {
	public static void main(String[] args) {
		
		
		
		//1
		method();
		//2
		method(666);
		//3
		method(999,"感冒灵");
		//4
		method("感冒灵",999);
	}
	
	//1
	private static void method() {
		System.out.println("哈哈哈我没有参数~~");
	}
	//2
	private static void method(int a) {
		System.out.println("哈哈哈哈我的参数是:"+a);
	}
	//3
	private static void method(int a,String b) {
		System.out.println("哈哈哈我没有参数~~");
	}
	//4
	private static void method(String a,int b) {
		System.out.println("哈哈哈我没有参数~~");
	}
}
        
        
        
        
        
        

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5654228.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存