Java菜鸟学习笔记--数组篇(二):数组实例&args实例

基本类型实例


	//1.定义一个一维数组,先声明,在分配空间
	int []number;//生命,没有初始化,number=null
	
	number=new int[5];//初始化为默认值,int默认值为0
	//第二步创建内存空间,在堆空间创建长度为5数组,number里面存储的是第一个内存地址
		


引用类型实例



Person[] my=new Person[3];//
	/*
		1.my实在栈区,而Person数组在堆区
		2.堆空间有三个连续内存空间里面分别存有三个引用,并且默认初始化为null
	
	*/	

基本与引用区别图示


(下图摘自疯狂java,版权归疯狂java所有)



Args实例练习



1.在Main函数中,main(String[ ] args)中的args有什么作用?


String args[ ]或者String[ ] args表示给主方法传一个字符串数组. 而args是一个字符串数组的变量名,不是关键字,是arguments的缩写,只是一个默认名,一般都习惯性照写.
//1.数组练习
//2.args[] 功能
package me.array;

public class TestArray2{
	
	public static void main(String[] args){
		
	//输出
		int[] a={2,2,3,4,5,2,3,5,6,2};

		for(int i=0;i<a.length;i++){
		
			System.out.println("a["+i+"] = "+a[i]);
		
		}
		
		for(int i=0;i<args.length;i++){
			
			System.out.println("args["+i+"] = "+args[i]);
		}
		//直接java 这个不显示什么
		/*然后测试 :
		yg@Gino:~/Desktop/code$ java me.array.TestArray2 aaa bbb ccc
		a[0] = 2
		a[1] = 2
		a[2] = 3
		a[3] = 4
		a[4] = 5
		a[5] = 2
		a[6] = 3
		a[7] = 5
		a[8] = 6
		a[9] = 2
		args[0] = aaa
		args[1] = bbb
		args[2] = ccc
		*///args可以把java后面的参数挨个放入数组中,

	}

}


2.实例:写一个程序让 java  me.args.TestArgs 1 + 2 可以返回计算结果 3.0


//写一个程序让 java  me.args.TestArgs 1 + 2 可以返回3.0
package me.args;

public class TestArgs{
	
	static void tip(){
		
		System.out.println("-----------------------------------------------------------------");
		System.out.println("
温馨提示:
这个一个带参数的计算程序参");
		System.out.println("格式为 java me.args.Args n1 op n2");
		System.out.println("n1 --第一个数
OP --加减乘除任意操作符 
n2--第二个数");
		System.out.println("
1.输入数据是请注意n1 OP n2之间的空格
2.n1n2请输入数字");
		System.out.println("------------------------------------------------------------------");
	}
	
	public static void main(String[] args){
			
		//写一个程序让 java  me.args.TestArgs 1 + 2 可以返回3.0
		
		//判断参数,是否到三个
		if(args.length<3){
			
			System.out.println("Input Error!");
			System.out.println("java me.args.TestArgs "n1" "op" "n2"");
			TestArgs.tip();
			System.exit(-1);//退出程序,-1表示错误退出,0表示非法推出
		}
		//把String类型转换成double类型 然后再计算
		double[] number=new double[2];
		
		//可能抛出NumberFormatException,判断第一个字符可不可以转换成数字
		try{
		number[0]=Double.parseDouble(args[0]);
		}catch(NumberFormatException ea){
			
			System.out.println("----------n1 Number INput Error!--------------");
			ea.printStackTrace();
			TestArgs.tip();
			System.exit(-1);
		
		}
		
		//number[1]=Double.parseDouble(args[2]);不健壮,不能判断非法输入
		//用try结构判断n2输入是否合法,不合法就告诉用户,并且抛出异常
		try{
		number[1]=Double.parseDouble(args[2]);
		}catch(NumberFormatException ea){
			
			System.out.println("----------n2 Number INput Error!--------------");
			ea.printStackTrace();
			TestArgs.tip();
			System.exit(-1);
		
		}
		
		
		
		switch(args[1]){
			
			case "+":
				System.out.println(+number[0] + number[1]);
				break;
			case "-":
				System.out.println(number[0] - number[1]);
				break;
			case "*":
				System.out.println(number[0] * number[1]);
				break;
			case "x":
				System.out.println(number[0] * number[1]);
				break;
			case "/":
				System.out.println(number[0] / number[1]);
				break;
			case "%":
				System.out.println(number[0] % number[1]);
				break;
			default :
				System.out.println("Error Operator");
				TestArgs.tip();
				break;
			
		}
		
			
	}
	
}


测试结果:





3.实例:运用args可以对输入参数进行排序


//1.改写,实现从命令行上面读取 5个数,2.排序好,3.输出
package me.array;

public class TestArray3{
	
	//冒泡排序,经典方法
	public static void bubbleSort(int[] number){
		
		//排序部分
		
		int temp;
		//假如第一次 i=8,则比较 下标为 0~8(9个数嘿嘿),前面两两依次比较 
		//当i=7,下标为8已经是最大的一个数,在比较0~7(前8个数),依次两两比较
		for(int i = number.length-1;i >= 0; i--){
			
			for(int j =0;j < i;j++){
				
				if(number[j]>number[j+1]){
						
					temp=number[j+1];
					number[j+1]=number[j];
					number[j]=temp;
					
				}
				
			}
			
		
		}
	
		//输出部分
		
		System.out.println("排序后顺序为:");
		for(int i = 0;i < number.length;i++){
			
			System.out.println(number[i]);
			
		}
	}
	
	public static void main(String[] args){
		
		//1.读进来
		//2.转成int型
		//3.排序好
		//4.输出
		
		//判断是否带了5个参数
		if(args.length <= 1){
		
			System.out.println(args.length);
			System.out.println("请在参数处依次输入2个数以上");
			System.exit(-1);
			
		}
		//转成int型
		int[] number=new int[args.length];
		// 转换好放入数组
		for(int i = 0 ;i < args.length;i++){
				
			//转换过程,如果出现异常就catch并输出信息
			try{
				number[i]=Integer.parseInt(args[i]);
			}catch(NumberFormatException ea){
				
				System.out.println("----------输入入数字有误-----------------");
				System.out.println("错误信息如下:");
				ea.printStackTrace();
				System.out.println("------------------------------------------------");
				System.exit(-1);
			}
		
	
		}
		//输出数组中的
		System.out.println("您输入的数字为:");
		for(int i = 0;i < number.length;i++){
			
			System.out.println(number[i]);
			
		}
		//调用冒泡排序方法
		TestArray3.bubbleSort(number);	
		

	}

}

测试结果:





作者:YangGan
出处:http://blog.csdn.net/incyanggan
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名Yanggan(包含链接).

原文地址:https://www.cnblogs.com/riskyer/p/3235313.html