数组的定义:
数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。数组的三个基本特点:
1. 长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
2. 其元素必须是相同类型,不允许出现混合类型。
3. 数组类型可以是任何数据类型,包括基本类型和引用类型。
数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。
Java 语言中提供的数组是用来存储固定大小的同类型元素。
你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,....,number99。
接下来将为大家介绍 Java 数组的声明、创建和初始化,并给出其对应的代码。
声明数组
dataType[] arrayRefVar; // 首选的方法
dataType arrayRefVar[]; // 效果相同,但不是首选方法
ps:建议使用 dataType[] arrayRefVar 的声明风格声明数组变量。 dataType arrayRefVar[] 风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。
创建数组(数组初始化)
Java语言使用new操作符来创建数组,语法如下:
dataType[] arrayRefVar = new dataType[arraySize];
dataType[] arrayRefVar = {value0, value1, ..., valuek};
ps:数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arrayRefVar.length-1。
测试:
public class TestArray {
public static void main(String[] args) {
// 数组大小
int size = 10;
// 定义数组
double[] myList = new double[size];
myList[0] = 5.6;
myList[1] = 4.5;
myList[2] = 3.3;
myList[3] = 13.2;
myList[4] = 4.0;
myList[5] = 34.33;
myList[6] = 34.0;
myList[7] = 45.45;
myList[8] = 99.993;
myList[9] = 11123;
// 计算所有元素的总和
double total = 0;
for (int i = 0; i < size; i++) {
total += myList[i];
}
System.out.println("总和为: " + total);
}
}
结果:
总和为: 11367.373
遍历数组
很多人喜欢用for (int i = 0; i < myList.length; i++) 来遍历数组,其实如果不是需要精确控制数组的话,只是遍历,那更推荐下面一种方式
for(type element: array)
{
System.out.println(element);
}
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
for (double element: myList) {
System.out.println(element);
}
}
}
多维数组
String s[][] = new String[2][3];
s[0][0] = new String("Good");
s[0][1] = new String("Luck");
s[0][2] = new String(",");
s[1][0] = new String("to");
s[1][1] = new String("you");
s[1][2] = new String("!");
多维数组应该很容易理解,想象成x,y坐标系即可,这里就不做太多说明了。遍历二维数组也很容易,如果你是传统派,那么嵌套的for循环即可
for(int i=0;i<s.length;i++) {
for(int j=0;j<s[i].length;j++)
System.out.println(s[i][j]);
}
如果你向我一样喜欢优雅简洁的写法,可以这样写
for(String[] strout:s) {
for(String strin:strout) {
System.out.println(strin);
}
}
以上为遍历数组,其实java还有一个接口称之为迭代器,如果一个类继承了该接口,遍历数组或者容器都会更加方便。具体的我们说到Collection的时候再去讲。
java.util.Arrays类
JDK提供的java.util.Arrays类,包含了常用的数组操作,方便我们日常开发。Arrays类包含了:排序、查找、填充、打印内容等常见的操作。
今天我们用两个,打印数组和数组自动排序
打印数组
import java.util.Arrays;
public class Test {
public static void main(String args[]) {
int[] a = { 1, 2 };
System.out.println(a); // 打印数组引用的值(即内存地址);
System.out.println(Arrays.toString(a)); // 打印数组元素的值;
}
}
ps: 此处的Arrays.toString()方法是Arrays类的静态方法,不是前面讲的Object的toString()方法。
数组自动排序
import java.util.Arrays;
public class Test {
public static void main(String args[]) {
int[] a = {1,2,323,23,543,12,59};
System.out.println(Arrays.toString(a));
Arrays.sort(a);
System.out.println(Arrays.toString(a));
}
}
字符串定义
- String类又称作不可变字符序列。
- String位于java.lang包中,Java程序默认导入java.lang包下的所有类。
- Java字符串就是Unicode字符序列,例如字符串“Java”就是4个Unicode字符’J’、’a’、’v’、’a’组成的。
- Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例。
String e = "" ; // 空字符串
String greeting = " Hello World ";
字符串连接
String s1 = "Hello";
String s2 = "World! ";
String s = s1 + s2; //HelloWorld!
符号"+"把两个字符串按给定的顺序连接在一起,并且是完全按照给定的形式。
当"+"运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。
"+"连接符
int age = 18;
String str = "age is" + age; //str赋值为"age is 18"
//这种特性通常被用在输出语句中:
System.out.println("age is" + age);
字符串判断相等
- equals方法用来检测两个字符串内容是否相等。如果字符串s和t内容相等,则s.equals(t)返回true,否则返回false。
- 要测试两个字符串除了大小写区别外是否是相等的,需要使用equalsIgnoreCase方法。
- 判断字符串是否相等不要使用"=="。
public class TestStringEquals {
public static void main(String[] args) {
String g1 = "xuxiao";
String g2 = "xuxiao";
String g3 = new String("xuxiao");
System.out.println(g1 == g2); // true 指向同样的字符串常量对象
System.out.println(g1 == g3); // false g3是新创建的对象
System.out.println(g1.equals(g3)); // true g1和g3里面的字符串内容是一样的
}
}