Java学习第十天——数组(遍历)

一 数组的遍历

  • 传统for循环
  • 增强for循环(each)
  • Array类中的ToString方法

1.1传统for循环;依次访问,从第一位元素,访问到最后一位元素

for( int i=0;i<arr.length;i++){

System.out.println(i);

}

1.2 增强for循环——for-each循环

for(数据类型 变量名:数组名){

System.out.println(变量名);

}

int [ ] arr=new int[ n ];

for(int e : arr){

//int e=1; 把arr数组中的元素依次赋值

System.out.println(e);

输出的内容;

1 2 3 4......n

}

特点

a,不需要下标就能获取数组内容

b ,不能给e赋值

c ,不能操作下标

1.3 利用Array类中的toString方法

调用Array.toString(a),返回一个包含数组元素的字符串,这些元素被放置在括号内,并用逗号分开
 

int[] array = {1,2,3,4,5};
System.out.println(Arrays.toString(array));
输出:[1, 2, 3, 4, 5]

说明:System.out.println(array);这样是不行的,这样打印是的是数组的首地址。

二维数组例;

/**功能;二维数组的遍历
 * @author 宁成伟
 *思路;三种方式
 *	   1,传统for循环
 *	   2,for each循环
 *	   3,Array的ToString方法
 */
public class Demo6 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [][]a = {
				  {10,21,60},
				  {45,64,123},
				  {78,58,999}
				
		};//创建二维数组
		//1传统for循环遍历输出
		System.out.println("传统for循环遍历输出");
		for(int i=0;i<a.length;i++){
			for(int j=0;j<a[i].length;j++){
				
				System.out.print(a[i][j]+" ");
			}
			System.out.println();
		}
		System.out.println("----------------------------------");
		//2,增强for循环输出
		System.out.println("for ecah循环遍历");
		for(int[] b:a){
			for(int c:b)
			{
				System.out.print(c+" ");
			}
			System.out.println();
		}
		System.out.println("----------------------------------");
		//3.ToString方法遍历
		System.out.println("ToString方法遍历");
		for(int s=0;s<a.length;s++){
			System.out.println(Arrays.toString(a[s]));
		}
		
	}

 

 

 

1.2 数组中的默认值

a 没有数组元素赋值的情况下,依旧可以正确访问数组

int a[ ]=new int [5];

for(int i = 0;i < a.length;i ++){

System.out.println(a[i]);

}

可以输出,输出结果根据类型不一样,

整数默认为0,

小数默认为0.0

字符默认为\u0000

布尔;false

其他;null

 

 

数组的连续内存空间意义;

数组的引用存在栈例,数据的数据存在堆里,

数组的引用指向的是数据即数组元素的首地址,而后会继续输出相邻接下来的元素。

 

 

 

1.3 数组语句的创建

动态创建数组,创建数组,然后在根据下标一个一个存储数据。

A;先声明,再创建(分配内存空间)

数据类型 [] 数组名

数组名 = new 数据类型 [ 长度];

B; 声明并创建

数据类型 [ ] 数组名 = new 数组类型[ 长度];

 

1.4 数组的地址转移

了解数组的地址;

int a[ ] = new int (3);

a[0]=1;

a[1]=2;

a[2]=3

System.out,println(a.length); //数组的长度 4

System.out,println(a); //a数组的地址

System.out,println(a[0]); //数组a 第一个元素



int b [ ]={4.5.6.7};

System.out,println(b.length); //4

System.out,println(b); // b的地址

System.out,println(b[0]); //4





int [ ] c=a; //将a的地址指向赋给C,a和c同时指向数组a [ ]的地址

System.out,println(c.length); // 3

System.out,println(c); //a的地址

System.out,println(c[0]); //1





b=c; //c的地址指向并赋给c,b的地址被覆盖,内存空间4,5,6,7丢失,

//c的只有地址,没有开辟内存空间,此时b也只有地址,没有内存空间

c[0] = 100; //此时c的内存空间赋了第一位元素0,并分配地址100,

System.out,println(a.[1]); //100

System.out,println(a.[2]); //100

System.out,println(a.[3]); //100

1.5 数组与方法

a 设计一个方法,原样打印输出被输出的数组

public static void printArray(int [ ] arr){

for(int e : arr){

System.out,println(e);

}

}

 

public static void mian(String args []){

int [ ] a = {1,2,3,4,5};

printArray(a);

}

 

1.6 数组作为参数

 

b 数组可以作为参数被方法调用,也可以返回数组类型,注意数组被调用与返回值返回时,实际上是一个16进制的堆内存地址被调用与返回:

 

public static String[] getString(String[] arr){

String[] a = new String[];

return a;

}

 

设计一个方法能够生成一个数组,并赋值,返回值数组内容给调用处,

public static int creatArray(){

int [ ] arr= int [10];

for(int 1=0;i<a.length;i++){

arr[i] = i * 2;

}

return arr;

}

public static voi main(String args []){

int [ ] b = crreatArray();

for(int i=0;i<b.length;i++){

System.ouy.println(b[i]);

}

}

 

1.6 数组作为返回值

 

 

1.7可变参数

a一个方法可以接受的参数不定(0到多个),但是类型固定。

b,可变参数写在后面 (int a,String s,int ...num)

c,一个方法最多只能接受一个可变参数

 

 

1.8数组的排序

a,冒泡排序;

算法思想:将相邻俩个数进行比较,将较大的数依次往后移,循环每一次得到的他们中的最大值依次存储到最后。(如果数组长度为n,这需要循环n-1次)

[ ] arr = { 15, 23 ,8 , 10, 7};

 

第一轮 15 8 10 7 23

第二轮 0 8 17 15 23

第三轮 8 7 10 15 23

第四轮 7 8 10 15 23

 

 

 

 

注;

1,数组的概念,是存储多个相同数据类型的值的连续的一组内存空间。

2,内存连接 ,数据类型一致,应用类型的数据 。

3,   控制台输入数组;

 

 


引用备注;

引用1;原文链接:https://blog.csdn.net/chenkaibsw/article/details/78989459

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值