欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 一般数组的概念和使用1

程序员文章站 2022-04-03 08:52:40
...

java 一般数组的概念和使用1

  java 数组是一组连续的存储空间,存储多个相同数据类型的值,特点是类型相同、长度固定。
  有待确定的地方,因为 OC 里 NSMutableArray 可变数组对象是可以存储不同数据类型,并且长度也不用在定义时固定,我想 java 应该有相同功能的对象,但我还没学到,所以这篇文章都是按目前的概念来写。
  数组的4要素: 数组名称、数组元素、元素类型、元素下标。
  数组的4种初始化方法,前两种常用。

// 1
int[] data1 = new int[5];
		
// 2
int[] data2 = {1, 2, 3, 4, 5};
		
//3
int[] data3;
data3 = new int[5];
		
// 4
int[] data4 = new int[] {1, 2, 3, 4, 5};

  各种类型的数组元素默认值。

// 没有默认值
int a; 
		
// 0
int b[] = new int[5];
		
// 0.0
double[] c = new double[5];
		
// false
boolean[] d = new boolean[5];
		
// 空字符
char[] e = new char[5];
		
// 默认值为 null
String[] f = new String[5];
		
String g = null;
// 使用 . 语法时会报空指针的错误
// g.equals("dd");

  数组的两种扩容方法。

import java.util.Arrays;

// 数组扩容

public class test4 {
	public static void main(String[] args) {
		int[] data = {1,2,3,4,5};
		
		int[] newArr = new int[data.length * 2];
		
		/**
		 * 1
		 * System.arraycopy(src, srcPos, dest, destPos, length); 无返回值
		 * Object src  源数组
		 * int srcPos  从源数组的下标开始复制
		 * Object dest 目标数组
		 * int destPos 从目标数组下标接受值
		 * int length  从源数组的srcPos开始接收多少长度的数据,注意源数组的srcPos + length 不能大于 src.length,否则数组越界报错
		 */
		System.arraycopy(data, 0, newArr, 0, data.length);

		/**
		 * 2
		 * Arrays.copyOf(original, newLength); 返回一个新数组
		 * Object original 源数组
		 * int newLength 新数组长度
		 */
		
		int[] newArr2 = Arrays.copyOf(data, 20);
		
		for (int i = 0;i < newArr2.length; i ++) {
			System.out.println(newArr2[i]);
		}
	}
		
}

  基本数据类型和引用数据类型的传递参数。

package com.qf;

public class test5 {
	public static void main(String[] args) {
		
		int sum = 10;
		
		int[] arr = {10,11,12};
		
		String str = "在吗?";
		
		method1(sum); // 10
		method2(arr);	// 100
		method3(str);	// 在吗?
		
		System.out.println(sum);
		System.out.println(arr[0]);
		System.out.println(str);
	}
	
	public static void method1(int sum) {
		sum = sum + 1;
	}
	
	public static void method2(int[] arr) {
		arr[0] = 100;
	}

	public static void method3(String str) {
		str = str + "增加";
	}
}

  基本数据类型是值传递,在函数内部改变后,不会改变函数外面的变量值;基本数据类型以外都是引用数据类型,引用数据类型(String 除外)的传递是内存地址的传递,在函数内改变存储变量的值会改变函数外的变量值。但代码里可以看到,String 也是引用数据类型,并没有改变函数外 String 的值,因为 String 是特例,打印数组的时候,打印的内存地址,打印 String 的时候,跟基本数据类型一样,打印的是值,所以 String 也是值传递。

java 一般数组的概念和使用1

  java 内存分配默认为机器内存的 1/8,基本数据类型存储在栈区,引用数据类型的元素存储在堆区。数组引用变量是一个引用类型的变量,被存储在栈(stack)内存中,实际的数组元素被存储在一组连续的堆(heap)内存空间中。


相关标签: java 相关 java