Java中数组和字符串的区别
数组是类似类型元素的集合,存储在一个连续的内存位置。根据数组的定义,数组可以包含基元(int, char, etc)和对象(非基元)的引用。在原始数据类型的情况下,实际值被存储在连续的内存位置,而在类的对象的情况下,实际对象被存储在堆段。在Java中,所有的数组都是动态分配的。数组的大小必须由一个int值指定,而不是 long
或 short
。数组索引从0开始,一直到n-1,其中n是数组的长度。
数组声明语法 –
type var-name[]'
// OR
type[] var-name;
一个数组声明有两个部分: type
和 var-name
。 type
声明的是数组的元素类型。元素类型决定了组成数组的每个元素的数据类型。 var-name
声明的是数组变量的名称。像 int
类型的数组一样,也可以创建其他原始数据类型的数组,如: char
, float
, double
…等等。
例子 –
// both are valid declarations
int intArray[]
or int[] intArray
byte byteArray[]
short shortArray[]
boolean booleanArray[]
float floatArray[]
double doubleArray[]
char charArray[]
// An array of references to object of
// the class MyClass (a class created by
// user)
MyClass myClassArray[];
// Array of object
Object[] arrayObject,
// Array of collection of unknown type
Collection[] collectionObject
在Java中实例化一个数组
当一个数组被声明时,只有一个引用被创建。为了实际创建或给一个数组提供内存,可以像这样创建一个数组。
var-name = new type[size];
这里, type
指定被分配的数据类型, size
指定数组中的元素数量, var-name
是数组变量的名称。
例子 –
// Declaring an array
int intArray[]
// Allocating memory to array
int Array = new int[10];
或者
// Combining both statements in one
int[] intArray = new int[10];
使用for循环访问Java数组元素
数组中的每个元素都通过其索引来访问。索引以 0
开始,以(数组大小)-1结束。一个数组的所有元素都可以用Java for 循环来访问。
// Accessing the elements of the specified array
for(int i = 0; i < arr.length; i++)
System.out.println("Element at index" + i + ": " + arr[i]);
示例代码:
// Java program to illustrate creating an array of integers, put some values in the array, and prints each value to standard output
class YiibaiDemo {
public static void main(String args[])
{
// Declaring an Array of integers
int[] arr;
// Allocating memory for 5 integers
arr = new int[5];
// Initialize the first element of the array
arr[0] = 10;
// Initialize the second element of the array
arr[1] = 20;
// So on...
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
// Accessing the elements of the specified array
for (int i = 0; i < arr.length; i++)
System.out.println("Element at index " + i + " : " + arr[i]);
}
}
代码运行结果:
Element at index 0 : 10
Element at index 1 : 20
Element at index 2 : 30
Element at index 3 : 40
Element at index 4 : 50
字符串
在Java中,字符串基本上被视为一个代表字符序列的对象,但它不是一个原始类型。在Java中,字符串类被提供用来创建和操作字符串。在 String
类中,提供了许多方法来对字符串进行不同的操作。由于数组是可变的(可以增长),字符串在Java中是不可变的。每当对一个字符串进行修改时,就会创建一个全新的字符串。
下面是在Java编程语言中创建一个字符串的基本语法 –
<String_Type> <string_variable> = "<sequence_of_string>";
或者
<String_Type> <string_variable> = <new> <String_Type>("<sequence_of_string>");
每当一个字符串对象被创建时,将创建两个对象—一个在堆区,一个在字符串常量池,并且字符串对象的引用总是指向堆区对象。
例子:
// Java program to illustrate String
class YiibaiDemo {
public static void main(String args[])
{
// Creating a String without using new operator
String str = "YiibaiForGeeks";
// Prints the String
System.out.println("String str = " + str);
// Creating a String using new operator
String str1 = new String("YiibaiForGeeks");
// Prints the String
System.out.println("String str1 = " + str1);
}
}
运行结果:
String str = YiibaiForGeeks
String str1 = YiibaiForGeeks
数组和字符串的区别 :
编号 | 数组 | 字符串 |
---|---|---|
1 | 数组是一种数据结构,用于存储相同数据类型的元素的集合。 | 字符串基本上被视为一个代表字符序列的对象。一个数组 |
2 | 数组可以保存任何数据类型。 | 字符串只能保存 char 数据类型。 |
3 | 数组的元素被存储在一个连续的内存位置。 | 字符串类包含一个指向堆内存的某些部分的指针,字符串的实际内容存储在内存中。 |
4 | Java数组不以空字符结束,数组的结束元素是数组的最后一个元素。 | 但在Java中,默认情况下字符串是以空字符( '\0' )结束的。 |
5 | 数组是可变的。 | 字符串是不可改变的。 |
6 | 数组的长度是固定的。 | 字符串的大小是不固定的。 |