Java基础-数组和字符串

开始

学习完上一章,你应该已经了解了如何使用基本的逻辑语句,并尝试将它们联合运用组成复合语句,最终完成了一个程序。这一章节,我们将学习数组和字符串。

**↑不来一首BGM吗?**

本章要求

  • 了解数组
  • 学会数组的声明
  • 学会使用数组
  • 了解多维数组
  • 学会使用字符串

数组是什么?

所谓数组,是相同数据类型的元素按一定顺序排列的集合。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。
—— 百度百科

简单来讲,就是将一个特定的数据类型排成一列,队列里的每一个元素,都是独立存在的,可以被当成单个变量使用。
至于这个队列有多长,那就要看你声明的时候要求有多大。

数组的声明

在Java中,数组被当做一个对象来处理(至于什么是对象,我们将在下一章节中花大量篇幅来讲述)。

既然是一个对象,那当然可以被new出来:是的,Java里所有对象都是因为new而出生的!
不过数组也可以不通过new来创建,通过下面这种方法我们可以直接让数组被声明时就带有内容!

1
2
3
4
5
6
7
8
9
  public static void main(String[] args) {
//声明一个名称为int_array的int类型数组,并为其赋值,值的内容为{1,9,6,4,5,8,9}
//此时这个数组有了内容,数组的第0个元素为1
//第一个元素为9,第二个元素为6……第六个元素为9
//这个数组的长度为7(总共有七个元素),且不可再更改
int[] int_array = {1,9,6,4,5,8,9};
//输出数组的第一个元素
System.out.println(int_array[0]);
}

当然我们也可以用new的方法来进行创建数组

1
2
3
4
5
6
7
8
9
10
11
12
13
public static void main(String[] args) {
//声明一个长度为10的int类型数组
//此时该数组没有内容(但却占了内存)
//我们应该为数组写入内容
int[] ints = new int[10];

//用一个for循环,把这个数组的每一个元素都赋值一次
for(int i=0; i<10;i++) {
ints[i] = i + 233;
}
//输出数组的第10个元素
System.out.println(ints[9]);
}

不用怀疑:int[] intsint ints[]这两种写法没有区别!

使用数组

数组的使用也是很容易的,前面说过,数组中的每一个元素都可以当成一个单独的变量来使用。
你可以对这个元素进行赋值,加减乘除,以及各种奇♂怪的操作。
只是有一点要确定,不要使用数组长度之外的元素:你只声明了一个长度为10的数组,却告诉Java你要对他的第11个元素赋值,Java表示只好死给你看。
这里也介绍一下数组的一些常用技巧(方法):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public static void main(String[] args) {
int[] ints = new int[10];

//获取数组的长度
int length = ints.length;
System.out.println("数组的长度是: " + length);

//用一个for循环,把这个数组的每一个元素都赋值一次
for(int i=0; i<10;i++) {
ints[i] = i;
}

//使用foreach遍历数组
//这个for会先把ints的第一个元素的值赋给i,然后执行后面的语句块
//再把第二个元素赋给i,再执行一遍语句块
for(int i : ints) {
//如果你在这里修改了i的值,也不会影响到原来的数组里的元素
i = i + 10;
System.out.println(i);
}
//测试:用for循环遍历输出数组
for(int i=0;i<length;i++) {
System.out.println(i);
}
}

就和改变一个变量内容一样,我们也可以让ints指向另一个数组(数组是对象,与基本数据类型有区别)。

1
2
3
4
5
6
public static void main(String[] args) {
int[] ints = {1,2,3,4,5};
System.out.println(ints.length);
ints = new int[2333];
System.out.println(ints.length);
}

数组不可以直接改变大小,但我们可以让这个数组的变量名指向另一个不同大小的数组,来改变它的大小。
(当然,如果你声明的是int数组,就不能指向double数组了)
(也不可以指向其他维度的数组)

多维数组

前面讲到数组可以看成把数据类型排成一队,比如说int[] ints = new int[10]就是排成一个长度为10单位的队伍。
那么我们可不可以排列成多个队伍呢?
答案是肯定的,这样的数组也叫多维数组。它的声明方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
public static void main(String[] args) {
//创建一个5行10列的double数组(当然你非要说10行5列也没差)
double[][] doubles = new double[5][10];
//赋值第2行第6个元素
doubles[1][5] = 23333.2;

//创建一个3行3列的int数组
int[][] ints = {
{1,4,7},
{2,5,8},
{3,6,9}
};
}

不过我可能需要提醒你的是,把他想象成x行y列的一个队列可能可以帮助你理解数组,但是你要知道的是,Java可并不这么想。做个试验:

1
2
3
4
public static void main(String[] args) {
double[][] doubles = new double[5][10];
System.out.println("doubles的长度是: " + doubles.length);
}

猜猜输出什么?5?10?50?
正确答案是: doubles的长度是: 5
为什么会这样?先别急着问,我们再来做个试验:

1
2
3
4
5
public static void main(String[] args) {
double[][] doubles = new double[5][10];
System.out.println("doubles的长度是: " + doubles.length);
System.out.println("doubles[0]的长度是: " + doubles[0].length);
}

这回也许你能猜到答案了,输出是:
doubles的长度是: 5
doubles[0]的长度是: 10

聪明的人已经知道原因了,Java里多维数组并不是理解为x行y列的鬼畜队伍。
多维数组是:数组里存的数组。
也就是说double[][] doubles = new double[5][10];,其中doubles[0]又可以分出来单独当做一个一维数组使用。
是的,我说数组里存的是元素,但你应该知道的是,数组本身也能当作一个元素来处理!

举一反三:三位数组int[][][] ints = new int[5][10][100],其中ints[0]可以当做一个二维数组处理,而ints[0][1]又可以当做一个一维数组处理,只有ints[0][9][25]这样的才能当做一个单独的int变量处理!
怎么样,很简单吧2333

字符串

字符串或串(String)是由数字、字母、下划线组成的一串字符。
—— 百度百科

其实字符串也是一个字符数组,它本身也是一个类(下一阶段我们将重点讲解类和对象),只是它除了new出来以外,还可以通过直接String s = "2333"来声明并赋值。
嘛这里不是给你介绍关于面向对象的知识的,在这里我只简单讲解一下字符串的常用方法。




妈蛋我不想讲了,自行百度!(所有方法ide都会有提示的啊我讲了有毛用!)

练习

  • 懒得布置练习了,数组好像没什么好做的

练习答案

本章完

点我返回目录

感谢各位的阅读!

人生不易,仓鼠断气