5-2-1 数组变量-直接初始化数组-length优势-int[] b=a-a让b共同管理数组-复制数组

JAVA优点:new创建的数组默认初始值为0


初始化数组其他方式——直接赋值/初始化数组

int[] scores = {87,98,69,54,65,76,87,99} ;

与之前的 5-1-3 数组的元素-比较:
<pre name="code" class="java">int[] a = new int[10]; 
 


1.不需给出数组大小,编译器替你数(自动数出8个数)

2.通过length获得


程序:

import java.util.Scanner;

public class Main {

   public static void main(String[] args) {
      
	   Scanner in = new Scanner(System.in);
	   
	   int[] scores = {87,98,69,54,65,76,87,99} ;
	   
	   System.out.println(scores.length);

	   for ( int i = 0; i < scores.length; i++ )
	   {
		   System.out.print(scores[i] + " ");
	   }
       }
}

输出:

8

87 98 69 54 65 76 87 99 



用length好处——可拓展性:

数组大小增加,System.下面的也不用改


引入数组变量赋值


程序:

	   int[] a = new int [10];
	   a[0] = 5;
	   int[] b =a;
	   b[0] = 16;
	   System.out.println(a[0]);


输出16


print大法检查一下

<p class="p1"><span>	</span>   <span class="s1">int</span>[] <span class="s2">a</span> = <span class="s1">new</span> <span class="s1">int</span> [10];</p><p class="p1"><span>	</span>   <span class="s2">a</span>[0] = 5;</p><p class="p1"><span>	</span>   <span class="s1">int</span>[] <span class="s2">b</span> =<span class="s2">a</span>;</p><p class="p1"><span>	</span>   System.<span class="s3">out</span>.println(<span class="s2">a</span>[0]);</p><p class="p1"><span>	</span>   <span class="s2">b</span>[0] = 16;</p><p class="p1"><span>	</span>   System.<span class="s3">out</span>.println(<span class="s2">b</span>[0]);</p><p class="p1"><span>	</span>   System.<span class="s3">out</span>.println(<span class="s2">a</span>[0]);</p><p class="p1"> 
</p>

输出

5

16

16

结论:

a,b数组相通


原因:

1.a相当与右边新数组的管理者

  int[]a =newint [10];

	   int[] a= {87,98,69,54,65,76,87,99} ;

不同于这个i是右边的所有者

	   int i = 5;


2.ab都变成右边新数组的管理者,没有创建新数组

	   int[] a = new int [10];
	   int[] b =a;



j也拥有了一个新的5,也是所有者

<span style="white-space:pre">	</span>int i = 5;
<span style="white-space:pre">	</span>int j = i;


新程序:

<p class="p1"><span class="s1">import</span> <span class="s2">java.util.Scanner</span>;</p><p class="p2">
</p><p class="p3">public<span class="s3"> </span>class<span class="s3"> Main {</span></p><p class="p2">
</p><p class="p1">   <span class="s1">public</span> <span class="s1">static</span> <span class="s1">void</span> main(String[] <span class="s4">args</span>) {</p><p class="p2">      </p><p class="p2">
</p><p class="p2"><span>	</span>   </p><p class="p1"><span>	</span>   <span class="s1">int</span>[] <span class="s4">a1</span> = {1,2,3,4,5};</p><p class="p1"><span>	</span>   <span class="s1">int</span>[] <span class="s4">a2</span> = <span class="s4">a1</span>;</p><p class="p4">//<span>	</span>   做遍历,让a2每个元素+1</p><p class="p1"><span>	</span>   <span class="s1">for</span> ( <span class="s1">int</span> <span class="s4">i</span> = 0; <span class="s4">i</span> < <span class="s4">a2</span>.<span class="s5">length</span>; ++<span class="s4">i</span> )</p><p class="p1"><span>	</span>   {   </p><p class="p1"><span>	</span><span>	</span>   <span class="s4">a2</span>[<span class="s4">i</span>] ++;</p><p class="p1"><span>	</span>   }</p><p class="p4">//<span>	</span>   做遍历,输出a1</p><p class="p1"><span>	</span>   <span class="s1">for</span> ( <span class="s1">int</span> <span class="s4">i</span> = 0; <span class="s4">i</span> < <span class="s4">a1</span>.<span class="s5">length</span>; ++<span class="s4">i</span>)</p><p class="p1"><span>	</span>   {</p><p class="p1"><span>	</span><span>	</span>   System.<span class="s5">out</span>.println(<span class="s4">a1</span>[<span class="s4">i</span>]);</p><p class="p1"><span>	</span>   }</p><p class="p1">       }</p><p class="p1">}</p>

输出:

2

3

4

5

6



总结:

1.数组变量是数组管理者而非所有者

2.数组创建出来交由数组变量管理

3.数组变量赋值是赋予管理权限

4.数组变量间比较是判断是否管理同一数组



关于4的程序1:

import java.util.Scanner;

public class Main {

   public static void main(String[] args) {
	   int[] a = {1,2,3,4,5} ;
	   int[] b = a;
	   System.out.println(a == b);
       }
}

输出true


关于4的程序2:

import java.util.Scanner;

public class Main {

   public static void main(String[] args) {
	   int[] a = {1,2,3,4,5} ;
	   int[] b = {1,2,3,4,5} ;
	   System.out.println(a == b);
       }
}
输出false——内容相同,但ab不管理同一数组


怎样把一个数组交给另一个管理者呢——引入复制数组


复制数组程序

import java.util.Scanner;

public class Main {

   public static void main(String[] args) {
	   int[] a = {1,2,3,4,5} ;
	   int[] b = new int[a.length] ;
	   
	   for ( int i = 0; i < b.length; i++)
	   {
		   b[i] = a[i];
	   }
	   for ( int i = 0; i < b.length; i++)
	   {
		   System.out.println(b[i]);
	   }
	   System.out.println(a == b);
       }
}

输出:

1

2

3

4

5

false


留意:

a和b依旧不是同一个数组,但是数据相同。


怎么比较两个数组的每一个元素是否相等

import java.util.Scanner;

public class Main {

   public static void main(String[] args) {
	   int[] a = {1,2,3,4,5} ;
	   int[] b = new int[a.length] ;
	   
	   for ( int i = 0; i < b.length; i++)
	   {
		   b[i] = a[i];
	   }
	   
//	   预先假设相等
	   boolean isEqu = true;
	   
	   for ( int i = 0; i < b.length; i++)
	   {
		   if ( a[i] != b[i])
		   {
			   isEqu = false;
			   break;
		   }
	   }
	   
	   System.out.println(isEqu);
       }
}
输出:

true
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值