命令行传参

如果你希望运行一个程序再传递给它消息,这要靠传递命令行参数给main()函数实现

例如 : JavaDoc文档,在命令行中传入参数

D:\Untitled\src\Java_Demo01>javadoc -encoding UTF-8 -charset UTF-8 Demo005

main方法传参

package Java_Demo01;
public class Demo007 {public static void main(String[] args) {//修饰符       void为无返回值  字符串类型参数 args数组     }
}

使用命令行进行传入参数

package Java_Demo01;
public class Demo007 {public static void main(String[] args) {for(int i=0;i<=args.length;i++){//args.length为main方法里面的数组args的长度System.out.println(i+"的值为"+args[i]);}}
}

头文件package中导入的包是Java_Demo01,必须在src下的Java_Demo01执行命令

命令行参数是在命令行执行程序的时候跟在程序的后面

D:\Untitled\src\Java_Demo01>javac Demo007.java    //编译D:\Untitled\src\Java_Demo01>cd ../               //切换到包目录D:\Untitled\src>java Java_Demo01.Demo007//执行Java_Demo01.Demo007
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0at Java_Demo01.Demo007.main(Demo007.java:5)
//提示报错信息出现异常
D:\Untitled\src>java Java_Demo01.Demo007 哈哈哈哈 哈哈哈 哈哈
//使用命令行传参,在名字后面跟上参数
0=哈哈哈哈     //输出
1=哈哈哈          //输出
2=哈哈           //输出
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3at Java_Demo01.Demo007.main(Demo007.java:5)D:\Untitled\src>

可变参数

  • JDK1.5开始,java支持传递同类型的可变参数给一个方法
  • 在方法声明中,在指定参数类型后加一个省略号(…)
  • 一个方法中只能声明一个可变参数,它必须是方法的最后一个参数,任何普通参数必须在它之前声明

为什么要使用可变参数?

 public static void main(String[] args) {}public static int Max(int i,int x){ }public static int Max(int i,int x,int y){ }public static double Max(double i,double x){ }public static int Max(int i,int x,int y,int z){ }}

如上,在使用Max方法有4个不同参数的方法,可以进行方法重载,但是类型和参数值都是固定的,比如:我相传3个参数,则必须定义传3个参数的方法,想传10个参数就要定义传10个参数的方法。可变参数更类似于一个数组

可变参数注意事项:

如下我定义了一个test方法该方法没有返回值且为实例方法。定义三个形式参数为int类型的x、double类型的z、char类型的y,还有int类型的可变参数(可变长度)

在方法里定义可变参数时必须将可变参数放置最后,并且所有的参数必须是一个类型。

int…ints相当于定义了一个int类型的数组,这个数组的名字叫做ints

public void test(int x,double z,char y,int...ints){//可变参数最后定义}

如下图调用test方法时参入参数

public static void main(String[] args) {Demo008 D=new Demo008();D.test(12,12.23,'哈',213213,2321321,434324,467);
}

在调用test方法时需要进行传入参数,第一个参数对应的是int类型的x,第二个参数对应的是double类型的z,第三个参数对应的是char类型的y,第四个可变参数,无论传入多少个参数,只要是int类型的数都为数组ints。

循环输出test方法的值

 public void test(int x,double z,char y,int...ints){System.out.println(x);       //输出x的值System.out.println(z);       //输出z的值System.out.println(y);       //输出y的值//循环输出数组ints的所有值for (int i=0;i<ints.length;i++){//数组的第1个下标是从0开始的,定义变量i的值为0//i的值小于数组的长度。//循环一次i的值就会加1    System.out.println(ints[i]);//输出i的值}}

执行结果:

12
12.23
哈
213213
2321321
434324
467

案例:使用可变参数排序出参数中的最大值

public int Max(int...ints){//定义Max方法,定义形式可变参数int max=0;  //设置最大数的初始值为0for (int i=0;i<ints.length;i++){//循环次数为ints的最大长度if (ints[i]>max){//如果ints[i]的值大于maxmax=ints[i];//则max的值等于ints[i]//直到循环判断出最大的值}}System.out.println("最大的数为:"+max);//输出max的值return max;//返回值 max
}

main方法进行调用传参

    public static void main(String[] args) {Demo009 D=new Demo009();D.Max(13,123,3423,67786678,323432545,443243243);}

执行结果:

最大的数为:443243243

java全栈系列之JavaSE--命令行传递参数与可变参数021相关推荐

  1. java全栈系列之JavaSE--冒泡排序028

    冒泡排序是在一组数组中将相邻的两个元素进行比较,可以按由大到小或者由小到大的循序排列, 冒泡排序示意图: 每循环一次相邻的两个数进行大小比较,若由小到大的循序则大的数据在小的数据右侧 冒泡排序流程图 ...

  2. Java全栈系列笔记

    Java全栈系列笔记 全部文档.项目.源码: github:https://github.com/name365/Blog-Java 码云:https://gitee.com/yang365/Blog ...

  3. java全栈系列之JavaSE-面向对象(方法的定义与调用)030

    java面向对象编程 面向对象&面向过程 前言: 之前的代码大多数都是属于面向过程的,在程序中有main()方法也叫主方法,程序会由上至下执行main()里面的内容.程序里的方法:例如编写一个 ...

  4. Day13-Java方法详解,方法的定义、重载,命令行传参,可变参数与递归

    Java方法详解 什么是方法? Java的方法是语句的集合,他们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法再程序中被创建,在其他地方被引用 [方法原子性]一个方 ...

  5. java全栈系列之JavaSE-面向对象(方法重写)037

    子类在调用父类的私有方法中不能直接调用,但是可以通过get方法进行调用,修改属性的值可以通过set方法进行修改.而子类想要修改父类中的方法可以使用方法重写进行操作. 方法重写与之前的方法重载不同 回顾 ...

  6. java全栈系列之JavaSE--数组的三种初始化方法及内存分析024

    java内存分析 堆中存放new出来的对象和数组,存放具体的值的变量存放在栈里面 在定义和创建数组的时候内存发生了什么? 当用户定义了一个数组,例如:int [ ] Array;只是定义了一个数组没有 ...

  7. java全栈系列之JavaSE-稀释数组029

    稀疏数组 当一个数组中的大部分元素为同一值的数组时,可以使用稀疏数组来保存该数组 稀疏数组的处理方式: 记录数组中一个有几行几列,有多少个不同的值,把具有不同值的元素和行列以及值记录在一个小规模的数组 ...

  8. java全栈系列之JavaSE--JDK的安装以及环境搭建001

    java开发环境搭建 JDK下载与安装 配置环境变量 JDK目录介绍 卸载JDK 1.删除java安装目录 2.删除JAVA_HOME,删除path下关于Java的目录,以及环境变量 3.dos窗口查 ...

  9. java全栈系列之JavaSE-面向对象(继承详解)035

    类的继承 java三大特性之一的继承,指的是子类继承父类的属性和方法,java类中只有单继承没有多继承,比如说:一个父亲(父类)可以有多个儿子(子类),但是一个儿子(子类)只能有一个父亲(父类) 在类 ...

最新文章

  1. 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第5节 final关键字_5_final关键字用于修饰成员变量...
  2. 微博并发这么牛逼!看他架构如何设计的?
  3. Java编译型语言还是解释型语言
  4. 2019春季暑期实习生正式批招聘笔试【腾讯】(回忆版)第二题
  5. 【C# interface接口】对接口的理解、接口的使用方式(最通俗的解释)
  6. servlet获取相对路径 绝对路径
  7. 使用php简单网页抓取和内容分析,使用PHP简单网页抓取和内容分析_php
  8. go 自定义error怎么判断是否相等_「GCTT 出品」Go 系列教程——30. 错误处理
  9. 磁盘精灵 4.5 版本
  10. 大数据基础课02 从萌芽到爆发,大数据经历了哪些发展?
  11. html 在线播放器,实现简易html视频播放器的方法
  12. python计算增长率函数_python – 基于增长率优化值的迭代计算
  13. Gallery3d 学习笔记(6)
  14. h5应用数据加密_在线视频加密用H5加密方案有哪些优点?
  15. 软件工程之软件开发和软件测试模型
  16. David P.Williams论文系列 SAS图像分辨率与目标检测性能的关系
  17. 记录注册邓白氏编码过程
  18. PHP学习-数据类型
  19. SameSite cookie 理解与设置
  20. Eric靶机渗透测试

热门文章

  1. 怎么从浩如烟海的书籍论文中找到有用信息?写论文、搞研究必看!
  2. msf ms17-010利用笔记
  3. 华为OJ平台题目-砝码重量
  4. 一念起,天涯咫尺;一念灭,咫尺天涯。—第八天
  5. python3继承supper_python3中supper和继承顺序
  6. 攻防世界Web题 - unseping 总结
  7. 通过Gearman实现MySQL到Redis的数据复制
  8. Hystrix熔断器的理解
  9. Generative Adversarial Text to Image Synthesis 论文翻译精校版
  10. 迎风破局·守正创新,2021未来商业生态链接大会暨第六届金陀螺奖颁奖典礼成功举办!...