2021.6.29-数组

## 复习

### java分区

(char  ‘\u0000’)(引用类型    null)
int [] arr = {1,2,3}
    SOP(arr);//数组内存地址值
char [] arr1 = {'a','b','c'}
    sout(arr1);/abc

### 应用

#### 遍历

(普通for循环、增强for循环、Arrays)

#### 最值

(参照)

#### 查找

(无序----依次比较    有序----折半查找)

----

#### 排序

对数组元素进行排列顺序

```java
package com.zjr.tedu.Day07;
/*
    冒泡排序
 */

public class MaoPaoDemo {
    public static void main(String[] args) {
        //无序数组
        int [] arr = {6,1,5,7,9,2};
        //嵌套循环实现冒泡排序
        //外层循环--控制轮数
        for (int i = 1 ; i < arr.length ; i++) {
            //内层循环--控制比较次数
            for (int j = 0 ; j < arr.length - i ; j++){
                if (arr[ j ] > arr[ j + 1 ] ){
                    int x = arr[j];
                    arr [ j ] =  arr[ j + 1 ];
                    arr [ j + 1] = x;
                }
            }
        }
        for (int i:arr){
            System.out.print(i + " ");
        }

    }
}
```

```java
package com.zjr.tedu.Day07;

import java.util.Arrays;

/*
    选择排序
 */
public class ChooseDemo {
    public static void main(String[] args) {
        //无序数组
        int [] arr = {6,1,5,7,9,2,8};
        //通过嵌套循环实现选择排序
        //外层循环--控制轮数
        for (int i = 1 ; i < arr.length ; i++) {
            //内层循环--控制比较元素的范围
            for (int j = i ; j < arr.length ; j++) {
                //选择一轮中不动的下标和后续所有的进行比较
                if (arr[ i - 1] > arr[ j ]){
                    int x = arr[ i - 1 ];
                    arr [ i - 1 ] = arr [ j ];
                    arr [ j ] = x ;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}
```

```java
package com.zjr.tedu.Day07;

import java.util.Arrays;
import java.util.Scanner;
import java.util.Vector;
/**
 * 键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值
 * @author lgt
 *
 */
public class MaoPaoPlus {
    public static void main(String[] args) {
        //输入
        System.out.println("请输入多个数据:");
        Scanner sc = new Scanner(System.in);
        //创建集合对象
        Vector<Integer> v = new Vector<Integer>();
        //控制输入数据,输入0表示结束
        while(true){
            int number = sc.nextInt();
            if(number != 0){
                v.add(number);
            }else{
                break;
            }
        }
        sc.close();
        System.out.println("---------排序前遍历输出数组---------");
        //把集合转成数组
        //创建数组对象
        Integer[] i = new Integer[v.size()];
        //转成数组
        v.toArray(i);
        //排序前遍历输出数组
        printArray(i);
        System.out.println("-------排序后遍历输出数组,并输出最大值--------");
        //排序
        Arrays.sort(i);
        //排序后遍历输出数组,并输出最大值
        printArray(i);
        System.out.println("最大值是:" + i[i.length-1]);
    }
    //遍历数组
    public static void printArray(Integer[] k){
        for(int i = 0; i < k.length; i++){
            if(i!= k.length -1){
                System.out.print(k[i] + ", ");
            }else{
                System.out.println(k[i]);
            }
        }
    }
}
```

#### 扩容

扩大/小数组 容器的容量(长度)--数组定义完成之后长度无法改变

```java
package com.zjr.tedu.Day07;
/*
    数组的扩容
 */

import java.util.Arrays;
public class KuoRongDemo {
    public static void main(String[] args) {
        //给定原数组
        int [] arr1 = {1,3,4,6,2};
        //目标数组:{1,3,4,6,2,0,0,0,0,0}
        //数组的扩容
        //新数组
        int [] arr2 = new int [arr1.length * 2 ] ;
        //数组的复制
        //System.arraycopy(原数组,拷贝的起始下标,目标数组,目标的起始下标,复制的个数)
        System.arraycopy(arr1,0,arr2,0,arr1.length);

        //数组地址值的复制
        arr1 = arr2 ;
        System.out.println(Arrays.toString(arr2));
    }
}
/*
    原数组:
    arr1 = {1,3,4,6,2}
    arr1 = Array.copyOf( arr1 , arr1.length * 2 )
    经过缩小后的数组:
    arr1 = {1,3}
*/ 
```

### 二维数组

#### 定义

存储的数据元素的一维数组的数组

#### 定义格式

1.数据类型[] [] 数组名 = new 数据类型 [二维数组长度] [一维数组长度];
        int [] [] arr = new int [3] [2]       定义了3个长度为2的一维数组,指定长度

```java
package com.zjr.tedu.Day07.ErWei;
/*
    二维数组定义格式
 */
public class Array2Demo {
    public static void main(String[] args) {
        //定义格式
        int [] [] arr = new int [3] [2] ;
        //数组名--二维数组的地址值:[[I@1540e19d
        System.out.println(arr);
        //第一个一维数组的地址值:[I@677327b6
        System.out.println(arr [0]);
        System.out.println(arr[0] [0]);
        //第一个一维数组的第三个元素,没有第三个元素
        //编译没错,运行错误,
        //ArrayIndexOutOfBoundsException
        //数组下标越界异常
        System.out.println(arr [0] [2]);
    }
}
```

2. 数据类型[] [] 数组名 = new 数据类型 [二维数组长度] [ ] ;

   ​    int [] [] arr = new int [2] [] ;
   代表声明了两个一维数组 
   给定初始值
   arr [ 0 ] = new int [ 3 ] ;
   arr [ 1 ] = new int [ ] [1,2,3,4
   arr [ 2 ] = {4,5,6}

```java
package com.zjr.tedu.Day07.ErWei;

public class ArrayMakeDemo2 {
    public static void main(String[] args) {
        //定义格式
        int [] [] arr1 = new int [ 2 ] [] ;
        //第一个一维数组地址值--null(不指向任何地址)
        //NullPointerException---空指针异常
        //地址值为null不指向任何内存区域集聚获取不到值,如果 强制执行就会报错
        System.out.println(arr1 [ 0 ]);
        //第一个一维数组的第一个元素
        System.out.println(arr1 [ 0 ] [0] );
    }
}
```

3. 数据类型 [] [] 数组名 = { {元素值1,元素值2··· } ,{元素值1,元素值2··· },{元素值1,元素值2···}···};
   int [] [] arr = {{1,2},{3,4,5}};//指定值确定长度

```java
package com.zjr.tedu.Day07.ErWei;

public class ArrayMakeDemo3 {
    public static void main(String[] args) {
        //定义格式
        int [] [] arr = {{1,2,3},{4,5,6,},{7,8,9}};
    }
}
```

### 方法

#### 概念

把重复且有效的代码抽取的形式

#### 格式

​    修饰符、方法返回值类型、方法名(参数类型1    参数值1,参数类型2    参数值2,···){
​        方法体;
​        return    返回值;
}
​    修饰符:public static 
​    方法返回值类型:根据方法的返回值类型提供对应的数据类型来接受方法返回值,可能没有返回值指定void来表示没有返回值
​    方法名:标识符
​    参数列表:由参数类型、参数个数、参数顺序共同决定
​    方法体:重复且有效的代码
​    return:把方法的返回值进行返回

#### 注意

1.方法一定要被调用才能执行
2.阿萨德
3.

#### 代码用例

```java
package com.zjr.tedu.Day07.TaiJiaoAnZhuang;
//IDEA边写边保存(自动编译)
public class MethodDemo1 {
    public static void main(String[] args) {
        System.out.println("12321364653");
        byte b = 127 ;
        System.out.println();
    }
}
```

```java
package com.zjr.tedu.Day07.TaiJiaoAnZhuang;

public class MethodDemo2 {
    public static void main(String[] args) {
        System.out.println("输出6行7列的*");
        for (int i = 0; i < 6 ; i++) {
            for (int j = 0 ; j < 7 ; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("输出7行8列的*");
        for (int i = 0; i < 7 ; i++) {
            for (int j = 0 ; j < 8 ; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("输出8行9列的*");
        for (int i = 0; i < 8 ; i++) {
            for (int j = 0 ; j < 9 ; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
```

```java
package com.zjr.tedu.Day07.TaiJiaoAnZhuang;
/*
    方法调用
 */
public class MethodDemo3 {
    public static void main(String[] args) {
        //java规定方法不能嵌套(一个方法中不能定义另一个方法)
        printXing(6,7);
        printXing(7,8);
        printXing(8,9);
    }
    //定义一个可调用方法
    //方法返回值类型---直接打印,执行语句,不需要返回值
    //参数列表---int m ,int n 控制行和列
    public static void printXing(int m , int n ){
        System.out.println("输出" + m + "行" + n + "列的*");
        for (int i = 0; i < m ; i++) {
            for (int j = 0 ; j < n ; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
```

#### 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值