数组基本知识

举报
XiaoLin_Java 发表于 2022/03/27 20:46:36 2022/03/27
【摘要】 函数从返回值类型上来区分:无返回值 修饰符 void 方法名称(){}有返回值 修饰符 返回值类型 方法名称(){ return 返回值类型 }从参数上来区分:无参数 修饰符 void/返回值类型 方法名称(){}有参数 修饰符 void/返回值类型 方法名称(参数列表){}函数重载特性:在一个类中,如果出现方法名称相同,参数个数不同或者参数类型不同的情况就...

函数

从返回值类型上来区分:

  • 无返回值 修饰符 void 方法名称(){}
  • 有返回值 修饰符 返回值类型 方法名称(){ return 返回值类型 }

从参数上来区分:

  • 无参数 修饰符 void/返回值类型 方法名称(){}
  • 有参数 修饰符 void/返回值类型 方法名称(参数列表){}

函数重载特性:在一个类中,如果出现方法名称相同,参数个数不同或者参数类型不同的情况就叫做重载。记住重载只看参数个数和参数类型,与返回值无关,与修饰符无关。

数组

   数组可以看成是一个容器,容器是用来存放数据的。数组是存放同一类型的数据的容器。
   注意:数组的长度是不可变的
   格式:
       类型[] 数组名称 =new 类型[指定长度] ;
       类型[] 数组名称 =new 类型[]{值1,值2,值3.....};
       类型[] 数组名称 ={值1,值2....};
   数组是长度固定的有连续性的存储数据的容器,它们都会有下标,可以通过下标来找到对应的值。
  Java种的内存分配:
     jvm把Java代码分为了5快区域,这样可以方便jvm去管理我们的Java代码。
     1.栈空间(stack):存储在类或者方法中定义的局部变量 (作用域范围小,用完就销毁)
     2.堆空间(heap):凡是new的对象 都存放在此空间中,此空间 会分配一个内存地址。
     3.方法区(method area):存放与class相关的属性和值。
     4.本地方法栈(Native Method Stack):与操作系统相关
     5.寄存区(pc Register):与cpu相关。

基本数据类型和引用数据类型

        在Java中类型分为了2大块,一块是基本数据类型 (八大)除了基本数据类型以外的所有的类型都叫做引用数据类型。
         基本数据类型在初始化的时候如果没有赋值他们都有默认值
           整数型:byte short int long 默认值0
           浮点型:float double 默认值0.0
           布尔类型:boolean 默认值为flase
           字符类型:char 默认值: '\u0000' 空格;
       引用数据类型在初始化的时候如果没有赋值的话,他们的默认值都是null

数组的api

创建:
  1.动态初始化:初始化的时候,没有给数组的内容赋值
     /***
	 * 动态初始化:初始化的时候没有给它赋值,程序员可以动态的给它赋值。
	 */
	public class initone {
	    public static void main(String[] args) {
	         int[] arr =new int[10];
	         arr[0]=10;
	         arr[2]=15;
	    }
	}
  2.静态初始化:初始化的时候,直接给数组的内容赋值
   /***
	 * 初始化的时候直接赋值
	 */
	public class inittwo {
	    public static void main(String[] args) {
	        int[] arr =new int[]{1,5,10};
	    }
	}
  赋值:
     数组名[下标]=xxx;
  获取长度:  
     数组提供了一个length属性来供我们获取它的长度
      System.out.println(arr.length);
  获取元素:
      System.out.println(arr[1]);
  遍历元素:
    /***
     * 原始for循环
     */
    int[] arr =new int[]{1,10,8,15,22};
    for(int i=0;i<arr.length;i++){
        System.out.println(arr[i]);
    }
    /***
     * 增强for
     */
    for(int i:arr){
        System.out.println(i);
    }

异常:异常是指在程序允许过程中出现的错误,一般情况异常分为两种,一种是编译的时候就能查找出来的异常,另外一种是必须执行的时候才会出现的异常,所以说异常一般分为编译时异常和运行时异常。

   在数组中常见的异常:
    1.角标越界异常:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
    2.空指针异常:Exception in thread "main" java.lang.NullPointerException

数组排序:

冒泡排序:
  package com.ly.array;

	/**
	 * 冒牌排序
	 */
	public class maopaosort {
	    public static void main(String[] args) {
	        int[] arr =new int[]{10,2,5,8,1,22};
	        for(int x=0;x<arr.length;x++){
	            for(int y=0;y<arr.length-1-x;y++){
	                   int temp=0;
	                   if(arr[y]>arr[y+1]){
	                       temp=arr[y];
	                       arr[y]=arr[y+1];
	                       arr[y+1]=temp;
	                   }
	            }
	        }
	        for(int i:arr){
	            System.out.print(i+"\t");
	        }
	    }
	}
 选择排序:
   public static void main(String[] args) {
    int[] arr =new int[]{10,2,8,19,5,7,3};
    for(int i=0;i<arr.length-1;i++){
        /***
         * i=0  y=1  y=2 y=3 y=4 y=5 y=6
         * i=1  y=2 y=3 y=4 y=5 y=6
         * i=2  y=3 y=4 y=5 y=6
         * i=3  y=4 y=5 y=6
         * i=4  y=5 y=6;
         * i=5  y=6
         */
        for(int y=i+1;y<arr.length;y++){
            int temp=0;
            /***
             * 下标0和下标1 去比 最大值赋值给1 最小值0
             * 下标0和下标2 去比 最大值赋值给2 最小值0
             * 下标0 和下标3去比 最大值赋值给3 最小值0
             *
             * ....
             * 下标0 和下标6去比较
             *  下标1 和下标2 去比较
             *  下标1 和下标3去比较
             *  下标1 和下标4去标胶
             *  ...下标1和下标6去比较
             */
            if(arr[i]>arr[y]){
                temp=arr[i];
                arr[i]=arr[y];
                arr[y]=temp;
            }
        }
    }
    for(int x:arr){
        System.out.print(x+"\t");
    }
 }
jdk还给我们提供了一个帮助类,来供我们快速的排序,这个帮助类就是Arrays,排序的方法就是sort();
    public static void main(String[] args) {
        int[] arr =new int[]{18,6,2,15,3};
        //排序
        Arrays.sort(arr);
        /**
         * 升序
         */
        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]);
        }
    }

二维数组:二维数组就是数组里面村的内容还是数组,这种数据就是二维数组。

   二维数组的初始化:
           动态的初始化:
             int[][] arr =new int[2][3];
             int[] ar1 =new int[]{1,3,5};
             int[] ar2 =new int[]{2,6,9};
             arr[0]=ar1;jaca
             arr[1]=ar2;
           静态的初始化:
             int[][] arr=new int[][]{{1,3,5},{2,6,9}};
           获取:
             首先通过外围数组的下标获取到内维数组,然后在通过内维数组的下标找到具体的值;
             arr[0][2];
           遍历二维数组:
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。