Java中的main方法和可变参数

目录

  • 分析main方法
  • 形参为String[] 那么实参到底是什么?
  • 可变参数
    • 实例

分析main方法

在Java中,main方法是程序的入口点。当你运行一个Java程序时,JVM(Java虚拟机)会寻找一个名为main的方法,并从这里开始执行。以下是对Java中main方法的全面介绍:

  1. 定义:

    • public static void main(String[] args)
  2. 参数:

    • String[] args: 这是一个字符串数组,它包含了从命令行传递给程序的参数。
  3. 返回类型:

    • void: main方法没有返回值。
  4. 访问修饰符:

    • public: 这意味着任何其他类都可以访问它。
    • static: 这意味着你不需要创建类的实例就可以调用它。这也是为什么JVM可以调用它,因为JVM是静态链接的。
  5. 用途:

    • 作为程序的入口点。当你运行一个Java程序时,JVM会查找并执行这个main方法。
    • 用于测试和调试代码。
    • 你可以从main方法中调用其他方法,从而组织你的代码。
  6. 使用示例:

public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");}
}

当你运行这个程序时,它会输出“Hello, World!”到控制台。
7. 注意事项:

* 每个Java应用程序都必须有一个`main`方法。如果你尝试编译一个没有`main`方法的类,你会得到一个错误。
* `main`方法必须是`public`的,这样JVM可以访问它。但是,它也可以是`private`的或`protected`的,但这通常不推荐,因为这可能会限制其他类访问它。
* `main`方法必须是静态的,因为JVM启动程序时还没有创建任何对象实例。因此,不能调用非静态的方法或访问非静态的字段。

形参为String[] 那么实参到底是什么?

public class TestArray10{public static void main(String[] args){//从侧面验证://int[] arr1; //如果对数组只声明,没有后续操作,那么相当于 白定义了。//int[] arr2 = null; //System.out.println(arr2.length);//Exception in thread "main" java.lang.NullPointerException//int[] arr3 = new int[0];//System.out.println(arr3.length);//int[] arr4 = new int[4];//System.out.println(arr4.length);//System.out.println(args.length);//0//从这个结果证明,参数是String[],实参是  new String[0] //默认情况下,虚拟机在调用main方法的时候就是传入了一个长度为0的数组System.out.println(args.length);for(String str:args){System.out.println(str);}}
}
  • 从这个结果证明,参数是String[],实参是 new String[0]
  • 默认情况下,虚拟机在调用main方法的时候就是传入了一个长度为0的数组

可变参数

在Java中,可变参数(Variable Arguments)允许您在方法中定义一个参数列表,该列表可以接受任意数量的参数。使用可变参数可以方便地传递多个参数给方法,而不需要创建数组或使用其他集合类。

要声明一个可变参数,您需要在参数类型后面添加三个点(…)。例如,如果您想定义一个方法,该方法接受任意数量的整数作为参数,您可以这样声明:

public void myMethod(int... numbers) {// 方法体
}

现在,您可以在调用myMethod方法时传递任意数量的整数参数:

myMethod(1);
myMethod(1, 2);
myMethod(1, 2, 3, 4);

在方法体内部,可变参数被视为数组。您可以使用常规的数组操作来访问和操作这些参数。例如,您可以使用for-each循环来遍历参数:

public void printNumbers(int... numbers) {for (int num : numbers) {System.out.println(num);}
}

除了整数之外,您还可以使用其他数据类型(如StringObject等)作为可变参数。需要注意的是,一个方法中只能有一个可变参数,并且它必须是方法签名的最后一个参数。

实例

public class Example {public static void main(String[] args) {printSum(1, 2, 3, 4);printSum(5, 6);printSum(7);}public static void printSum(int... numbers) {int sum = 0;for (int num : numbers) {sum += num;}System.out.println("Sum: " + sum);}
}

在这里插入图片描述

在这个例子中,我们定义了一个名为printSum的方法,它接受一个可变参数numbers,该参数可以接受任意数量的整数。在方法体内部,我们使用for-each循环来遍历参数,并将它们相加得到总和。然后,我们打印出总和。在main方法中,我们调用printSum方法并传递不同数量的参数来演示其用法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/668271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html2canvas 截图功能使用 VUE

html2canvas 是一个 JavaScript 库,可以将网页内容转换为 Canvas 元素,并生成图像或 PDF 文件。使用 html2canvas,你可以在客户端将网页的内容截图,并将其作为图像或 PDF 文件保存或分享。 以下是一些 html2canvas 库的特点和用途…

【NTN 卫星通信】基于NTN的多3GPP连接应用场景

1 概述 同时聚合两条3GPP接入链路,其中一条为非地面网络,可以提供以下5G业务使能,尤其适用于带宽有限或接入链路不可靠的服务不足地区:   -扩展流动宽频   -超可靠的服务通信 如技术报告38.821所述,若干服务场景(例如在偏远地…

缓存组件Caffeine的使用

caffeine是一个高性能的缓存组件&#xff0c;在需要缓存数据&#xff0c;但数据量不算太大&#xff0c;不想引入redis的时候&#xff0c;caffeine就是一个不错的选择。可以把caffeine理解为一个简单的redis。 1、导入依赖 <!-- https://mvnrepository.com/artifact/com.git…

STM32F407 CAN参数配置 500Kbps

本篇CAN参数适用 芯片型号&#xff1a;STM32F407xx系统时钟&#xff1a;168MHz&#xff0c;CAN挂载总线APB1为42M波 特 率 &#xff1a;500Kpbs引脚使用&#xff1a;TX_PB9&#xff0c;RX_PB8&#xff1b;修改为PA11PA12后&#xff0c;参数不变。 步骤一、打勾开启CAN&#xf…

百面嵌入式专栏(面试题)网络编程面试题

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍网络编程面试题 。 1、什么是IO多路复用 I/O多路复用的本质是使用select,poll或者epoll函数,挂起进程,当一个或者多个I/O事件发生之后,将控制返回给用户进程。以服务器编程为例,传统的多进程(多线程…

GaussDB新体验,新零售选品升级注入新思路【华为云GaussDB:与数据库同行的日子】

选品思维&#xff1a;低频VS高频 一个的商超&#xff0c;假设有50个左右的品类&#xff0c;每个品类下有2到10个不等的商品。然而如此庞大的商品&#xff0c;并非所有都是高频消费品。 结合自身日常的消费习惯&#xff0c;对于高频和低频的区分并不难。一般大型家电、高端礼盒…

HCIA--DHCP动态分配ip地址实验

要求&#xff1a; 1. pc1&#xff0c;pc2不能获取 250-254的地址 2. pc3固定获取172.16.1.3/24 pc4固定获取172.16.1.6/24 1. 在AR1上配接口ip、划分网段&#xff0c;创建地址池&#xff0c;开启dhcp: [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 192.168.1.1 2…

FPGA开发

Quartus13.0使用 编译下载&#xff1a; 添加引脚&#xff1a; # ---------------- LED ---------------- # set_location_assignment PIN_K2 -to led_out[11] set_location_assignment PIN_J1 -to led_out[10] set_location_assignment PIN_J2 -to led_out[9] set_locatio…

C++实现鼠标点击和获取鼠标位置(编译环境visual studio 2022)

1环境说明 2获取鼠标位置的接口 void GetMouseCurPoint() {POINT mypoint;for (int i 0; i < 100; i){GetCursorPos(&mypoint);//获取鼠标当前所在位置printf("% ld, % ld \n", mypoint.x, mypoint.y);Sleep(1000);} } 3操作鼠标左键和右键的接口 void Mo…

Redis渗透SSRF的利用

Redis是什么&#xff1f; Redis是NoSQL数据库之一&#xff0c;它使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库。默认端口是&#xff1a;6379 工具安装 下载地址&#xff1a; http://download.redis.io/redis-stable.tar.gz然…

Web APIs 1 DOM操作

Web APIs 1 引入&#xff1a;const优先Web API 基本认知01 作用和分类02 什么是DOM03 DOM树04 DOM对象 获取DOM对象01 根据CSS选择器获取02 其他获取DOM元素方法 操作元素内容01 innerText 属性02 innerHTML 属性 操作元素属性操作元素的常用属性操作元素的样式属性操作表单元素…

【FFmpeg】ffplay 命令行参数 ① ( 设置播放分辨率 | 禁用 音频 / 视频 / 字幕 选项 )

文章目录 一、ffplay 命令行参数 - 设置播放分辨率1、强制设置通用播放分辨率 -x -y 参数2、命令行示例 - 正常播放视频3、命令行示例 - 强制设置播放分辨率4、设置 YUV 播放分辨率 -video_size 和 像素设置 -pixel_format5、全屏播放 -fs 参数 二、ffplay 命令行参数 - 禁用 音…

【高质量精品】2024美赛A题22页word版成品论文+数据+多版本前三问代码及代码讲解+前四问思路模型等(后续会更新)

一定要点击文末的卡片&#xff0c;进入后&#xff0c;即可获取完整资料后续参考论文!! 整体分析:这个题目是一个典型的生态系统建模问题&#xff0c;涉及到动物种群的性比例变化、资源可用性、环境因素、生态系统相互作用等多个方面。这个题目的难点在于如何建立一个合理的数学…

JAVA-File

路径&#xff1a; 相对路径 和 绝对路径&#xff08;带盘符&#xff09;: File对象就表示一个路径&#xff0c;可以是一个文件的路径&#xff0c;也可以示文件夹的路径这个路径 可以存在 或 不存在 File对象的创建方式&#xff1a;三种构造方法 后两种其实就是实现了拼接代码…

docker搭建Mysql集群准备(一)

docker搭建Mysql集群准备 Linux基本知识&#xff1a; 修改机器 IP&#xff0c;变成静态 IP vim /etc/sysconfig/network-scripts/ifcfg-ens33 文件 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic IPADDR192.168.190.67 NETMASK255.255.255.0 GAT…

数据库管理phpmyadmin

子任务1-PHPmyadmin软件的使用 本子任务讲解phpmyadmin的介绍和使用操作。 训练目标 1、掌握PHPmyadmin软件的使用方法。 步骤1 phpMyAdmin 介绍 phpmyadmin是一个用PHP编写的软件工具&#xff0c;可以通过web方式控制和操作MySQL数据库。通过phpMyAdmin可以完全对数据库进行…

创新大赛专访丨善世集团荣膺2023年度卓越雇主品牌:筑巢引凤,贯彻“人才是第一资源”理念,以人才驱动企业增长

日前&#xff0c;2023第三届全国人力资源创新大赛颁奖典礼暨成果展圆满举行。自2023年10月份启动以来&#xff0c;大赛共吸引了457个案例报名参赛&#xff0c;经组委会专家团队评审严格审核&#xff0c;企业赛道共有103个案例获奖、72家企业、13位个人、7个产业园斩获荣誉。 广…

vue全家桶之状态管理Pinia

一、Pinia和Vuex的对比 1.什么是Pinia呢&#xff1f; Pinia&#xff08;发音为/piːnjʌ/&#xff0c;如英语中的“peenya”&#xff09;是最接近pia&#xff08;西班牙语中的菠萝&#xff09;的词&#xff1b; Pinia开始于大概2019年&#xff0c;最初是作为一个实验为Vue重新…

【目标跟踪】相机运动补偿

文章目录 一、前言二、简介三、改进思路3.1、状态定义3.2、相机运动补偿3.3、iou和ReID融合3.4、改进总结 四、相机运动补偿 一、前言 目前 MOT (Multiple Object Tracking) 最有效的方法仍然是 Tracking-by-detection。今天给大家分享一篇论文 BoT-SORT。论文地址 &#xff0…

【数据结构与算法】(3)基础数据结构 之 链表 单向链表、双向链表、循环链表详细示例讲解

目录 2.2 链表1) 概述2) 单向链表3) 单向链表&#xff08;带哨兵&#xff09;4) 双向链表&#xff08;带哨兵&#xff09;5) 环形链表&#xff08;带哨兵&#xff09; 2.2 链表 1) 概述 定义 在计算机科学中&#xff0c;链表是数据元素的线性集合&#xff0c;其每个元素都指…