当前位置: 首页 > news >正文

Android修行手册 - 可变参数中星号什么作用(冷知识)

  • 点击跳转=>Unity3D特效百例
  • 点击跳转=>案例项目实战源码
  • 点击跳转=>游戏脚本-辅助自动化
  • 点击跳转=>Android控件全解手册
  • 点击跳转=>Scratch编程案例
  • 点击跳转=>软考全系列

👉关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,交流让学习不再孤单

在这里插入图片描述

👉实践过程

😜问题

这两天,我想封装一个方法:

private fun strFormatTwo(format: String, vararg args: Any): String {return String.format(format, args)
}

传递两个参数,一个是转换格式,一个是可变参数。
调用:strFormatTwo(“%04x”,20,30)
一运行就会报错。
java.util.IllegalFormatConversionException: x != [Ljava.lang.Object;
这就很莫名其妙,但是为什么系统的 String.format 就可以这样操作呢?
我点击去看源码:
在这里插入图片描述
发现它有个星号(*),开始查阅资料。

😜解决

查了一下。星号的作用是,在数组对象前加*号可以将数组展开,以方便传值。
展开?这有什么可展开的?难道传递的少了?
咱们写个方法测试一些:

private fun strFormat(format: String, vararg args: Any): String {Log.e("TAG", "strFormat: "+args.size)return String.format(format, args)
}private fun strFormatTwo(format: String, vararg args: Any): String {Log.e("TAG", "strFormatTwo: "+args.size)return strFormat(format, args)
//    return String.format(format, args)
}//调用
strFormatTwo("%04x",20,30)

在这里插入图片描述
上面方法因为系统的 String.format 里面没法打日志,我们只好再写一个方法,这样调用一下。
strFormatTwo 调用系统 String.format 和 strFormatTwo 调用咱们写的 strFormat 方法形式是一样。

我们先调用 strFormatTwo 看到日志输出的是 2 个长度单位,在 strFormat 中输出却成为了一个长度。

private fun strFormat(format: String, vararg args: Any): String {return String.format(format, *args)  //带星号正确写法
}

这是因为 Java 中的 vararg 参数在被传递给 String.format() 方法时,会自动被转换为一个数组。这表示我们将 args 数组作为参数传递给 String.format() 方法。这样做是为了确保 args 数组能够以参数的形式传递给 String.format() 方法,以便正确地进行格式化字符串。 而在出现问题的函数中,我们使用了 “String.format(format, args)” 的写法,这表示我们将 args 作为一个单个的参数传递给 String.format() 方法。这样做会导致 args 数组无法正确传递给 String.format() 方法,从而导致错误。 因此,为了确保 args 数组能够以参数的形式传递给 String.format() 方法,我们应该使用第一个函数的实现方式,即使用 “String.format(format, *args)” 的写法。

同理,如果你自己的其他函数参数也是可变数组的,而传递的也是数组,使用的时候就需要添加*

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

相关文章:

Android修行手册 - 可变参数中星号什么作用(冷知识)

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…...

Python与ArcGIS系列(三)视图缩放

目录 0 简述1 在所有图层中缩放至所选要素2 在单独图层中缩放至所选要素3 改变地图范围0 简述 本篇介绍如何利用arcpy实现缩放视图到所选要素以及改变地图范围功能。 对于以及创建的选择集数据,通常需要进行缩放以更好地显示所选要素,要素缩放可分为两种:第一种是在所有图层…...

[ASP]数据库编辑与管理V1.0

本地测试:需要运行 ASP专业调试工具(自己搜索下载) 默认登陆口令:admin 修改口令:打开index.asp找到第3行把admin"admin"改成其他,如admin"abc123" 程序功能齐全,代码精简…...

MyBatis Plus整合Redis实现分布式二级缓存

MyBatis缓存描述 MyBatis提供了两种级别的缓存, 分别时一级缓存和二级缓存。一级缓存是SqlSession级别的缓存,只在SqlSession对象内部存储缓存数据,如果SqlSession对象不一样就无法命中缓存,二级缓存是mapper级别的缓存&#xff…...

如何帮助 3D CAD 设计师实现远程办公

当 3D CAD 设计师需要远程办公时,他们可能需要更强的远程软件,以满足他们的专业需求。比如高清画质,以及支持设备重定向、多显示器支持等功能。3D CAD 设计师如何实现远程办公?接下来我们跟随 Platinum Tank Group 的故事来了解一…...

如何在 Idea 中修改文件的字符集(如:UTF-8)

以 IntelliJ IDEA 2023.2 (Ultimate Edition) 为例,如下: 点击左上角【IntelliJ IDEA】->【Settings…】,如下图: 从弹出页面的左侧导航中找到【Editor】->【File Encodings】,并将 Global Encoding、Project E…...

【C++】单例模式【两种实现方式】

目录 一、了解单例模式前的基础题 1、设计一个类,不能被拷贝 2、设计一个类,只能在堆上创建对象 3、设计一个类,只能在栈上创建对象 4、设计一个类,不能被继承 二、单例模式 1、单例模式的概念 2、单例模式的两种实现方式 …...

php的api接口token简单实现

<?php // 生成 Token function generateToken() {$token bin2hex(random_bytes(16)); // 使用随机字节生成 tokenreturn $token; } // 存储 Token&#xff08;这里使用一个全局变量来模拟存储&#xff09; $tokens []; // 验证 Token function validateToken($token) {gl…...

CCNA课程实验-13-PPPoE

目录 实验条件网络拓朴需求 配置实现基础配置模拟运营商ISP配置ISP的DNS配置出口路由器OR基础配置PC1基础配置 出口路由器OR配置PPPOE拨号创建NAT(PAT端口复用) PC1测试结果 实验条件 网络拓朴 需求 OR使用PPPoE的方式向ISP发送拨号的用户名和密码&#xff0c;用户名&#xf…...

cocosCreator 之 Bundle使用

版本&#xff1a; v3.4.0 语言&#xff1a; TypeScript 环境&#xff1a; Mac Bundle简介 全名 Asset Bundle(简称AB包)&#xff0c;自cocosCreator v2.4开始支持&#xff0c;用于作为资源模块化工具。 允许开发者根据项目需求将贴图、脚本、场景等资源划分在 Bundle 中&am…...

分类网络搭建示例

搭建CNN网络 本章我们来学习一下如何搭建网络&#xff0c;初始化方法&#xff0c;模型的保存&#xff0c;预训练模型的加载方法。本专栏需要搭建的是对分类性能的测试&#xff0c;所以这里我们只以VGG为例。 请注意&#xff0c;这里定义的只是一个简陋的版本&#xff0c;后续一…...

为 Ubuntu 虚拟机构建 SSH 服务器

以校园网环境和VMware为例&#xff0c;关键步骤如下&#xff1a; 安装 SSH 服务&#xff1a; 打开 Ubuntu 虚拟机。打开终端。输入命令 sudo apt-get update 更新软件包列表。输入命令 sudo apt-get install openssh-server 安装 SSH 服务。 配置 SSH 服务&#xff1a; 编辑配…...

SpringBoot--中间件技术-2:整合redis,redis实战小案例,springboot cache,cache简化redis的实现,含代码

SpringBoot整合Redis 实现步骤 导pom文件坐标 <!--redis依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>yaml主配置文件&#xff0c;配置…...

linux rsyslog配置文件详解

1.rsyslog配置文件简介 linux rsyslog配置文件/etc/rsyslog.conf分为三部分:MODULES、GLOBAL DIRECTIVES、RULES ryslog模块说明 模块说明MODULES指定接收日志的协议和端口。若要配置日志服务器,则需要将相应的配置项注释去掉。GLOBAL DIRECTIVES主要用来配置日志模版。指定…...

wordpress是什么?快速搭网站经验分享

​作者主页 &#x1f4da;lovewold少个r博客主页 ⚠️本文重点&#xff1a;c入门第一个程序和基本知识讲解 &#x1f449;【C-C入门系列专栏】&#xff1a;博客文章专栏传送门 &#x1f604;每日一言&#xff1a;宁静是一片强大而治愈的神奇海洋&#xff01; 目录 前言 wordp…...

排序 算法(第4版)

本博客参考算法&#xff08;第4版&#xff09;&#xff1a;算法&#xff08;第4版&#xff09; - LeetBook - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台 本文用Java实现相关算法。 我们关注的主要对象是重新排列数组元素的算法&#xff0c;其中每个元素…...

asp.net 在线音乐网站系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 在线音乐网站系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 asp.net 在线音乐网站系统1 应用…...

ElastaticSearch -- es之Filters aggregation 先过滤再聚合

使用场景 使用es时&#xff0c;有时我们需要先过滤后再聚合&#xff0c;但如果直接在query的filter中过滤&#xff0c;不止会影响到一个聚合&#xff0c;还会影响到其他的聚合结果。 比如&#xff0c;我们想要统计深圳市某个品牌的总销售额&#xff0c;以及该品牌的女款衣服的…...

如何把一个接口设计好?

如何把一个接口设计好&#xff1f; 如何设计一个接口&#xff1f;是在我们日常开发或者面试时经常问及的一个话题。很多人觉得这不就是CRUD&#xff0c;能实现不就行了。单纯实现来说&#xff0c;并非难事&#xff0c;但要做到易用、易扩展、易维护并不是一件简单的事。这里并…...

mini-vue 的设计

mini-vue 的设计 mini-vue 使用流程与结果预览&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name&qu…...

JAVA:SpringBoot 实现图片防盗链的技术指南

1、简述 防盗链(Hotlink Protection)是一种保护网站资源不被其他网站直接引用的技术,特别是在图片、视频等静态资源方面。防盗链的核心思想是检查请求的来源(Referer),只允许来自指定域名的请求访问资源。 策略 原理 防护强度 Referer 检查 验证请求来源域名 低(Refere…...

如何通过Jar包快速集成国产工作流引擎的设计器

1. 为什么选择国产工作流引擎的设计器 在开发OA系统、ERP、CRM等企业级应用时&#xff0c;工作流引擎几乎是必不可少的核心组件。传统的开源工作流引擎如Activiti、Flowable虽然功能强大&#xff0c;但集成设计器往往需要复杂的配置和二次开发&#xff0c;这对中小型团队来说成…...

虚拟线程调度开销被严重低估?JVM源码级剖析vthread park/unpark的纳秒级损耗与4种对冲方案

第一章&#xff1a;虚拟线程调度开销被严重低估&#xff1f;JVM源码级剖析vthread park/unpark的纳秒级损耗与4种对冲方案虚拟线程&#xff08;Virtual Thread&#xff09;虽以轻量著称&#xff0c;但其 park/unpark 操作在 JVM 内部并非零成本——HotSpot 17 中&#xff0c;每…...

别再手动传文档了!Unity+Coze知识库自动上传与进度监控全攻略

UnityCoze知识库自动化上传与进度监控实战指南 在游戏开发中&#xff0c;剧情文本、设定文档等资源的管理往往需要频繁更新和版本控制。传统的手动上传方式不仅效率低下&#xff0c;还容易出错。本文将带你构建一个完整的自动化解决方案&#xff0c;实现从Unity到Coze知识库的…...

使用GitHub管理Pixel Dream Workshop的提示词工程与风格模板

使用GitHub管理Pixel Dream Workshop的提示词工程与风格模板 1. 为什么需要版本管理AI绘画项目 如果你经常使用AI绘画工具&#xff0c;可能会遇到这样的困扰&#xff1a;上周调出一个特别棒的赛博朋克风格参数组合&#xff0c;这周想再用却找不到了&#xff1b;团队里有人发现…...

Qwen3-14B系统优化指南:解决C盘空间清理与系统性能问题

Qwen3-14B系统优化指南&#xff1a;解决C盘空间清理与系统性能问题 1. 引言&#xff1a;Windows用户的共同烦恼 "您的C盘空间不足"——这个弹窗可能是Windows用户最不愿看到的提示之一。随着使用时间增长&#xff0c;系统盘空间被各种临时文件、日志和冗余程序蚕食…...

比迪丽LoRA LoRA融合技巧:与RealisticVision/AnimePastel等底模协同出图效果

比迪丽LoRA融合技巧&#xff1a;与RealisticVision/AnimePastel等底模协同出图效果 1. 引言&#xff1a;当比迪丽遇见不同画风 如果你用过比迪丽&#xff08;Videl&#xff09;这个LoRA模型&#xff0c;可能会发现一个有趣的现象&#xff1a;有时候生成的比迪丽特别“动漫风”…...

OpenClaw日志分析:千问3.5-35B-A3B-FP8任务执行效率优化

OpenClaw日志分析&#xff1a;千问3.5-35B-A3B-FP8任务执行效率优化 1. 为什么需要关注OpenClaw的任务执行效率 上周我在本地部署了OpenClaw&#xff0c;并接入千问3.5-35B-A3B-FP8模型进行自动化任务测试。最初几天运行还算顺利&#xff0c;但随着任务复杂度增加&#xff0c…...

HappyHorse-1.0空降榜首碾压Seedance 2.0:60分断层领先,开源可商用,音视频联合生成新王诞生!

文章目录引言第1章&#xff1a;榜单屠榜&#xff0c;数据说话1.1 Artificial Analysis 榜单成绩1.2 为什么60分的差距如此恐怖&#xff1f;1.3 唯一短板&#xff1a;音频赛道第2章&#xff1a;技术亮点详解2.1 核心参数&#xff1a;150亿参数的庞然大物2.2 音视频联合生成&…...

Sokol动画系统:如何在跨平台C/C++项目中实现流畅的2D与3D动画效果

Sokol动画系统&#xff1a;如何在跨平台C/C项目中实现流畅的2D与3D动画效果 【免费下载链接】sokol minimal cross-platform standalone C headers 项目地址: https://gitcode.com/gh_mirrors/so/sokol Sokol是一个极简的跨平台独立C头文件库&#xff0c;专门为游戏和图…...