java string... 参数_Java String.Format() 方法及参数说明

JDK1.5中,String类新增了一个很有用的静态方法String.format():

format(Locale l, String format, Object... args) 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。

format(String format, Object... args) 使用指定的格式字符串和参数返回一个格式化字符串。

举几个这个方法实用的例子(注释是输出结果):

CODE:

long now = System.currentTimeMillis();

String s = String.format("%tR", now);   // "15:12"

CODE:

// Current month/day/year

Date d = new Date(now);

s = String.format("%tD", d);                // "07/13/04"

CODE:

s = String.format("%,d", Integer.MAX_VALUE); // "2,147,483,647"

CODE:

s = String.format("%05d", 123);              // "00123"是不是很方便,让人动心啊?哈哈,还有更多的效果!

其实format函数有些类似c语言中printf函数,一些格式字符串与 C

类似,但已进行了某些定制,以适应 Java

语言,并且利用了其中一些特性。此方法提供了对布局对齐和排列的支持,以及对数值、字符串和日期/时间数据的常规格式和特定于语言环境的输出的支持。支持

诸如 byte、BigDecimal 和 Calendar 等常见 Java 类型。

产生格式化输出的每个方法都需要格式字符串 和参数列表。格式字符串是一个 String,它可以包含固定文本以及一个或多个嵌入的格式说明符。请考虑以下示例:

Calendar c = ...;

String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);

格式字符串是 format 方法的第一个参数。它包含三个格式说明符

"%1$tm"、"%1$te" 和 "%1$tY",它们指出应该如何处理参数以及在文本的什么地方插入它们。格式字符串的其余部分是包括

"Dukes Birthday: " 和其他任何空格或标点符号的固定文本。 参数列表由传递给位于格式字符串之后的方法的所有参数组成。

在上述示例中,参数列表的大小为 1,由新对象 Calendar 组成。

1.常规类型、字符类型和数值类型的格式说明符的语法如下:

%[argument_index$][flags][width][.precision]conversion

可选的 argument_index 是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。

可选的 flags 是修改输出格式的字符集。有效标志的集合取决于转换类型。

可选 width 是一个非负十进制整数,表明要向输出中写入的最少字符数。

可选 precision 是一个非负十进制整数,通常用来限制字符数。特定行为取决于转换类型。

所需的 conversion 是一个表明应该如何格式化参数的字符。给定参数的有效转换集合取决于参数的数据类型。

2.用来表示日期和时间类型的格式说明符的语法如下:%[argument_index$][flags][width]conversion

可选的 argument_index 、flags 和 width 的定义同上。

所需的 conversion 是一个由两字符组成的序列。第一个字符是 't' 或 'T'。第二个字符表明所使用的格式。这些字符类似于但不完全等同于那些由 GNU date 和 POSIX strftime(3c) 定义的字符。

3.与参数不对应的格式说明符的语法如下:

%[flags][width]conversion

可选 flags 和 width 的定义同上。

所需的 conversion 是一个表明要在输出中所插内容的字符。

转换

转换可分为以下几类:

1. 常规 - 可应用于任何参数类型

2.

字符 - 可应用于表示 Unicode 字符的基本类型:char、Character、byte、Byte、short 和 Short。当

Character.isValidCodePoint(int) 返回 true 时,可将此转换应用于 int 和 Integer 类型

3. 数值

1. 整数 - 可应用于 Java 的整数类型:byte、Byte、short、Short、int、Integer、long、Long 和 BigInteger

2. 浮点 - 可用于 Java 的浮点类型:float、Float、double、Double 和 BigDecimal

4. 日期/时间 - 可应用于 Java 的、能够对日期或时间进行编码的类型:long、Long、Calendar 和 Date。

5. 百分比 - 产生字面值 '%' ('\u0025')

6. 行分隔符 - 产生特定于平台的行分隔符

Java代码  9d529c7ea000060144ae6251333c19a7.png

Double d =12.3366;

System.out.println(String.format("%2$08d", -3123,-5566));

System.out.println(String.format("%1$9d", -31));

System.out.println(String.format("%1$-9d", -31));

System.out.println(String.format("%1$(9d", -31));

System.out.println(String.format("%1$#9x",5689));

//小数点后面两位

System.out.println(String.format("%1$.2f",5689.0));//必须是同类型的才能进行转换

//格式化的位置

/*String str = "I love ni %s, you love me %s";

String str2 = "I love ni %2$s, you love me %1$s";

System.out.println(String.format(str, "renjunjie","songliyu"));

System.out.println(String.format(str2, "renjunjie","songliyu"));*/

//数组的操作

Object[] sendData = newObject[4];

sendData[0] = Integer.valueOf(1);

sendData[1] ="172.12.1.2";

sendData[2] = Integer.valueOf(123);

sendData[3] ="testadfaerfa";

String sendDataString = String.format("%d,%s,%d,%s",(Object[]) sendData);

System.out.println(sendDataString);

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

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

相关文章

Unity3D VS UE4

Unity3D(U3D) 1.视觉效果:Unity3D相对UE4略逊、手机3D应用、3D游戏轻量级首选,支持跨平台、设备兼容性更好 2.产品力:Unity3D更加多元化,各平台都有代表作,比如《王者荣耀》《炉石传说》《纪念…

java 打包边下载_JAVA实现边下载边压缩

ResponseBodypublic voiddownloadUrl(HttpServletResponse response, HttpServletRequest request){String sourceFilePathproperties.getString("sourceFilePath");//要下载的文件路径eavlProName xxx;//项目名String downloadName "xxx.zip"; //下载文…

Java将时间加1分钟的方法

SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date now new Date(); System.out.println("当前时间:" sdf.format(now));方法一: Date afterDate new Date(now .getTime() 60000); System.out.println…

对List集合中每个对象元素按时间顺序排序

需求&#xff1a; 需要对List中的每个student对象按照birthday顺序排序&#xff0c;时间由小到大排列。 1. 刚开始用的是冒泡排序&#xff0c;出现数据覆盖的情况 for (int i 0; i < list.size() - 1; i) {for (int j 0; j < list.size() - 1 - i; j) {long time li…

SpringBoot读取resource或template中的文件

Spring-Boot读取resource或template中的文件 1.项目场景&#xff1a; 以jar包方式部署系统&#xff0c;想读取resource或是template下面的文件时&#xff0c;报 File Not Found 我遇到的情况是&#xff0c;整个项目达成了一个包&#xff0c;在开发环境&#xff08;windows i…

java slot_LocalVariableTable之 Slot 复用

LocalVariableTable中的 Slot&#xff0c; 是存在复用现象的&#xff0c;这个我早就知道&#xff0c;但是&#xff0c;不太清楚是如何复用的。Java语言规范与JVM规范都没有对Java语言具体要如何使用JVM的局部变量slot做太多限制&#xff0c;只是规定了参数要从下标为0开始的局部…

关于使用this.getClass().getResource(“/“)获取文件时遇到的坑_ClassPathResource加载资源文件用法

最近在工作中遇到需要读取配置文件&#xff0c;然后第一想法就是将文件放到项目的resources目录下, 然后使用&#xff1a; String fileName "config/zh.md" String path this.getClass().getResource("/").getPath() fileName; System.out.println(p…

Objects.requireNonNull( )方法说明

Objects.requireNonNull( )方法在java.util.Objects中 作用就是判断一个对象是否为空 底层源码&#xff1a; /* param obj 需要检测是否为空的对象* param <T> 对象类型* return 对象不为空则返回该对象* throws 对象为空则报NullPointerException异常*/public static …

java 类的执行顺序_Java-类加载和main()方法的执行顺序?

2、类加载和main()的执行顺序&#xff1f;备注&#xff1a;执行main()方法会先加载main()方法所在的类。存在继承关系中&#xff0c;创建子类对象初始化过程为:父类静态成员和语句块子类静态成员和静态语句块父类普通成员和普通语句块父类构造函数子类普通成员和普通语句块父类…

利用Gson解析多层嵌套的JSON数据

数据实例: {"error": 0,"status": "success","results": [{"currentCity": "青岛","index"

编写一个程序实现方法的覆盖java_编写Java程序代码必须先声明一个____,然后在其中编写实现需求的业务代码。...

【多选题】下列关于多行注释的应用,正确的是( )【单选题】是在思维中把对象分解为各个部分、侧面、属性以及阶段,分别加以考察的方法。(1.0分)【判断题】多行注释“/*...*/”中不可以嵌套单行注释“//”。( )【多选题】直觉具有( )等特性。(2.0分)【多选题】马克思主义科学技术…

数据模型 同比 环比_同比和环比计算公式?

一、同比增长计算公式&#xff1a; 1、同比增长率(本期数&#xff0d;同期数)同期数100% 例子&#xff1a;比如说去年3月的产32313133353236313431303231363533e4b893e5b19e31333365666237值100万&#xff0c;本年3月的产值300万&#xff0c;同比增长率是多少&#xff1f; 本…

mysql80配置环境变量_MySQL:安装与配置

一、MySQL安装0、下载社区版安装包1、进入安装页面&#xff0c;这里不选择默认安装的所有工具&#xff0c;仅选择Server only。2、如果没有VC环境就点击execute安装&#xff0c;已安装就继续下一步。3、安装MySQL服务&#xff0c;Next。4、进入MySQL的配置环节&#xff0c;首先…

解决SVN无法add to ignore list的问题

有时候&#xff0c;在SVN中添加某文件夹到忽略列表即add to ignore list的时候报错&#xff0c;无法添加进忽略列表&#xff0c;这里总结一下&#xff0c;无非就是两个原因 仓库中已经存在了该文件夹的历史版本&#xff0c;因而无法忽略 解决方法&#xff1a;先备份该文件夹&am…

oracle正则表达式包含但不含_Oracle 正则表达式(详细)

Oracle 正则表达式正则表达式就是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板&#xff0c;将某个字符模式与所搜索的字符串进行匹配。本文详细地列出了能在正则表达式中使用…

获取某个月中的第一天和最后一天某个月的天数当月第一天,当月最后一天,当年的第一天,当年的最后一天

获取某个月中的第一天和最后一天&某个月的天数 public static void main(String args[]){int month 2;// 2月Calendar cal Calendar.getInstance();cal.set(Calendar.YEAR, 2022);cal.set(Calendar.MONTH, month - 1);int max cal.getActualMaximum(Calendar.DATE);int…

python使用loaddata_Python中LOADDATAINFILE语句导入数据(txt)进入MySQL的一些注意事项...

问题&#xff1a;ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ROW 1 at line 1")代码如下&#xff1a;# -*- coding: utf-8 -*-"&quo…

SimpleDateFormat 日期格式化,以及sdf.parse(“2022-02-30“)顺序加问题

时间日期标识符&#xff1a; yyyy&#xff1a;年 MM&#xff1a;月 dd&#xff1a;日 hh&#xff1a;1~12小时制(1-12) HH&#xff1a;24小时制(0-23) mm&#xff1a;分 ss&#xff1a;秒 S&#xff1a;毫秒 E&#xff1a;星期几 D&#xff1a;一年中的第几…

SimpleDateFormat的线程不安全问题

一、前言 日期的转换与格式化在项目中应该是比较常用的了 一个问题&#xff1a;项目中的日期转换怎么用的&#xff1f;SimpleDateFormat 用过吗&#xff1f;能说一下 SimpleDateFormat 线程安全问题吗&#xff0c;以及如何解决&#xff1f; 回答&#xff1a;平时就是在全局定…

JVM——System.gc、内存溢出、内存泄漏、STW、安全点、安全区域、强软弱虚引用

文章目录①. System.gc()的理解②. 内存溢出(out of Memory)③. 内存泄漏(Memory Leak)④. Stop The World⑤. 多线程中的并行与并发⑥. 垃圾回收的并行、串行、并发⑦. 安全点(Safepoint)⑧. 安全区域(Safe Region)⑨. 引用①. 强引用:不回收②. 软引用: 内存不足即回收③. 弱…