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(包含链接).
Java菜鸟学习笔记--数组篇(二):数组实例&args实例的更多相关文章
- Java菜鸟学习笔记--面向对象篇(十五):Wrapper Class包装类
什么是包装类? 在Java里一切都是对象,除了Java中的基本数据类型(byte,short,int,long,char,float,double,boolean)不是面向对象的,这在实际使用时存在很 ...
- Java菜鸟学习笔记--面向对象篇(十六):Object类方法
Object类 什么是Object类? Object类是所有Java类的祖先,每个类都使用 Object 作为超类,所有对象(包括数组)都实现这个类的方法Object类是类层次结构的根,Object类 ...
- Java菜鸟学习笔记()--面向对象篇(七):Wrapper Class包装类
什么是包装类? 在Java里一切都是对象,除了Java中的基本数据类型(byte,short,int,long,char,float,double,boolean)不是面向对象的,这在实际使用时存在很 ...
- Java菜鸟学习笔记--面向对象篇(十八):对象转型&多态
Polymorphism[多态] 简述: 面向对象多态性指的是:发送消息给某个对象,让该对象自行决定响应何种行为. 通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用 多态的三个前提条件: 多 ...
- Java菜鸟学习笔记--Exception篇(一):异常简介
什么是异常(Exception)? 简述: 在运行过程中,应用程序可能遭遇各种严重程度不同的问题.异常提供了一种在不弄乱程序的情况下检查错误的巧妙方式.它也提供了一种直接报告错误的机制. 不同类型异常 ...
- Java WebService学习笔记 - Axis进阶(二)
上一篇 Java WebService学习笔记 - Axis(一) 前一篇博文中简单介绍了Axis的使用方法,这篇将介绍一些Axis的一些高级特性 Axis中Handler的使用 Handler ...
- Java菜鸟学习笔记--数组篇(三):二维数组
定义 //1.二维数组的定义 //2.二维数组的内存空间 //3.不规则数组 package me.array; public class Array2Demo{ public static void ...
- java学习笔记-JavaWeb篇二
JavaWEB篇二 45 HttpSession概述46 HttpSession的生命周期 47 HttpSession常用方法示例48 HttpSessionURL重写 49 HttpSession ...
- Java菜鸟学习笔记(23)--继承篇(二):继承与组合
组合是什么 1.继承和组合都是一种随思想渗透而下的编码方式,其根本目的都是为了复用类,减少重复代码 2.要实现一个类的复用,可以分为组合语法和继承语法 3.组合就是通过将一个对象置于一个新类中,将其作 ...
随机推荐
- CSS Positioning(定位)
Positioning(定位) CSS定位属性允许你为一个元素定位.它也可以将一个元素放在另一个元素后面,并指定一个元素的内容太大时,应该发生什么. 元素可以使用的顶部,底部,左侧和右侧属性定位.然而 ...
- CSS3弹性盒模型flex box快速入门 2016.03.16
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- [转载] CMake Official Tutorial——教程还是官方的好
CMake官方教程传送门:https://cmake.org/cmake-tutorial/ 以下的内容跟官方教程基本一致,少数地方根据自己的测试有所改动: A Basic Starting Poin ...
- JQ插件ajaxFileUpload、php实现图片,数据同时上传
代码结构如下: 1.HTML代码,没必要解释了. <!DOCTYPE html> <html> <head> <meta charset="UTF- ...
- fedora安装sublime text教程
下载 http://pan.baidu.com/s/1eRkEegM 解压 终端中切换到下载文件的目录下,执行以下命令: sudo tar -jxvf sublime_text_3_build_308 ...
- MyISAM 和 InnoDB 讲解[转]
MyISAM 和 InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处 ...
- TicTacToe井字棋 by reinforcement learning
对于初学强化学习的同学,数学公式也看不太懂, 一定希望有一些简单明了的代码实现加强对入门强化学习的直觉认识,这是一篇初级入门代码, 希望能对你们开始学习强化学习起到基本的作用. 井字棋具体玩法参考百度 ...
- Meditation Guide
Meditation “Stop!!!” don’t we just scream[vi. 尖叫:呼啸:发出尖锐刺耳的声音:令人触目惊心 ] this in our minds when the da ...
- FTP原理和cent OS vsFTPd架设
1.ftp为明码传输 2.客户端和服务端采用两条链路来分别进行命令和数据的传输.数据传输的模式分为主动链接和被动链接. 3.客户端在需要数据的时候,会告知服务器端采取主动或者被动的方式来链接. 4.如 ...
- DBA - 我的学习
DBA - 我的学习 1. df -k 检查oracle 分区硬盘使用情况 2. 检查alert_<SID名称>.log, alert日志文件,检查是否新增错误日志 3. 检查数据文件的状 ...