一、一维数组
Java的数组的数据类型是引用类型,要想使用数组,必须经过定义数组、创捷数组、数组的初始化等步骤。
-
数组的初始化
数组元素类型[ ] 数组名;//格式1
数组元素类型 数组名[ ];//格式2
int[] a;// 格式1
double b[];// 格式2
-
数组的创建
数组名=new 数组元素的类型[数组的长度];
a = new int[4];
b = new double[3];
- 数组的初始化
int[] a= {1,2,3,4};//(1)声明数组时初始化
double b[];
b = new double[3];
b[0]=1; //(2)初始化
b[1]=2;
b[2]=3;
- 数组的使用
- 数组的长度:所有的数组都有一个属性length(长度)
package shuzu;
public class yiweishuzu {
public static void main(String[] args) {
int[] a = { 11, 22, 13, 43 };// 格式1
double b[];// 格式2
b = new double[3];
b[0] = 1;
b[1] = 2;
b[2] = 3;
System.out.print("a数组的长度:" + a.length);//a.length a数组的长度
}
}
- 数组元素的访问
(1) 循环输出数组内的值
package shuzu;
public class yiweishuzu {
public static void main(String[] args) {
int[] a = { 11, 21, 13, 43 };
// 循环输出数组内的值
for (int x = 0; x < a.length; x++) {
System.out.print(a[x] + " ");
}
}
}
- 数组的复制:可以把一个数组的长度赋值给另一个数组,但是俩个变量引用的都是同一个内从空间,因此,改变一个数组的值另一个数组的值也会改变。
package shuzu;
public class yiweishuzu {
public static void main(String[] args) {
int[] a = { 11, 21, 13, 43 };
int[] aCopy = a;
aCopy[2] = 1;
for (int x = 0; x < aCopy.length; x++) {
System.out.print(aCopy[x] + " ");
}
// 循环输出数组内的值
System.out.println();
for (int x = 0; x < a.length; x++) {
System.out.print(a[x] + " ");
}
}
}
二、练习
- 对一个数组进行排序
public class shuzu {
public static void main(String[] args) {
int[] nums = {23,56,78,98,44,11,8};
int len = nums.length;
for (int j = 0; j < len-1; j++) {
//优化:如果没有发生过交换就是有序。
boolean f=false;
for (int i = 0; i < len-1 - j; i++) {
if (nums[i] < nums[i + 1]) {
int a = nums[i];
nums[i] = nums[i + 1];
nums[i + 1] = a;
f=true;
}
}
if(!f) {
break;
}
}
for(int j=0;j<len;j++) {
System.out.print(nums[j]+" ");
}
}
}
- 有一个数列:8,4,2,1,23,344,12
(1)循环输出数列的值;
(2)逆序输出数列的值;
(3)求数列中所有数值的和;
(4)猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数。
import java.util.Scanner;
/*有一个数列:8,4,2,1,23,344,12
(1)循环输出数列的值
(2)逆序输出数列的值
(3)求数列中所有数值的和
(4)猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数*/
public class szlianxi1 {
//(1)
public static void main(String[] args) {
int[] nums = { 8, 4, 2, 1, 23, 344, 12 };
System.out.print("循环输出数列的值: ");
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] + " ");
}
System.out.println();
//(2)
System.out.print("逆序输出数列的值: ");
for (int i = nums.length - 1; i >= 0; i--) {
System.out.print(nums[i] + " ");
}
System.out.println();
//(3)
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
}
System.out.println("总和为:" + sum);
//(4)
int a = 0;
boolean x = false; // 用Boolean语句判断
System.out.print("请输入一个数:");
Scanner s = new Scanner(System.in);
int b = s.nextInt();
for (int i = 0; i < nums.length; i++) {
a = nums[i];
if (b == a) {
x = true;
System.out.println("包含");
}
}
if (!x) { // 只有Boolean为true的时候if(x)才输出
System.out.println("不包含");
}
}
}
- 采用冒泡排序法对char[] xxzm = { ‘m’, ‘b’, ‘p’, ‘f’, ‘a’, ‘u’, ‘z’ }进行排序。
public class szlianxi2 {
public static void main(String[] args) {
// a-z == 97-122
// 冒泡法:
char[] xxzm = { 'm', 'b', 'p', 'f', 'a', 'u', 'z' };
for (int i = 0; i <= xxzm.length - 1; i++) {
boolean f = false;// false不满足,true满足
for (int j = 0; j < xxzm.length - i - 1; j++) {
int a = xxzm[j];
int b = xxzm[j + 1];
if (a > b) {
char temp = xxzm[j];
xxzm[j] = xxzm[j + 1];
xxzm[j + 1] = temp;
f = true;
}
}
if (!f) {
break;
}
}
for (char b : xxzm) {
System.out.print(b + " ");
}
}
}