Java基础(三)-数组与字符串的创建
Java基础目录如果有不好理解的地方,请评论一下,我举例说明。
数组的特点
数组是相同数据类型元素的集合。即数组只能保存同一种类型的元素。
数组中各元素在内存中按顺序连续存放。即数组中元素会聚集保存在一段连续的内存空间,不会分开存放。
数组元素可以用数组名+位置(数组下标)来表示。例如nums[0]表示nums数组中的第1个元素,nums[1]表示nums数组中的第2个元素。
数组名代表数组的首地址,在传参时,不论是几维数组,作为实参时不需要中括号(下一篇会讲到方法的传参)。
一维数组
为了使用java的数组,需要三个步骤:
声明数组 - 分配空间 - 赋值元素。
// 声明数组,type为数组类型,arrayName为用户自定义的数组名称。
// 两种声明数组的方式:
type []arrayName;
type arrayName[];
/* new为分配空间的关键字,size为分配大小
* size必须有值,且不能为负数
* 分配数组空间的方式:
*/
arrayName = new type[size];
// 声明与分配空间能在同一行处理,如:
type []arrayName = new type[size];
// 将数组中第i+1位赋为value。
arrayName[i] = value;
// 在声明时进行分配空间与初始化:
// 花括号中元素个数为数组长度。
int arrayName[] = {1, 2, 3};
注意:
在type []arrayName = new type[size];中,第一个中括号内不能填写任何东西,它起到的作用与type类似,是用来标识元素类型的,即,type[]是type数组类型。
利用花括号的初始化只能在数组声明时使用,声明后无法用其赋值。
多维数组
以二维数组举例,高维数组的使用与其类似。
// 数组声明
type [][]arrayName;
type arrayName[][];
// 数组分配空间,size1d表示一维大小,size2d表示二维大小。
arrayName = new type[size1d][];
arrayName = new type[size1d][size2d];
// 三维数组分配空间,size3d表示三维大小。
type arrayName[][][];
arrayName = new type[size1d][][];
arrayName = new type[size1d][size2d][];
arrayName = new type[size1d][size2d][size3d];
/*
* 多维数组的分配有几个注意点:
* 一维大小必须分配,其余维度可留空。
* 为什么可以留空,因为Java中的多维数组,可以不是方形的,即,一个维度可以有多个长度。
* 留空的维度,可以在之后分配空间。
*/
// 分配一个2*3的二维数组,两种方法:
type arrayName[][] = new type[2][3];
type arrayName[][] = new type[2][];
arrayName[0] = new type[3];
arrayName[1] = new type[3];
// 分配一个同一纬度中元素长度不同的二维数组:
type arrayName[][] = new type[2][];
arrayName[0] = new type[2];
arrayName[1] = new type[22];
type arrayName[][] = {
{1, 2, 3, 4, 5},
{222, 333}};
这部分看不懂的话,大概是我没讲明白,按自己理解试一下就好了,很简单的。
字符串
String类型:
String对象创建后,如果被修改,会变成新的String对象(也被称作String对象创建后不能修改,实际上是修改后就不是原来的对象了)。
String类型不是char[]数组,但String可通过函数转换为char[]数组。
// 字符串声明
String variableName;
// 字符串对象创建
variableName = new String("字符串内容");
// 声明同时创建对象
String variableName = new String("字符串内容");
// 声明同时创建对象2
String variableName = "字符串内容";
// 字符串连接
variableName = "字符" + "串内容";
// 将其它类型数据与字符串连接
variableName = "这串字符串有" + 9 + "个字";
// 将其它类型转换为字符型,以整型9为例
variableName = "" + 9;
StringBuilder与StringBuffer类型:
被修改后对象不变的字符串类型,
其中,StringBuilder性能更高,但没有实现线程安全
StringBuffer实现了性能安全。
三者的对比可以看这篇:
String、StringBuffer和StringBuilder的区别
共有 0 条评论