大家都知道,Java语言运行程序的入口方法叫做main,这个方法有一个参数,这就表示说,我们要运行主方法,就必须给main方法传递一个参数。但是,大家似乎对这个参数向来都是视而不见,从来都没给主方法传递过参数。main作为Java程序运行的第一个方法,我们应该从哪里给这个方法传递参数呢?今天我们就用一篇短文来聊聊这个话题。

如何给main方法传递参数

大家请看下面这段代码

这是一段谁都能看懂的代码。通过代码我们可以看到,main方法的参数是一个字符串数组,既然是一个字符串数组,就会包含多个字符串。那么,我们通过怎样的方法能把多个字符串数组传递给main方法呢?很简单,我们在运行Java程序的时候,在java命令后面写上main方法所在的类名,在类名后面加空格,空格后面再写上多个字符串,每个字符串之间也以空格隔开,就能把这些字符串传递给main方法。当然,这些字符串会被组织成一个字符串数组传递到main方法当中,见下图

我们可以看到,在类名A的后面是一个空格,空格后面有两个字符串,分别是“Hello”和“World”

这两个字符串之间也用空格隔开,它们就是程序员传递给main方法的参数,这两个字符串会被虚拟机组织成一个字符串数组。main方法中打印参数数组中下标为0那个的元素,所以输出结果就是“Hello”

参数字符串中包含空格如何处理

我们给main方法传递参数的时候,各个字符串之间是以空格隔开的,如果某个字符串中本身就包含空格,那么原本是一个整体的字符串就会被分割成两个,此事如何是好?在这种情况下,我们为了让包含空格的字符串被虚拟机当作是一个整体,可以给字符串的两端加上引号,见下图

这一次我们给main方法传递了两个字符串作为参数,其中第一个参数是“Hello World”,这个字符串中有一个空格,但是我们在字符串两端加了引号,虚拟机就会把引号当中的空格看作是字符串中的一个普通字符,而不是把它当作分隔字符串的分隔符,所以运行结果就是“Hello World”。

参数字符串中包含引号如何处理

为了让包含空格的字符串被虚拟机当作整体看待,我们把这个字符串的两端加上了空格,但是这又会引发一个问题,那就是:如果参数字符串中又包含引号该怎么办呢?此时我们就需要用转义字符的形式书写参数字符串中的引号,见下图

把字符串中的引号以转义字符的形式书写,就能正确的把包含引号的字符串当作参数传递给main方法。

未传递参数的情况下打印参数数组元素情况如何

如果我们没有给main方法传递参数,就直接打印参数数组args当中的元素,会怎么样?很多人认为此时程序运行会抛出空指针异常。其实不然,虚拟机会创建一个长度为0的字符串数组传递到main方法中,我们访问这个长度为0的数组,抛出的是数组越界异常,而非空指针异常。不要忘记,Java语言的数组长度是允许为0的哦!

如想系统学习Java编程,欢迎观看我在本站的视频课程。

java main 参数传递参数_Java千问:Java语言如何给main方法传递参数?相关推荐

  1. tornado框架的get方法传递参数

    tornado框架的get方法传递参数,代码: # encoding: utf-8""" @version: ?? @author: andu99 @contact: a ...

  2. java自动生成合同_Java 7和Java 8之间的细微自动关闭合同更改

    java自动生成合同 Java 7的try-with-resources语句和与该语句一起使用的AutoCloseable类型的一个不错的功能是,静态代码分析工具可以检测到资源泄漏. 例如,Eclip ...

  3. java:8最小镜像_Java:本地最小语言

    java:8最小镜像 在1996年至2002年之间,我用Java编写了成千上万行代码.我用Java 1.0到Java 1.4编写了Web框架,电子表格以及更多内容. 与90年代中期(预模板)的C ++ ...

  4. java反射 获取属性_Java反射学习-3 - 反射获取属性,方法,构造器

    1 packagecn.tx.reflect;2 3 importjava.lang.reflect.Constructor;4 importjava.lang.reflect.Field;5 imp ...

  5. java 十六进制转十进制_JAVA知识-分析JAVA中的重点和难点

    Java中有很多内容在开发项目的过程中并不常用,但是却是很重要的部分,为了避免忘记,今天重新温习了一遍Java中的重点和难点,借此机会记录一下方便以后查找. 本文主要分为以下几个部分: 1.进制的相互 ...

  6. java fileinputstream.read(byte[])_Java分享笔记:FileInputStream流的 read()方法 和 read(byte[] b)方法...

    1 /*------------------------ 2 FileInputStream: 3 ....//输入流,字节流 4 ....//从硬盘中存在的一个文件中读取内容,读取到程序中 5 .. ...

  7. java的技术定义_java基础知识——Java的定义,特点和技术平台

    (作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...

  8. java se运行环境_Java运行环境Java SE Runtime Environment (JRE) 下载

    Java SE Runtime Environment又称JRE,是Java的核心运行环境,如果需要运行JAVA程序,JRE是必不可少的环境的集合.Java平台使您可以在台式机和服务器以及当今苛刻的嵌 ...

  9. 接收list参数_what?你竟然不知道C#中的方法及参数的类型解析!那还不快来瞅瞅...

    更多精彩,请点击上方蓝字关注我们! 前言 哈哈,今天来给大家讲解一下关于C#中方法及参数的几种类型解析,没有看过的朋友,可以仔细的来瞧瞧了! 那么,还是话不多说,直接给大家先上今天的干货了. 一.方法 ...

最新文章

  1. POJ2955Brackets[区间DP]
  2. python手机端下载-Python3,x:如何进行手机APP的数据爬取
  3. 计算几何常用算法的理论基础【转】
  4. Oracle预言机项目发展概览
  5. 【poj3070】Fibonacci
  6. armbian docker Chrome_一起学docker06-docker网络
  7. 2019.8.2闭包,作用域
  8. 46 -算法 - Leetcode -169 - 多数元素 - map insert 迭代器
  9. 信号之sleep函数
  10. matlab阶乘函数、排列组合函数、数组求和、未定义变量带入计算,简化结果值
  11. python---字符串的拼接、去重、反转、字母花样排序、单词出现判断、统计文件特定单词频率lambda、硬盘容量、列表转字符串
  12. 基于matlab的mimo仿真,基于MATLAB的MIMO系统仿真与分析|Matlab代做
  13. 谁来PK“baidu局域网”
  14. Unity GPS定位之逆地理编码(获取经纬度并转换成地理位置)
  15. 安卓app,iOS二维码下载链接FIR
  16. java输入日期判断这天是周几
  17. 浏览器审查元素查找网页元素对应代码
  18. t-s模糊神经网络matlab,基于T-S模型的模糊神经网络,Fuzzy Neural Network based on T-S mode,音标,读音,翻译,英文例句,英语词典...
  19. 目标检测论文解读复现之十八:基于注意力机制的光线昏暗条件下口罩佩戴检测
  20. 云计算的定义、云计算系统的架构组成、云计算的应用和云计算的问题

热门文章

  1. 常用的PHP正则表达式汇总
  2. 转:使用curl来调试你的应用
  3. SQL重复记录查询(转载)
  4. D触发器Verilog描述
  5. 软工三(5.12上课)
  6. docker-maven-plugin的pom配置
  7. vshpere esxi6.7安装
  8. golang基本数据类型转换
  9. Java中的同步集合与并发集合有什么区别?
  10. 解决IDEA项目中文件夹层级显示(小数点形式与文件夹层级形式)