int [] id;//宣告阵列名称为id & 资料型态为int
id = new int[3];//确保阵列能保存的内容数
也可以写成一行
int [] id = new int[3];
也可以直接指定内容
int [] id = {1,2,3};
或是利用index值填入资料如下:
id[0] = 1;
id[1] = 2;
id[2] = 3;
在阵列的第一个位置填入1,第二个位置填入2,第三个位置填入3
int size = id.length;
此案例的size会等於3
建立Sample2_1.java练习看看
class Sample2_1 {
public static void main(String[] args) {
char[] c; //宣告阵列
c = new char[3]; //作成
int[] i = new int[3]; //一行搞定宣告&作成
String str[] = {"AAA","BBB","CCC"}; //宣告、作成并赋值。
c[0] = 'A';c[1] = 'B';c[2] = 'C';
i[0] = 100;i[1] = 200;i[2] = 300;
System.out.println("str的长度为:" + str.length);
System.out.println("c[0] :" + c[0]);
System.out.println("i[1] :" + i[1]);
}
}
编译後执行,可能会发现"str的长度为:"这行变成乱码
这是因为CMD环境的编码不一致
如果只想暂时性改变CMD环境编码,可使用以下指令
chcp 950
※chcp = chang code page。950是繁体中文的号码,utf-8则是65001。
此设定在关闭画面之後就会恢复为预设值。
疑问:不知道为什麽,编译时用utf-8编译,CMD环境也设为utf-8,执行时中文却还是显示乱码。非得设成繁体中文才行。(使用指令chcp 950)
如果想永久修改CMD环境编码
1.Win+R,输入regedit开启登录档编辑器
2.找到 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor
3.右键新建一个字串值(S),取名叫Autorun,值设为@chcp 950>nul
建立Sample2_2.java
class Sample2_2 {
public static void main(String[] args) {
int i ;
System.out.println("i的值为:" + i);
int [] array = new int[5];
System.out.println("array[0]的值为:" + array[0]);
}
}
以上的程序码由於i虽然被宣告了,但里面没有值所以会报错。
把以下这行注解掉再试一次
//System.out.println("i的值为:" + i);
会发现array[0]虽然没有指定值,但是自动被预设为0了。
这是因为在new一个阵列时,会先自动填入预设值。
建立Sample2_3.java档案并写入以下内容
class Sample2_3 {
public static void main(String[] args) {
int[][] array;
array = new int[3][4]; //阵列里有三个物件,每个物件又内含四个物件。
array[0][0] = 100;
array[0][3] = 200;
System.out.println("array[0][0]的值:" + array[0][0]);
System.out.println("array[0][3]的值:" + array[0][3]);
}
}
依照下面的步骤将java档编译後执行,就跟之前做的一样。
如果怕忘记或找不到指令,可以用记事本记起来。
cd C:\Users\userXXX\Desktop\java //移动到案件资料夹
javac -encoding utf-8 Sample2_3.java //编译(使用utf-8以避免中文乱码)
java Sample2_3 //执行
基本上多维阵列的概念就跟windows的资料夹一样,
每个资料夹里面都可能还有不定数量的资料夹或档案。
再看一个范例:
class Sample2_4 {
public static void main(String[] args) {
/*
int[][] array = new int[3][]; //阵列里有三个物件,每个物件里的东西尚不指定。
array[0] = new int[3]; //指定array[0]里面有三个存放int资料的空间
array[1] = new int[5]; //指定array[1]里面有五个存放int资料的空间
array2] = new int[2]; //指定array[2]里面有二个存放int资料的空间
*/
//创建阵列并赋值
int[][] array = {{10,20,30},{50,60,70,80,90},{100,200}};
System.out.println("array[0][0]的值:" + array[0][0]);
System.out.println("array[1][4]的值:" + array[1][4]);
}
}
这个范例说明了创建阵列时,不一定要一次把所有条件都指定好。 而且每个阵列的长度也可以不一样。 可以先规定好阵列的大小後,一一赋值,也可以直接创立阵列并赋值。 本案例就用了/*和*/符号把一开始三行的程序码注解掉。 直接创立阵列并赋值
JAVA利用java.util.ArrayList类实现了可变长的列表功能。
方才的阵列长度是固定不可变的,例如:
array = new int[3];
这行程序码就确保了记忆体中,预留了3个保存int资料的空间。不能增加也不能减少。
但ArrayList类可以。
JAVA里面有很多既有的工具类可使用,ArrayList类就是其中一种。要使用这些工具,需要先import。
像是把工具从仓库拿到工作台来一样。
ArrayList的使用流程如下:
可以发现这边赋值和取值的方式和阵列不一样,
在JAVA的工具类中,每个类都有自己的使用方法,不会用的时候就用关键字google吧。
在新增一个ArrayList时,<>内只能存放物件,不能放int,double等基本资料型态。
像下面这行程序码因为放了int就会报错:
ArrayList<int> array = new ArrayList<int>();
为了解决这个问题,JAVA有提供一些物件来包覆基本资料型态如下表:
基本资料型态 | 对应的wrapper class |
---|---|
boolean | Boolean |
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
利用get方法取出资料时,JAVA会自动检查来源与目标的资料型态是否可以互换。
如果无法确认来源资料是什麽类型,就会在编译时报错。如下例:
ArrayList<int> array = new ArrayList<int>();
array.add(10);
int num = array.get(0);
由於无法确认array里面会拿出什麽东西来,所以报错,应修改成下面的样子:
int num = (Integer)array.get(0);
利用()来指定资料型态,像是过海关一定要填申报单一样。
新建ArrayList的时候,左右都要重复写一次资料类型很麻烦,
所以在JAVA SE7版本之後,右边的资料类型可以省略不写。如下例:
ArrayList<int> array = new ArrayList<>();
在CMD画面执行指令的时候,可以在指令後面给予引数,告诉电脑一些额外资讯。例如档案路径也是引数的一种。
https://imgur.com/UI0L2Vh
在执行「java」这个指令时,第一个引数会被当成要执行的路径或档案名称,
第二个以後的引数则会被传进执行的程序里,保存在String[] args列表里面。
我们可以在程序里对这些引数做一些处理。处理完的结果就跟上图一样。
class Sample2_5 {
public static void main(String[] args) {
System.out.println(args[0]);
System.out.println(args[1]);
System.out.println(args[0] + args[1]);
}
}
※JAVA里的引数预设被保存为String形式,如果要转换成数字,可以使用以下方法
int num = Integer.parseInt(args[0]);
在CMD画面里有许多可以直接使用的指令,这些指令常常会需要搭配引数来使用。
我们也可以自己写指令,就如同Sample2_5一样,自己定义指令後面的各个引数该如何被使用。
以上 是第二章 阵列与列表的学习纪录
下一章会讲演算子与分歧文(if)
参考教材: JAVAプログラマSilver SE8 - 山本 道子
<<: HP D2600 Storage AUC正常但第一颗硬碟亮灯
盒模型概念 所有的HTML元素就像是箱子一样(有宽度高度),并且具备以下六个属性: 宽度width...
人的科技文明发展始终来自於人性 在现今的科技与资讯发达的社会,人手一机已不再是奢望,连小小年纪的小朋...
17King 制造中,订阅一下吧(*´∀`)~♥ 今日影片长度:08 分 36 秒 上集重点条列: ...
予焦啦!我们昨日实作完简易排程,确保 Golang 执行绪(M)都会被排到 CPU 资源。但是却有不...
今天⋯不太舒服⋯只摘要了 6 页 >"< 对很多人而言,「工具」一词代表一项「...