首页 > 编程语言 >《Java核心技术 卷I》参数数量可变的方法

《Java核心技术 卷I》参数数量可变的方法

时间:2024-11-03 09:20:21浏览次数:5  
标签:Java 核心技术 max Object System 参数 可变 new out

调用打印方法。。。

    public PrintStream printf(String format, Object ... args) {
        return format(format, args);
    }

这里的省略号..是Java代码的一部分,表明这个方法可以接收任意数量的对象(除fmt参数之外)。

实际上,printf方法接收两个参数,一个是格式字符串,另一个是Object[]数组,其中保存着所有的参数(如果是基础类型,会自动装箱称为对象),然后扫描fmt字符串,并将第i个格式说明符与args[i]的值匹配起来,换句话说Object...参数类型和Object[]完全一样。

用户可以自己定义可变参数的方法,并将参数指定为任意类型,甚至是基本类型。下面是一个简单的示例:其功能为计算若干个数值的最大值。

package corejava;

public class MaxDoubleTest {

    public static void main(String[] args) {
        
        System.out.println(max(3.232132,6.232344,5.823485));
        System.out.println(max());
    }
    
    public static double max(double... values) {
        double largest = Double.MIN_VALUE;
        for (double d : values) {
            if(d > largest) {
                largest = d;
            }
        }
        return largest;
    }

}
//结果
//6.232344
//4.9E-324

编译器将new double[]{3.232132,6.232344,5.823485}传递给max方法

注释:允许将一个数组传给可变参数方法的最后一个参数。

    System.out.printf("%d %s",new Object[] {new Integer(1), "widgets"});
 //1 widgets

因此,可以将已经存在且最后一个参数是数组的方法重新定义为可变参数的方法,而不会破坏任何已经存在的代码。例如,MessageFormat.format在JavaSE5就采用了这种方式,甚至可以将main方法声明为如下形式:

public static void main(String... args) {
        
        System.out.println(max(3.232132,6.232344,5.823485));
        System.out.println(max());
        System.out.printf("%d %s",new Object[] {new Integer(1), "widgets"});
    }

标签:Java,核心技术,max,Object,System,参数,可变,new,out
From: https://blog.csdn.net/qq_36324341/article/details/143461067

相关文章

  • javaweb基于SSM开发学生宿舍电费管理系统源码(增删改查) 课程设计 大作业
    ......
  • 基于SpringBoot乡村书屋小程序设计与实现--31881(免费领源码)可做计算机毕业设计JAVA、P
    摘要随着信息技术的快速发展和互联网的广泛普及,数字化服务的需求不断增长,乡村书屋作为传统的文化服务机构也需要适应这一变革。本研究将使用Java开发技术,通过springboot作为框架,结合微信小程序,和MySQL作为数据存储的技术,开发一套功能齐备可移动的乡村书屋小程序,旨在提升乡......
  • (免费源码)计算机毕业设计必看必学 原创定制程序 java、PHP、python、小程序、文案全套
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,山西能源学院教室管理系统当然也不能排除在外。山西能源学院教室管理系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用 SSM技术构建的一个管理系......
  • 【java开发】如何设计一个优秀的Java接口?
    原创trymotrymoLiu引言:为什么需要设计接口?在软件工程中,接口不仅仅是代码的简单契约,更是构建可扩展、灵活系统的基础。一个设计精良的接口能够:降低系统耦合度提高代码的可测试性实现更好的重用更好的扩展一、接口的演进历程1.1早期接口:简单契约publicinterface......
  • Java基础05
    目录一、引入插入方法currentTimeMillis()的介绍二、详细介绍1.String2.StringBuilder①StringBuilder与String的区别②StringBuilder的常用方法3.StringBuffer拓展(缓冲区)三、对比1.⭐String,StringBuffer,StringBuilder三种有什么区别(概括):⭐详细介绍版本:①不可变......
  • java+vue计算机毕设大学英语四六级报名系统的设计与实现【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球化进程的加速和教育国际化的深入,英语作为国际交流的主要语言,其重要性日益凸显。在我国,大学英语四六级考试作为衡量大学生英语能力的重要标准,......
  • java+vue计算机毕设动漫衍生品二手交易app【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着动漫文化的兴起与普及,动漫衍生品市场日益繁荣,吸引了大量粉丝与收藏者的关注。这些衍生品不仅丰富了动漫爱好者的精神世界,也成为了他们表达个性与......
  • NLP segment-05-文本相似度计算 similarity java 开源实现
    拓展阅读分词系列专题jieba-fenci01结巴分词原理讲解segmentjieba-fenci02结巴分词原理讲解之数据归一化segmentjieba-fenci03结巴分词与繁简体转换segmentjieba-fenci04结巴分词之词性标注实现思路speechTaggingsegmentjieba-fenci05结巴分词之简单聊一聊......
  • 基于Java+SpringBoot+Mysql实现的快递柜寄取快递系统功能实现六
    一、前言介绍:1.1项目摘要随着电子商务的迅猛发展和城市化进程的加快,快递业务量呈现出爆炸式增长的趋势。传统的快递寄取方式,如人工配送和定点领取,已经无法满足现代社会的快速、便捷需求。这些问题不仅影响了快递服务的效率,也增加了快递员和消费者的不便。在这样的背景下,快递柜......
  • java+vue计算机毕设房屋租赁系统【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速,人口流动日益频繁,房屋租赁市场迎来了前所未有的发展机遇。传统的房屋租赁方式,如通过中介或张贴广告,不仅效率低下,而且信息透明度......