zoukankan      html  css  js  c++  java
  • Javase学习第五天(数组)

    数组

    概念

    是存储同一种数据类型多个元素的集合。它是在内存中开辟出的一段空间,这些空间在使用上是连续的,根据连续的下标值可以访问所有数组元素。

    数组的类型:基本数据类型、引用数据类型;

    定义格式

    1、数据类型[] 数组名;推荐使用。

    2、数据类型 数组名 [];

    数组初始化

    定义:

    为数组中的数组元素分配内存空间,并为每个数组元素赋值 基本数据类型(byte、short、int、long、double、float)初始值为0;

    Boolean初始化值为false;

    应用数据类型(类、接口、数组)初始值为null;

    方式分为:动态初始化、静态初始化两种

    过程:

    动态:

    数组创建和元素的赋值分开进行;先指定数组长度,由系统为数组分配默认初始值,可在以后再给元素赋其他值;

    格式: 数据类型[] 数组名=new 数据类型[数组长度]; 分为三个步骤:

    1、在栈空间定义一个变量(数组名),它没有指向任何值,它的值为null;

    2、在堆空间中开辟出一堆空间,可以存放数组长度的变量,并将其中的元素赋初始值;

    3、将数组的地址赋值给栈中的变量,也即将变量(数组名)指向它的首地址,也就是第一个值的地址。 注意:数组名(变量)的值是一个首地址;

    静态:创建数组的同时进行元素赋值

    java中内存分配

    程序为了提高效率,对数据进行不同的空间分配,主要有5个区域:

    1、堆:存放的是所有new出来的东西(包括成员变量);每个变量都有默认值;堆内存使用之后就成了垃圾。

    2、栈:存放的是局部变量;

    3、方法区:(后面补充)

    4、本地方法区:和系统相关;

    5、寄存器:供CPU使用

    同类型数组变量之间互相赋值情况

    数组常出现的异常

    数组索引越界(ArrayIndexOutOfBoundsException): 访问到数组中的不存在的索引时发生,索引值超过了索引值的范围:-1,大于等于数组长度等;

    空指针异常(NullPointerException):数组引用变量没有指向实体,且在操作实体中的元素;

    数组元素逆序(把元素对调)

     1 /**
     2 数组元素逆序
     3 
     4 */
     5 class Rev{
     6     public static void main(String []args){
     7         int [] a={1,2,3,4,5,6,7};
     8         Revs(a);
     9         Array(Revs(a));
    10     }
    11     public  static int [] Revs(int [] arr){
    12         
    13         for(int i=0;i<arr.length/2;i++){
    14             int tem=arr[i];
    15             arr[i]=arr[arr.length-1-i];
    16             arr[arr.length-1-i]=tem;
    17         }
    18         return arr;
    19     }
    20 public static void Array(int [] arr){
    21     System.out.print("["+" ");
    22     for(int i=0;i<arr.length;i++){
    23         if(i==arr.length-1){
    24             System.out.print(arr[i]+"]");
    25         }
    26         else
    27             System.out.print(arr[i]+",");
    28     }
    29 }
    30 }

    二维数组

    格式:

    数据类型[][] 变量名=new 数据类型[m][n];

    m表示这个二维数组有多少个一维数组; n表示每一个一维数组的元素个数;

    实例: int[][]arr=new int[3][2];

    定义了一个二维数组arr;-->其有3个一维数组,名称是arr[0]、arr[1]、arr[2];-->每个一维数组有2个元素,可以通过arr[m][n]来获取。

    另一格式:

    数据类型[][]变量名=new 数据类型 [][]{{元素...},{元素...},,,{元素...}};

    int[][]arr={{1,2,3},{4,5},{6}};

    二维数组内存示意图

    案例:

     1 /**
     2 定义一个int数组,5个元素,从键盘输入5个int值,保存到这个数组中,然后编写三个方法:分别用来对一个int型数组求最大值,最小值,平均值(注意返回值类型),调用这三个方法对输入的数组进行计算
     3 */
     4 import java.util.Scanner;
     5 class Calcu{
     6     public static void main(String []args){
     7      Scanner s=new Scanner(System.in);
     8     System.out.println("input 1th num: ");
     9     int a=s.nextInt();
    10     System.out.println("input 2th num: ");
    11     int b=s.nextInt();
    12     System.out.println("input 3th num: ");
    13     int c=s.nextInt();
    14     System.out.println("input 4th num: ");
    15     int d=s.nextInt();
    16     System.out.println("input 5th num: ");
    17     int e=s.nextInt();
    18     int [] arr={a,b,c,d,e};
    19     System.out.println("该数组的最大值是:"+getMax(arr));
    20     System.out.println("该数组的最小值是:"+getMin(arr));
    21     System.out.println("该数组的平均值是:"+getAve(arr));
    22     
    23 }
    24 //求最大值
    25     public static int getMax(int[] arr){
    26         int max=arr[0];
    27         for(int i=1;i<arr.length;i++){
    28             if(max<arr[i]){
    29                 max=arr[i];
    30                 arr[i]=max;
    31             }
    32         }
    33         return max;
    34     }
    35     //求最小值
    36     public static int getMin(int[] arr){
    37         int min=arr[0];
    38         for(int i=1;i<arr.length;i++){
    39             if(min>arr[i]){
    40                 min=arr[i];
    41                 arr[i]=min;
    42             }
    43         }
    44         return min;
    45     }
    46     //求平均值
    47     public static double getAve(int[] arr){
    48         double sum=0.0;
    49         for(int i=0;i<arr.length;i++){
    50             sum +=arr[i];
    51             
    52         }
    53         return sum/arr.length;
    54     }
    55 }

     

     

     

  • 相关阅读:
    Python爬虫技术--基础篇--函数式编程(上篇)
    Python爬虫技术--基础篇--Python高级特性
    Python爬虫技术--基础篇--函数(下篇)
    Python爬虫技术--基础篇--函数(上篇)
    Python爬虫技术--基础篇--字典和集合
    Python爬虫技术--基础篇--列表和元组
    1013 数素数
    1012 数字分类
    1010 一元多项式求导
    1011 A+B 和 C
  • 原文地址:https://www.cnblogs.com/yihaifutai/p/6591418.html
Copyright © 2011-2022 走看看