Skip to content

一维数组的创建以及使用

一维数组的声明

数组遵循先声明再调用的原则

语法:

java
type[] arrayName;    // 数据类型[] 数组名 //(常用);

或者

java
type arrayName[];    // 数据类型 数组名[];

第一种格式 type[] arrayName,很容易理解这是定义一个变量,其中变量名是 arrayName,而变量类型是 type[]。

例如:

java
int[] score; // 存储学生的成绩,类型为整型
double[] price; // 存储商品的价格,类型为浮点型
String[] name; // 存储商品名称,类型为字符串型

注:

  • 在声明数组时不需要规定数组的长度
  • 在声明数组变量时千万不要漏写 []

一维数组的创建

简单来说,数组的创建就是为声明的数组分配地址空间。

语法:

java
arrayName = new type[size];    // 数组名 = new 数据类型[数组长度];

数组长度就是数组中能存放的元素个数,显然应该为大于 0 的整数,例如:

java
score = new int[10];
price = new double[30];
name = new String[20];

当然也能再声明时就分配好空间。

语法:

java
type[] arrayName = new type[size];    // 数据类型[] 数组名 = new 数据类型[数组长度];

例如:

java
int[] score = new int[10];
double[] price = new double[30];
String[] name = new String[20];

一维数组的初始化

1. 使用 new 指定数组大小后进行初始化

使用 new 关键字创建数组,在创建时指定数组的大小。语法如下:

java
type[] arrayName = new int[size];

创建数组之后,元素的值并不确定,需要为每一个数组的元素进行赋值,其下标从 0 开始。

创建包含 5 个元素的 int 类型的数组,然后分别将元素的值设置为 1、2、3、5 和 8。代码如下:

java
int[] number = new int[5];
number[0] = 1;
number[1] = 2;
number[2] = 3;
number[3] = 5;
number[4] = 8;

如果只指定了数组的长度,那么系统将负责为这些数组元素分配初始值。指定初始值时,系统按如下规则分配初始值。

数组元素的基本类型系统分配初始值
整数类型(byte、short、int 和 long)数组元素的值是 0
浮点类型(float、double)数组元素的值是 0.0
字符类型(char)数组元素的值是 ‘\u0000’(空)
布尔类型(boolean)数组元素的值是 false
引用类型(类、接口和数组)数组元素的值是 null

2. 使用 new 指定数组元素的值

使用上述方式初始化数组时,只有在为元素赋值时才确定值。可以不使用上述方式,而是在初始化时就已经确定值。语法如下:

java
type[] arrayName = new type[]{值1,值2,值3,...,值n};

使用 new 直接指定数组元素的值。代码如下:

java
int[] number = new int[]{1, 2, 3, 5, 8};

注:以下为错误示范,不要在进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值,这样会造成代码错误。

java
int[] number = new int[5] {1, 2, 3, 4, 5};

3. 直接指定数组元素的值

在上述两种方式的语法中,type 可以省略,如果已经声明数组变量,那么直接使用这两种方式进行初始化。如果不想使用上述两种方式,那么可以不使用 new 直接指定数组元素的值。语法如下:

java
type[] arrayName = {值1,值2,值3,...,值n};

直接使用上述语法实现 number 数组的初始化。代码如下:

java
int[] number = {1, 2, 3, 5, 8};

注:使用这种方式时,数组的声明和初始化操作要同步,即不能省略数组变量的类型。如下的代码就是错误的:

java
int[] number;
number = {1, 2, 3, 5, 8};

一维数组的访问

访问单个数组

arrayName 表示数组变量,index 表示下标,下标为 0 表示获取第一个元素,下标为 array.length-1 表示获取最后一个元素。当指定的下标值超出数组的总长度时,会抛出 ArrayIndexOutOfBoundsException (数组索引超出绑定异常)异常。

java
arrayName[index];

获取数组长度

在 Java 中取得数组的长度(也就是数组元素的长度)可以利用 数组名称.length,返回一个 int 型数据。

java
arrayName.length;

for 循环遍历数组获取全部元素

下面利用 for 循环语句遍历 number 数组中的全部元素,并将元素的值输出。代码如下:

java
int[] number = {1, 2, 3, 5, 8};
for (int i = 0; i < number.length; i++) {
    System.out.println("第" + (i + 1) + "个元素的值是:" + number[i]);
}

数组长度属性及其常用操作

  1. 对数组进行升序
java
Arrays.sort(数组名);
  1. 在数组中查询指定关键字
java
Arrays.binarySearch(数组名, 关键字);

注:binarySearch() 方法采用二分法,要求对数组必须有序排列。

二维数组的创建以及使用

二维数组的声明与创建

二维数组好比一个表格,第一个下标表示行,第二个下标表示列,数组的创建和初始化与一维数组类似,二维数组就是一个把多个一维数组包起来的数组。

声明:

java
type[][] arrayName;

声明之后同时分配行和列的存储空间:

java
type[][] arrayName = new type[][];

二维数组初始化

  1. 给数组分配空间大小,不能修改,在赋值:
java
type[][] arrayName = new type[length1][length2];
  1. 通过 new 给数组赋值,不给空间大小:
java
type[][] arrayName = new type[][]{{值1, 值2, 值3}, {值1, 值2, 值3}};
  1. 直接给数组赋值,不分配空间大小:
java
type[][] arrayName = {{值1, 值2, 值3}, {值1, 值2, 值3}};
  1. 数组的二维长度为空:
java
type[][] arrayName = new type[length1][];

二维数组的访问

访问格式:

java
数组名[行下标][列下标];

for 循环嵌套打印二维数组:

java
public class dome2 {
    public static void main(String[] args) {
        int[][] a = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
        for (int i = 0; i < a.length; i++) {  // 二维数组的行循环
            for (int j = 0; j < a[i].length; j++) {  // 二维数组的列循环
                System.out.print(a[i][j] + " ");  // 输出每个元素
                if (a[i][2] == a[i][j]) {  // 当每一行输出三列后换行
                    System.out.println();
                }
            }
        }
    }
}

字符串的使用

String 类的使用

(1)字符串的创建

  1. 创建最简单的方法:
java
String str = "hello, world";
  1. 构造函数创建字符串:
java
String str2 = new String("hello, world");

以下为不同的构造方法:

java
String();// 创建空字符串
String(byte[]);// 创建字符串,其值由一个字节数组的内容设置
String(char[]);// 创建字符串,其值由一个字符数组的内容设置
String(byte[], int, int);// 两个整形参数表示字节数组的偏移量和长度
String(char[], int, int);// 两个整形参数表示字符数组的偏移量和长度

(2)常用的字符串操作

  • 获取字符串长度:
java
str.length();
  • 在字符串中查找字符或字符串:
java
str.indexOf("world");// 从左往右查找字符在字符串中的位置
str.lastIndexOf("hello");// 从右往左查找字符在字符串中的位置
  • 获取子字符串:
java
String sub = str.substring(0, 5);// 从索引 0 到索引 5 之前
  • 比较两个字符串是否相等:
java
str.equals("hello");// 严格区分大小写
str.equalsIgnoreCase("HELLO");// 不区分大小写
  • 字符串连接:
java
str.concat(" Java");// str = str + " Java";
  • 删除字符串前后的空格:
java
str.trim();

StringBuffer 类

在 Java 语言中,由于 String 类是final 类型的,所以使用 String 定义的字符串是一个常量,因此它一旦创建,其内容和长度是不可改变的。如果需要对一个字符串进行修改,则只能创建新的字符串。

解决方法:可以使用 StringBuffer 类(也称字符串缓冲区)来操作字符串。

说明:StringBuffer 类和 String 类最大的区别在于它的内容和长度都是可以改变的。StringBuffer 类似一个字符容器,当在其中添加或删除字符时,所操作的都是这个字符容器,因此并不会产生新的 StringBuffer 对象。

1. 创建字符串变量

  1. 直接初始化字符串变量。
java
StringBuffer sb = new StringBuffer("Hello");
  1. 初始化一个空字符串。
java
StringBuffer sb = new StringBuffer();
java
StringBuffer();//创建一个空的StringBuffer对象,默认容量为16个字符
StringBuffer(int len);//创建一个空的StringBuffer对象,初始容量由参数len设定
StringBuffer(String str);//创建一个StringBuffer对象,利用一个已经存在的字符串String的对象str来初始化该对象,其容量为String对象Str的长度加16

2. 常用操作

  • 1.字符串访问方法
java
int capacity();//获取当前字符串对象的容量
int length();//获取当前字符串对象的长度(字符数)
  • 2.字符串修改方法
java
setCharAt(int index,char ch);

将指定的字符串ch放到index指定位置上

java
 StringBuffer s = new StringBuffer("Stdent");
 s.setCharAt(2,'u');

replace(int a,int b,String Str);

使用新字符串str替换当前字符串变量从起始a到结尾b

insert(int offset,chr ch)和insert(int offset,String str)

在当前字符串对象offset位置插入字符ch或字符串str

java
StringBuffer s = new StringBuffer("wecome");
s.insert(2,'l');

append(String str)

将给定的字符串追加到当前字符串变量的末尾

java
StringBuffer s = new StringBuffer("we");
String str = "lcome";
s.append(str);

deleteCharAt(int a);

删除指定索引位置处的字符

delete(int a,int b)

后用于删除当前字符串变量中从起始位置a到结束位置b的内容

Released under 鸢のhomepage