1.三种循环的更佳适用情况:
1)while:”当…”循环
2)do…while:”直到…”循环
第1要素与第3要素相同时首选do…while
3)for:固定次数循环,应用率最高
2.嵌套循环:
1)循环中套循环,一般多行多列时使用,外层控制行,内层控制列
2)执行规则:外层循环走一次,内层循环走所有次
3)建议:嵌套的层数越少越好,能用一层就不用两层若必须超过三层才能实现,说明设计有问题
4)break只能跳出一层循环
3.程序=算法+数据结构
1)算法:解决问题的流程/步骤(顺序、分支、循环)
2)数据结构:将数据按照某种特定的结构来保存数怎么存
设计良好的数据结构会导致好的算法
3.数组:
1)相同数据类型元素的集合
2)是一种数据类型(引用类型)
3)数组的定义:
int[] arr = new int[4];
4)数组的初始化:
int[] arr = new int[4]; //0,0,0,0int[] arr = {
1,4,5,8}; //1,4,5,8int[] arr = new int[]{
1,4,5,8}; //1,4,5,8int[] arr;arr = {
1,4,5,8}; //编译错误arr = new int[]{
1,4,5,8}; //正确
5)数组的访问:
5.1)通过(数组名.length)可以获取数组的长度
int[] arr = new int[5];System.out.println(arr.length); //5
5.2)通过下标来访问数组中的元素下标从0开始,最大到(数组.length-1)
int[] arr = new int[3];arr[0] = 100; //给arr中第1个元素赋值为100arr[1] = 200; //给arr中第2个元素赋值为200arr[2] = 300; //给arr中第3个元素赋值为300arr[3] = 400; //数组下标越界异常System.out.println(arr[arr.length-1]); //输出arr中的最后一个元素
6)数组的遍历:
int[] arr = new int[10];for(int i=0;i<arr.length;i++){arr[i] = (int)(Math.random()*100);}for(int i=0;i<arr.length;i++){ //正序System.out.println(arr[i]);}for(int i=arr.length-1;i>=0;i--){ //倒序System.out.println(arr[i]);
7)数组的复制:
7.1)
System.arraycopy(a,1,a1,0,4);
7.2)
int[] a1 = Arrays.copyOf(a,6);a = Arrays.copyOf(a,a.length+1); //扩容
8)数组的排序:
8.1)Arrays.sort(arr); //升序,效率高
8.2)冒泡排序:
8.2.1)四个数冒三轮
8.2.2)每一轮都是从第1个元素开始冒
每一次都是和它的下一个元素比
8.2.3)冒出来的就不带它玩了
数组的演示:
package day05;
import java.util.Arrays;
//数组的演示
public class ArrayDemo {public static void main(String[] args) {//6.数组的排序:int[] arr = {
23,4,1,27,76,45};for(int i=0;i<arr.length-1;i++){ //控制轮数for(int j=0;j<arr.length-1-i;j++){ //控制次数if(arr[j]>arr[j+1]){ //每一次都和它的下一个元素比int t=arr[j]; //若满足则交换arr[j]=arr[j+1];arr[j+1]=t;}//若前数大于后数则交换,保证前数小于后数--升序//若前数小于后数则交换,保证前数大于后数--降序}}for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}/*int[] arr = {
23,4,1,27,76,45};Arrays.sort(arr); //升序for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}*///5.数组的复制/*int[] a = {
10,20,30,40,50};//数组的扩容(创建一个新的数组并将源数组数据复制过去)a = Arrays.copyOf(a,a.length+1);for(int i=0;i<a.length;i++){System.out.println(a[i]);}*//*int[] a = {
10,20,30,40,50};//a:源数组//a1:目标数组//6:目标数组的长度int[] a1 = Arrays.copyOf(a,4);for(int i=0;i<a1.length;i++){System.out.println(a1[i]);}*//*int[] a = {
10,20,30,40,50};int[] a1 = new int[6]; //0,0,0,0,0,0//a:源数组//1:源数组的起始下标//a1:目标数组//0:目标数组的起始下标//4:要复制的元素个数System.arraycopy(a,1,a1,0,4);for(int i=0;i<a1.length;i++){System.out.println(a1[i]);}*//** 数组的练习:* 1.声明整型数组arr,包含5个元素* 2.声明整型数组arr1,并直接赋值为1,4,7* 声明整型数组arr2,先new再直接赋值为1,4,7* 3.输出arr的长度* 给arr中第1个元素赋值为100* 给arr中第2个元素赋值为200* arr[5]=300;------------------???* 输出arr中最后一个元素的值(下标不能写死)* System.out.println(arr[arr.length-1]);* 4.创建类MaxOfArray,在main()中:* 1)声明整型数组arr,包含10个元素* 2)遍历给arr中每个元素赋值为0到99的随机数* 3)遍历输出arr中每个元素的值* *//*//4.数组的遍历:int[] arr = new int[10];for(int i=0;i<arr.length;i++){arr[i] = (int)(Math.random()*100);}System.out.println("正序输出:");for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}System.out.println("倒序输出:");for(int i=arr.length-1;i>=0;i--){System.out.println(arr[i]);}*//*//3.数组的访问:int[] arr = new int[3];System.out.println(arr.length); //3arr[0] = 100; //给arr中第1个元素赋值为100arr[1] = 200;arr[2] = 300;//arr[3] = 400; //数组下标越界异常System.out.println(arr[arr.length-1]); //输出arr中最后一个元素的值*//*//2.数组的初始化int[] arr = new int[4]; //0,0,0,0int[] arr1 = {
1,4,6,8}; //1,4,6,8int[] arr2 = new int[]{
1,4,6,8}; //1,4,6,8int[] arr3;//arr3 = {
1,4,6,8}; //编译错误,此方式只能声明同时初始化arr3 = new int[]{
1,4,6,8}; //正确*//*//1.数组的定义//声明整型数组arr,包含5个元素//每个元素都是int型,默认值为0int[] arr = new int[5];*/}
}
冒泡排序:
package day05;
//冒泡排序
public class BubbleSort {public static void main(String[] args){int[] arr = new int[10];for(int i=0;i<arr.length;i++){arr[i] = (int)(Math.random()*100);System.out.println(arr[i]);}for(int i=0;i<arr.length-1;i++){ //控制轮数for(int j=0;j<arr.length-1-i;j++){ //控制次数if(arr[j]>arr[j+1]){ //每一次都和它的下一个元素比int t=arr[j]; //若满足则交换arr[j]=arr[j+1];arr[j+1]=t;}}}System.out.println("排序后:");for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}}
}
求数组元素最大值:
package day05;
import java.util.Arrays;
//求数组元素的最大值
public class MaxOfArray {public static void main(String[] args) {int[] arr = new int[10];for(int i=0;i<arr.length;i++){arr[i] = (int)(Math.random()*100);System.out.println(arr[i]);}int max = arr[0]; //假设第1个元素最大for(int i=1;i<arr.length;i++){ //遍历剩余元素if(arr[i]>max){ //若剩余元素>maxmax=arr[i]; //修改max为较大的值}}System.out.println("最大值为:"+max);//扩容(创建一个新数组并将源数组数据复制过去)arr = Arrays.copyOf(arr,arr.length+1);//将最大值max赋值给arr中的最后一个元素arr[arr.length-1] = max;for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}}
}
九九乘法表:
package day05;
//九九乘法表
public class MultiTable {public static void main(String[] args) {for(int num=1;num<=9;num++){ //控制行for(int i=1;i<=num;i++){ //控制列System.out.print(i+"*"+num+"="+i*num+"\t");}System.out.println(); //换行}/** num=3* i=1 1*3=3* i=2 2*3=6* i=3 3*3=9* i=4 false* 换行* num=2* i=1 1*2=2* i=2 2*2=4* i=3 false* 换行* num=1* i=1 1*1=1* i=2 false* 换行*/}
}