数组篇 格式 反转 排序 复制 内存原理 相关的方法使用 异常 二维数组

首先测试新项目是否好用

项目一数组格式;

public class day1 {
    public static void main(String[] args) {
        System.out.println("a");
    }
}
//测试好用。可以正常运行
//项目一:什么是数组。
//数组是存储数据固定长度的容器,保证多个数据的数据类型要一致
//什么是容器——将多个同类型的数据存储到一起每个数据是容器的元素
//数组的特点:存储数据的容器、元素类型一样,可以基本数据类型,也可引用数据类型
//数组的格式
class work1 {
    public static void main(String[] args) {
        //数组的格式
        //第一种(常用)
        int[] arr1;
        //第二种
        int arr3[];
        //数组的初始化
        //第一种动态初始化
        String[] arr4=new String[2];
        //静态初始化
        //完整版
        int[] arr5=new int[]{1,2};
        //简化格式
        int[] arr={1,2,3,4};
        System.out.println(arr);
    }
}

项目2数组访问以及遍历

//项目2数组访问以及遍历
   // 索引——每一个存储到数组的元素,都会自动的拥有一个编号,
// 从0开始,这个自动编号称为数组索引(index)(下标),可以通过数组的索引访问到数组中的元素。
class work2{
    public static void main(String[] args) {
        int[] ar=new int[3];//动态初始化的数组,没有给数组赋值,数组中的元素会使用默认值
        int x=1;
        //给数组赋值
        ar[0]=15;
       ar[1]=4;
       ar[2]=33;
        System.out.println(ar[1]);

    }
}
//数组的遍历
class work3{
    public static void main(String[] args) {
        int[] arr={1,2,3,4,5,6};
        //每个数组具有长度而且是固定的
        //获取长度使用length
        int a=arr.length;
       // System.out.println(a);
        //数组的最大索引值为arr.length-1
        for(int i=0;i<=a-1;i++){
            System.out.println(arr[i]);
        }
    }
}
## /项目3 获取数组中的最大值
//项目3
// 数组练习 获取数组中的最大值
//实现思路
/*
1、定义变量赋值给数组0上面的元素
2、遍历数组,获取数组的每个元素
3、将遍历到的元素和保存数组0索引上的变量进行比较
4、如果数组元素的值大于变量的值赋值给变量
5、数组循环变量结束,变量保存的就是最大的值
* */
class work4{
    public static void main(String[] args) {
        int a=0;
        int[] arr=new int[]{3,5,7,9,13,33,53,73,93,103};
        for (int i=0;i<=arr.length-1;i++){
            if(arr[0]<arr[i]){
                arr[0]=arr[i];
            }
        }
        System.out.println(arr[0]);
    }
}

项目3-2 数组的翻转

//练习2数组的翻转
/* 数组中的元素颠倒顺序,例如原始数组为1,2,3,4,5,反转后的数组为5,4,3,2,1
1、定义两个变量,保存数组的最小索引和最大索引
2、实现翻转就要把最大的索引和最小的索引位置互换
3、最小索引++,最大索引--,再次交换位置
最小索引超过了最大索引,数组反转操作结束
*/
class work5 {
    public static void main(String[] args) {
        int [] arr={1,2,3,4,5};
        int a=arr.length-1;
        for (int i=0;i<a;i++){
            int x=arr[i];
            arr[i]=arr[a];
            arr[a]=x;
            a--;
            System.out.println(i);
        }
        for (int j=0;j<arr.length;j++){
            System.out.print(arr[j]+",");
        }
    }
}

项目4 数组原理内存图

//数组原理内存图
//堆内存 存储对象或者数组,new来创建的,都存储在堆内存。
//方法栈(栈内存)方法运行时使用的内存,比如main方法运行,进入方法栈中执行。

class work6{
    public static void main(String[] args) {
        int[] arr ={1,2,3,4,5};
        int[] arr2=arr;
        arr2[1]=9;
        System.out.println(arr[1]);//也是9,因为数组arr和arr2使用的同一个地址,元素改变会一同更新
    }

项目5,冒泡排序

class work7 {
    public static void main(String[] args) {
        int[] arr={3,9,14,34,71,89,53,64,91,43};
        //对数组排序
        //思维——使用冒泡方法
        //1、冒泡是使用首个元素对后面的依次进行比较,大的赋值个首个元素
        //n个元素只需要排n-1次
        //内层循环比较的次数应该越来越少(每次排序后,大数已经沉底,
        // 下次在比较时不需要再和已经确定位置的元素进行比较)
        for (int j=0;j<arr.length-1;j++){
            for (int i=0;i<arr.length-1-j;i++){
                if (arr[i]>arr[i+1]) {
                    int d=arr[i];
                    arr[i]=arr[i+1];
                    arr[i+1]=d;
                }
            }
        }
        for(int i=0;i<arr.length-1;i++){
            System.out.print(arr[i]+",");
        }
    }
}

项目6 求日期第多少天

/*求下面日期是这年中的第多少天?
int year = 2004;
int month = 3;
int day = 25;
*/
/*
思路,1、先判断什么是闰年
2、用数组对月份进行编写
3、遍历出已经过去的月份,再加上本月已过的天数最后相加得出总天数

 */
class work8{
    //首先判断年份是否是闰年的方法
    public static boolean isRunNian(int year) {
        boolean flag=false;
        if(year%4==0&&year%100!=0||year%400==0){
            flag=true;
        }
        return flag;
    }
    public static void main(String[] args) {
        System.out.println("请输入年份:");
        Scanner sc=new Scanner(System.in);
        int year=sc.nextInt();
        System.out.println("请输入月份:");
        Scanner sc1=new Scanner(System.in);
        int    month=sc1.nextInt();
        System.out.println("请输入日:");
        Scanner sc2=new Scanner(System.in);
        int   day=sc2.nextInt();
        //编写月份的数组
        int[] arr={31,28,31,30,31,30,31,31,30,31,30,31};
        //引入数据判断
        if (isRunNian(year)){
            arr[1]=29;
        }
        //定义一个接收变量
        int num=0;
        //过去的月份为mouth-1
        for(int i=0;i<month-1;i++){
            num=num+arr[i];
        }
        num=num+day;
        System.out.println(year+"年已经过了"+num+"天");
    }
}

项目七 数组异常和二维数组

//数组异常,二维数组
//越界异常Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
/*
class work9{
    public static void main(String[] args) {
        int[] arr={1,2,3,4,5};
        System.out.println(arr[5]);
    }
}
*/
//解决方式,循环避免越界
class work9{
    public static void main(String[] args) {
        int[] arr={1,2,3};
        for (int i=0;i<arr.length;i++){
            System.out.print(arr[i]+",");

            //System.out.print(i+",");
        }
    }
}
//空指针异常 NullPointerException
class work10{
    public static void main(String[] args) {
        int[] arr={1,2,4};
        arr=null;
        if (arr!=null) {
            System.out.println(arr[1]);
        }
    }
}
//解决方法——调用方法之前判断是否为null

项目7-2二维数组

//二维数组就是关于数组的数组
class work11{
    public static void main(String[] args) {
        int[][] arr=new int[4][];
    }
}
//二维数组的遍历
class work12{
    public static void main(String[] args) {
        int[][] arr={{1,2,3},{3,4,5},{8,7,9}};
        for (int i=0;i<arr.length;i++) {
            for (int j=0;j<arr[i].length;j++){
                System.out.print(arr[i][j]+" ");
            }
        }
        System.out.println();
    }
}

项目八 定义方法

//1.分别定义方法,求一个整数数组的最大值、最小值、平均值和所有数组元素的和(4个方法)
class homework {

    public static int max(int[] arr) {
        for (int i=0;i<arr.length;i++){
            if (arr[0]<arr[i]){
                arr[0]=arr[i];
            }
        }
        return arr[0];
    }

    public static int min(int[] arr) {

        for (int i=0;i<arr.length;i++){
            if (arr[0]>arr[i]){
                    arr[0]=arr[i];
            }
        }
        return arr[0];

    }
    public static int num(int[] arr) {
        int arr1=0;
        for (int i=0;i<arr.length;i++){
           arr1=arr1+arr[i];
        }
        return arr1;
    }
}

项目九 复制数组

//2.将一个已知数组  int[] a = {11,23,1,5,6,89} 中的元素 复制到一个新数组中
class work13{
    public static void main(String[] args) {
        int[] a={11,23,1,5,6,89};
        int[] b=new int[a.length-1];
        int j;
        for (j=0; j<a.length-1; j++){

                b[j] = a[j];

            System.out.println(b[j]);
        }

    }
}

项目十 数组反转

//3 数组反转  int[] a = {1,2,3,4,5};创建新数组的方式
class work14{
    public static void main(String[] args) {
        int[] a={1,2,3,4,5};
        //最大索引
        int m=a.length-1;
        for (int i = 0; i<m; i++) {
            int x=a[i];
            a[i]=a[m];
            a[m]=x;
            m--;


        }
        for (int i = 0; i < a.length; i++) {
           System.out.print(a[i]+",");
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值