6月30日与7月1日课程总结(又是数组内容)

一.数组的定义

数组:可以存放一组相同数据类型的值
变量:只能存放单个的值
 * 
 * 如何定义数组?
 * 三种:
 * 第一种: int[] arr = new int[];
 * 创建了一个int类型的数组,指定的长度是4
 * (也就是里面最多能存放4个int类型的值)
 * 
 * 第二种:int[] arr = {10,20,30};
 * 
 * 第三种:int[] arr = new int[]{10,20,30};
 * 
 * 数组的特点:
 * 1.数组有下标(相当于是数组中每个值对应的序号)
 * 注意:这个下标值(序号)是从0开始的

各种类型数组的默认值:

              int数组的默认值是0,整数类型输出都是0
             * double数组的默认值是0.0,小数类型默认值都是0.0
             * String数组的默认值是null
             * boolean数组的默认值是false
             * char数组的默认值是'\u0000'
 * 

二.数组的遍历

数组的遍历:挨个查看数组中的每一个值
             * 注意:因为下标都是从0开始的,而且每次递增1,那么刚好可以利用for循环变量的值和递增来代表数组的下标值,这样,我们就可以通过for循环来遍历到数组中的每一个值

注意:数组类型的变量,不能直接输出,这样打印的是一堆地址的值.
             * 如果想输出数组中的内容,有两种方式:
             * 1.使用Arrays工具类,将数组转换成字符串

                syso(Arrays.toString);
             * 2.遍历数组

                遍历数组可以用一般for循环挨个输出数组中的数,也可以采用下面这种加强for循环

                int [] arr2 = {1,2,3,4};
            for(int a:arr2){
                System.out.println(a);
            }//专门用来遍历数组,其详细过程跟for循环一样是从第一个开始遍历数组,只是省略了括号里的内容,改用另一种专门的格式

                插入一个面试题:length和length()的区别?
                                          length:是数组中用来获取长度的属性
                                          length();是字符串获取长度的方法

        插入这个小的只是点是因为遍历数组的时候经常循环的次数是array.length

这里有一个关于遍历的小案例

package NewDay4;

import java.util.Arrays;

public class demo2 {
	/**
	 * 找到荧光棒在什么位置?将荧光棒替换成玉米
	 * 1.遍历数组
	 * 2.拿"荧光棒"去匹配数组中的每一个值
	 * 3.如果匹配上了,则找到下标位置
	 * 
	 * 将str中的黄瓜和丝瓜互换位置
	 */
	public static void main(String[] args) {
		String[] str={"黄瓜","香蕉","茄子","荧光棒","丝瓜"};
		 int sigua=-1 , hgua=-1;
		 String temp; 
		for(int i=0;i<str.length;i++){
			if("荧光棒".equals(str[i])){
				System.out.println("荧光棒的位置:"+i);
				str[i]="玉米";
				}
			if("黄瓜".equals(str[i])){
				hgua = i;
			}
			if("丝瓜".equals(str[i])){
				sigua = i;
			}
		}
		//如果没有找到黄瓜和丝瓜就不进行交换
		if(hgua!=-1&&sigua!=-1){
		temp = str[hgua];
		str[hgua] = str[sigua];
		str[sigua] = temp;
		System.out.println(Arrays.toString(str));
		}else{
			System.out.println("没有找到黄瓜和丝瓜");
		}
	}
}

三.数组的扩容和缩容

数组的扩容和缩容用得是数组的复制语句copyOf(arr,length);
 *arr:表示要复制的数组对象
 *length:表示复制的长度


 扩容:如果复制的长度超过了arr原数组的长度,
 *那么多出来的位置上的值就会以对应数据类型的默认值出现
 *例如:int[] arr = {10,20,30}
 *copyOf(arr,4)
 *复制出来的新数组就是(10,20,30,0) 

缩容:如果复制的长度超过了arr原数组的长度,那么少了多少个位置就会从末尾减去多少个数.

下面是今天的几个课后题目:

一.

                                                 .

package NewDay4;

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

/**
 *输入5句话,逆序输出5句话 
 */

public class homeWork1 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String [] str = new String[5];
		for(int i=4;i>=0;i--){
			System.out.print("第"+(5-i)+"句话:");
			String word = sc.next();
			str[i] = word;
		}
		System.out.println("逆序输出5句话:");
		for(int i=0;i<5;i++){
			System.out.println(str[i]);
		}
	}
}

二.

package NewDay4;

import java.util.Arrays;

/**
 * 随机往数组中存入10个两位的整数
 * 找出他们当中的最大值和最小值,并互换位置
 *
 */
public class homeWork2 {

	public static void main(String[] args) {
		int num1 = (int)(Math.random()*90+10);
		int[] str = new int[10];
		str[0] = num1;
		int max = num1;
		int min = num1;
		for(int i=1;i<10;i++){
			int num = (int)(Math.random()*90+10);
			str[i] = num;
			if(num>max){
				max=num;
			}
			if(num<min){
				min=num;
			}
		}
		System.out.println(Arrays.toString(str));
		System.out.println("最大值为:"+max);
		System.out.println("最小值为:"+min);
	}

}

三.

                           

package NewDay4;

import java.util.Scanner;
/**
 *用键盘输入10个数,合法数字为1.2.3,其他则为非法数
 *输出统计每个合法数的个数和非法数的个数 
 *
 */
public class homeWork3 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int[] str = new int[10];
		int sum = 0;
		int sum1 = 0;
		int sum2 = 0;
		int sum3 = 0;
		System.out.println("请输入10个数:");
		for(int i=0;i<10;i++){
			int num = sc.nextInt();
			str[i]=num;
			switch(num){
				case 1:sum1++;break;
				case 2:sum2++;break;
				case 3:sum3++;break;
				default:sum++;
			}
		}
		System.out.print("输入的10个数为:");
		for(int i=0;i<10;i++){
			System.out.print(str[i]+" ");
		}
		System.out.println();
		System.out.println("数字1的个数:"+sum1);
		System.out.println("数字2的个数:"+sum2);
		System.out.println("数字3的个数:"+sum3);
		System.out.println("非法数字的个数:"+sum);
	}
}

四.

package NewDay4;

import java.util.Arrays;

/**
 *有一个数组假设为int[] array= {1,3,-1,5,-2}
 *要求新数组将原数组升序输出 
 *
 */
public class homeWork4 {

	public static void main(String[] args) {
		int[] array = {1,3,-1,5,-2};
		int temp;
		int t = 0;
		for(int i=0;i<array.length;i++){
			int min = array[i];
			for(int j=i;j<array.length;j++){
				if(array[j]<min){
					min = array[j];
					t = j;
				}
			}
			temp = array[i];
			array[i] = array[t];
			array[t] =temp;
		}
		System.out.println(Arrays.toString(array));
	}
}

这个第四题是个冒泡排序的经典题目,我这个方法还不是经典算法,经典算法应该是要慢慢的把最小的数冒出来,我这个是找出最小的数后放在最前面.

以下是7月1日的内容

正儿八经的冒泡排序算法

冒泡排序:对数组进行排序的
 *(挨着的两个数,两两相比)
 *两两相比,如果碰到比自己小的数,互换位置
 *已知一个数组:int[] arr = {99,56,45,22,67,88,17}
 *将数组排序,变成从小到大或者从大到小的顺序排列 
 *总共比较的轮数:        每轮比较的次数:
 *   第一轮:1               6
 *   第二轮:2               5
 *   第三轮:3               4
 *   第四轮:4               3
 *   第五轮:5               2
 *   第六轮:6               1
 */

package NewDay5;

import java.util.Arrays;

public class demo2 {

	public static void main(String[] args) {
		int[] arr = {99,56,45,22,67,88,17};
		for(int i = 0;i<arr.length-1;i++){//比较的轮数
			for(int j =0;j<arr.length-i-1;j++){//每轮比较的次数
				if(arr[j]>arr[j+1]){
					int temp = arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}
		}
		System.out.println(Arrays.toString(arr));
	}
}

四.二维数组

一. 二维数组的定义:
         * 第一种:
         * int[][]arr=new int[2][2];
         * {{10,20},{30,40}}
         * 第二种:
         * int[][] arr = {{10,20},{20,30,40}}
         * 第三种:
         * int[][] arr =new int[][]{{10,20},{20,30}}
         * 第四种:
         * int[][] arr = new int[2][];

二.遍历方式

package NewDay5;

import java.util.Arrays;

public class demo3 {

	public static void main(String[] args) {
		int[][] arr = {{10,20,30},{20,30,40}};
		System.out.println(Arrays.toString(arr));
		for(int i = 0;i < arr.length;i++){
			for(int j = 0;j <arr[i].length;j++){
				System.out.println(arr[i][j]);
			}
		}
	}
}

二维数组的遍历方式与一维数组类似,只能一个一个用for循环输出或者用Arrays.toString输出第二个维度的一个数组.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值