java 3.数组

数组属于引用类型的变量,数组的元素既可以是引用数据类型,又可以是基本数据类型。
数组长度一旦确定不可修改。

package j1;

public class array {
    public static void main(String[] args){
        int[] ids;//声明
        ids=new int[]{1001,1002,1003,1004};//静态初始化
        String[] names=new String[4];//动态初始化
        names[0]="蛋包饭";
        names[1]="麻辣香锅";
        names[2]="酸辣粉";
        names[3]="炸鸡";
        System.out.println(names.length);//获取数组的长度
        for(int i=0;i<names.length;i++){
            System.out.println(names[i]);
        }
    }
}

数组一旦初始化,其长度就确定了。
数组元素的默认初始化值:
整型全为0;浮点型0.0;char类型ascll码值为0的;boolean为false,引用数据类型为null

stack栈:主要存放局部变量,先进后出
heap堆:主要存放new出来的变量,比如:对象,数组
方法区(常量池,静态域)
放在方法中的变量都叫做局部变量

package j1;

public class array {
    public static void main(String[] args) {
        int[] arr=new int[]{1,2,3};//一维数组
        int[][] arr1=new int[][]{{1,2,3},{4,5},{6,7,8}};//二位静态数组
        int arr4[][]=new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
        int[] arr5[]=new int[][]{{1,2,3},{4,5},{6,7,8}};
        int[][] arr6={{1,2,3},{4,5},{6,7,8}};//类型推断
        String[][] arr2=new String[3][2];
        String[][] arr3=new String[3][];
        //调用指定位置的元素
        System.out.println(arr1[0][1]);
        System.out.println(arr2[1][1]);//null
        //System.out.println(arr3[1][0]);//报错,空指针的异常
        arr3[1]=new String[4];
        System.out.println(arr3[1][0]);//不报错
        //获取数组的长度
        System.out.println(arr4.length);//3
        System.out.println(arr4[0].length);//3
        System.out.println(arr4[1].length);//4
        //如何遍历二维数组
        for(int i=0;i<arr4.length;i++){
            for(int j=0;j<arr4[i].length;j++){
                System.out.print(arr4[i][j]+" ");
            }
            System.out.println();
        }
    }
}

数据结构:
1.数据与数据之间的逻辑关系:集合、一对一、一对多、多对多
2.数据的存储结构:
线性表:(一对一),顺序表(数组)、链表/栈、队列
树形关系:二叉树
图形结构:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAODExOTI5NjE=,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAODExOTI5NjE=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAODExOTI5NjE=,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

package j1;
public class array {
    public static void main(String[] args) {
       //数组的冒泡排序
        int[] arr=new int[]{43,25,68,42,78,56,65,21,3,2,1,4,45,44,21};
        int t;
        for (int k : arr) {
            System.out.print(k + " ");
        }
        System.out.println();
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j]>arr[j+1]){
                    t=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=t;
                }
            }
        }
        for (int j : arr) {
            System.out.print(j + " ");
        }
        System.out.println();
    }
}

 

算法:
排序算法:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAODExOTI5NjE=,size_20,color_FFFFFF,t_70,g_se,x_16
搜索算法:

 

package j1;
public class array {
    public static void main(String[] args) {
       //数组的反转
        String[] arr=new String[]{"a","b","c","d","e","f","g"};
        String t;
        for (String s : arr) {
            System.out.print(s + " ");//增强的for
        }
        System.out.println();
        for(int i=0,j=arr.length-1;i<j;i++,j--){
            t=arr[i];
            arr[i]=arr[j];
            arr[j]=t;
        }
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }
}

 

package j1;
public class array {
    public static void main(String[] args) {
       //数组的二分查找
        int[] arr=new int[100];
        for(int i=0;i<arr.length;i++){
            arr[i]=i;
        }//顺序赋值
        int dest=25;
        int head=0;//首索引
        int end=arr.length-1;//尾索引
        boolean isFlag=true;
        while(head<=end){
            int middle=(head+end)/2;
            if(dest==arr[middle]){
                System.out.println("find "+middle);
                isFlag=false;
                break;
            }
            else if(dest<arr[middle]){
                end=middle-1;
            }
            else{
                head=middle+1;
            }
        }
        if(isFlag){
            System.out.println("not found");
        }
    }
}

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAODExOTI5NjE=,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值