5-2-1 数组变量-直接初始化数组-length优势-int[] b=a-a让b共同管理数组-复制数组
2015-01-17 15:26
281 查看
JAVA优点:new创建的数组默认初始值为0
与之前的5-1-3
数组的元素-比较:
1.不需给出数组大小,编译器替你数(自动数出8个数)
2.通过length获得
程序:
输出:
8
87 98 69 54 65 76 87 99
输出16
print大法检查一下
输出
5
16
16
结论:
=newint
[10];
不同于这个i是右边的所有者
j也拥有了一个新的5,也是所有者
新程序:
输出:
2
3
4
5
6
2.数组创建出来交由数组变量管理
3.数组变量赋值是赋予管理权限
4.数组变量间比较是判断是否管理同一数组
关于4的程序1:
输出true
关于4的程序2:
输出:
1
2
3
4
5
false
留意:
a和b依旧不是同一个数组,但是数据相同。
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
初始化数组其他方式——直接赋值/初始化数组
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
相关文章推荐
- 直接初始化 和 复制初始化 的细微差别
- C++对象的直接初始化和复制初始化
- 怎么定义一个int[n]数组且初始化
- C++的一大误区——深入解释直接初始化与复制初始化的区别
- [Java] 数组-02 初始化与length
- 在类声明中,静态(static)常量(const)泛整数型(char, int, DWORD)可以直接初始化
- java笔记之数组的概念、声明、初始化、访问方式、复制和动态扩展算法以及递归
- java和C++中数组的初始化和复制
- 直接初始化与复制初始化
- 复制初始化和直接初始化的区别
- memset函数不能给int(整型)数组初始化赋值
- C++ 直接初始化和复制初始化
- 直接初始化和复制初始化有什么不同
- C++直接初始化和复制初始化
- C++的一大误区——深入解释直接初始化与复制初始化的区别
- 数组初始化问题:int a[3]={0}和int a[3]={1}的区别
- 直接初始化与复制初始化
- C++类的直接初始化和复制初始化举例
- 深入解释直接初始化与复制初始化的区别
- java笔记之数组的概念、声明、初始化、访问方式、复制和动态扩展算法以及递归