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("\n温馨提示:\n这个一个带参数的计算程序参"); System.out.println("格式为 java me.args.Args n1 op n2"); System.out.println("n1 --第一个数\nOP --加减乘除任意操作符 \nn2--第二个数"); System.out.println("\n1.输入数据是请注意n1 OP n2之间的空格\n2.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(包含链接).