您的位置:首页 > 其它

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

2015-01-17 15:26 281 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: