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