数组

1、数组的声明及数组的特点

数组是相同类型数据的集合,下面是声明数组的格式:

格式1:

一维数组:
数据类型  数组名[];
数组名 = new 数组类型[数组长度];

二维数组:
数据类型[][] 数组名;
数据类型 数组名[][];
数据类型[] 数组名[] ;

格式2:

数据类型 数组名[] = new 数组类型[数组长度];

数组的以下几个特点:

  1. 数组中的每一个元素的数据类型都相同且必须相同
  2. 数组中的元素长度一旦确定,就不能再改变大小
  3. 数组中的元素可以通过下标访问;
  4. 数组的元素可以是数组,从而形成二维及多维数组。

2、数组的初始化

1、静态初始化
数组的静态初始化是指数组在定义的同时就为数组元素分配空间和赋值,静态初始化不但可以指定每一个数组元素的值,还可以指定数组的长度。

格式1:

一维数组:
数据类型  数组名[]={元素值1,元素值2,元素值3,……元素值n};

二维数组:
数据类型  数组名[]={{第0行元素},{第1行元素}……{第n行元素}};

格式2:

一维数组:
数据类型  数组名[]=new 数据类型[]{元素值1,元素值2,……元素值n};

二维数组:
数据类型  数组名[]=new 数据类型{{第0行元素},{第1行元素}……{第n行元素}};

2、动态初始化

数组的动态初始化是指数组初始化时只需要指定数组长度,由系统为这些元素赋初值。每个元素的值取数组类型相对应的默认值:

元素类型默认初始化值
byte0
short0
int0
long0
char‘\u0000’
float0.0f
double0.0d
booleanfalse
引用类型(接口、类和数组)null(空)

数组的动态初始化:

public class ArrayDemo{
       public static void main(String[] args){
       String[] pwd=new String[3];//声明String型数组pwd,并且长度为3
       pwd[0]="天";//初始化pwd中的每一个元素
       pwd[1]="地";
       pwd[2]="人";
       }
  }

3、访问数组元素

格式:

数组名[下标];

输出数组:

public class ArrayDemo{
       public static void main(String[] args){
       int[] pwd={1,6,9,8,7};
       for(int i=0;i<pwd.length;i++){//用for循环遍历数组
            System.out.print(pwd[i]+" ");
            }
     }
 }

运行结果:

1 6 9 8 7

在访问数组元素时要注意以下几点:

1、下标的数值超出了下标的范围,此时程序编译是不会报错的,但运行是会报错;

2、直接输出数组变量名,并不能输出数组元素,因为数组名是一个指向数组的储存地址,所以不能直接使用数组名输出数组元素,这样得到的是一个地址;

public class ArrayDemo{
       public static void main(String[] args){
       int[] pwd={1,6,9,8,7};
       System.out.print(pwd);
        }
 }

结果如图:
这里写图片描述
其含义为:

  • [I 表示该对象为一个一维数组,二维数组表示为[[I。
  • @11381e7,表示数组在内存中的地址

4、获取数组的长度

java语言的数组提供了length属性,通过这个属性可以得到数组的长度:

public class ArrayDemo{
       public static void main(String[] args){
       int[] pwd={1,6,9,8,7};
       int len=pwd.length;
       System.out.print(len);
        }
 }

结果为 :

5

5、foreach语句

foreach语句可以方便的遍历输出数组和集合,与for语句不同的是foreach语句遍历数组和集合时不需要知道数组的长度:
foreach语法:

for(数据类型  变量名:数组名){
                 循环体
           }

范例:

public class ArrayDemo{
       public static void main(String[] args){
       int[] pwd={1,6,9,8,7};
       for(int lzq:pwd){
                 System.out.print(lzq+" ");  
       }
 }

结果:

1 6 9 8 7 

6、匿名数组

public static int sum1(int[] array) {
        int sum = 0;
        for(int i : array) {
            sum += i;
        }
        return sum;
    }

    /**
     * 可变参数编程
     * @param array
     * @return
     */
    public static int sum(int... array) {
        int sum = 0;
        for(int i : array) {
            sum += i;
        }
        return sum;
    }

public static void main(String[] args) {
        sum1(new int[] {1,2,5,3,8});   
        sum(new int[] {2,6,9,7,4});     //匿名数组

    }

7、打印菱形

private static void show(int n) {
        if(n % 2 == 0) {   //只支持奇数
            return;
        }
        int mid = n/2;
        for(int i = 0;i < n;i++) {
            //打印上半部分
            if (i <= mid) {
                for (int k = i; k < mid; k++) {
                    System.out.print("\t");
                }
                for (int j = 0; j < 2 * i + 1; j++) {
                    System.out.print("*\t");
                }
                System.out.println();
            }else {  //打印下半部分
                for(int k = 0;k < i-mid;k++) {
                    System.out.print("\t");
                }
                for (int j = i; j < 2*n-i-1; j++) {
                    System.out.print("*\t");
                }
                System.out.println();
            }
        }
    }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值