Java:String数组(对象)、for-each循环

String变量

当String变量没有初始值的时候,默认为null,输出也为null,String类型的数组也一样。

public static void main(String[] args) {
		int[] ia = new int[10];
		String[] a = new String[10];
		System.out.println(ia[0]+2);
		System.out.println(a[0]+2);
		System.out.println(a[0].length());
	}

在这里插入图片描述

在java中,如果用”=“运算符,不可能用一个对象去修改另一个对象的值,只能使变量指向不同的对象

public static void main(String[] args) {
		String s = "hello";
		s = "bye";
		}

在这里插入图片描述
在这里插入图片描述

String数组

String类型的数组和String类型一样,不是本身数据的拥有者,只是数据的管理者,String类型的变量会指向一个存储对应数据的地方,而String类型的数组可以理解为多个String类型的变量,指向多个地址。
在这里插入图片描述

for-each循环

int类型的数组通过for-each循环,无法修改值

public static void main(String[] args) {
		int[] ia = new int[3];
		for(int i=0; i<ia.length; i++)
		{
			ia[i] = i;
		}
		for(int k:ia )
		{
			System.out.println(k);
			k = 0;
		}
		for(int k:ia )
		{
			System.out.println(k);
		}
0
1
2
0
1
2

而对象数组,可以通过for-each循环修改值

class Value
{
	private int i;
	public void set(int i) {this.i = i;}
	public int get() {return i;}
}
public class test {
	
	public static void main(String[] args) {
		Value[] a = new Value[3];
		for(int i=0; i<a.length; i++)
		{
			System.out.println(a[i]);
			a[i] = new Value();
			a[i].set(i);
		}
		for(Value v : a )
		{
			System.out.println(v.get());
			v.set(0);
		}
		for(Value v : a )
		{
			System.out.println(v.get());
		}
null
null
null
0
1
2
0
0
0

如上代码,Value类型的数组a的每一个元素都是一个Value类型的对象,每一个元素都可以调用对象的成员函数[get()|set()]。
int类型的for-each相当于将int类型数组中的一个元素赋值给对应的变量(v)。

而String类型的数组是数组的管理者而不是所有者,相当于将管理对应元素的指针给了(v)一份,v和数组中的指针都指向同一个元素,所以可以用v.get()改变String类型的数组元素。

在这里插入图片描述
在这里插入图片描述

在String数组的for-each循环中,v第一轮指向String数组第0个元素指向的那个数据,将其修改为0,第二轮指向第一个元素指向的那个数据,将其修改为0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值