注册 登录
Java基础教程

第一章: 开启Java学习之旅

第二章: 掌握计算机基础知识

第三章: 掌握命令行基础知识

第四章: 我的第一个Java程序

第五章: Java编程必备基础

第六章: Java编程的核心:控制结构

第七章: Java面向对象基础

第八章: Java面向对象进阶

第九章: Java字符串类型

第十章: Java数组与数据结构

第十一章: Java高级数据结构

第十二章: Java并发编程基础

首页 > Java基础教程 > 第九章: Java字符串类型 > 9.3节: 字符串的格式化

9.3节: 字符串的格式化

薯条老师 2021-12-14 11:21:09 153778 0

编辑 收藏

广州番禺Python, Java小班周末班培训

第四期线下Java, Python小班周末班已经开课了,培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析, Java中高级工程师培训。授课详情请点击:http://chipscoco.com/?cate=6    

9.3.1 理解字符串格式化

同学们比较熟悉的是磁盘格式化,将磁盘格式化以后,磁盘中的文件全部被清除。那么,什么是字符串的格式化?对字符串进行格式化,不会清除字符串中的字符。字符串的格式化是指按照特定的格式对字符串进行输出。

举个简单的例子,在字符串"{1}{2}{3}"中, 在{1}位置处输出为整数,{2}位置处输出为字符串,{3}位置处输出为浮点数,那么格式化后的字符串输出为:"整数字符串浮点数"。

9.3.2 字符串的format方法

在Java中使用String类的静态方法format来对字符串进行格式化,以下是format方法的定义:

String.format(String format, Object... args)

参数format表示待格式化的字符串,在format中需包含格式化符号。args为可变参数,传递的实参需与format种的格式化符号一一对应。format方法的返回值是一个格式化后的字符串。String类同时提供了一个重载的format方法,如下所示:

String.format(Locale locale, String format, Object... args)

locale参数用来指定语言环境。掌握字符串的格式化,我们需要先学习常用的格式化符号。

9.3.3 常用的格式化符号

常用的格式化符号如下表所示:

格式化符号

 

描述

%md

格式化为十进制整数, m表示显示的最少宽度,不传时按实际宽度进行显示。m大于实际长度时会在前面补空格。

%x

格式化为十六进制整数

%m.nf

格式化为浮点数,m表示显示的最少宽度,m大于实际长度时会在前面补空格。n表示小数点后的有效数位数。m与n可不传。

%g

格式化为通用浮点类型

%b

格式化为布尔值(true, false)

%c

格式化为字符类型

%ms

格式化为字符串,m表示显示的最少宽度,不传时按字符串实际长度进行显示。m大于实际长度时会在前面补空格。

%%

输出一个%符号

更多的格式化符号,读者可查阅Java的官方文档。 

代码实例:

public class HelloJava{
    public  static void main(String[] args) {
        int year = 2021;
        double money = 11.11;
        String name = "Lohan";
        /*
        (1) %m.nf中的m表示显示的最少宽度,这里的宽度包含整数位+小数点+小数点后的有效位数。
        m可不传,则按实际的宽度进行显示。m大于实际总宽度时会在数值前面补空格。
        (2) n用来指定小数点后的有效数位数,n不传时,默认显示6位有效数
        */
        
        String content = String.format("%s在%d年花光了口袋里仅剩的%.2f块钱",   name,year, money);
        System.out.println(content);
    }
}

以上程序的输出为:

Lohan在2021年花光了口袋里仅剩的11.11块钱

读者需注意,在对字符串进行格式化时,实参必须与格式化符号一一对应,且实参的类型与格式化符号所代表的类型一致,否则会报错。

9.3.4 常用的格式化标志

在对字符串进行格式化时,还可以通过一些标志位来控制输出的标志位,对齐方式,参数索引等,下表所示为常用的标志位:

格式化标志

描述

+

为整型数字添加一个符号位。例如%+d,对正数来说会输出一个+符号,对负数来说会输出一个-符号。

-

表示左对齐,例如%-s,将输出按左对齐

0

指定的宽度大于实际宽度时,在前面补0,该标志位只能用于数值类型。例如%05d,整数的实际宽度小于5时,会在前面补0

#

如果是浮点数则包含小数点,如果是16进制或8进制则添加0x或0的前缀

$

用来指定被格式化的参数索引,索引从1开始,为1时对应于第一个实参,为2时对应到第二个实参,以此类推。$的使用举例:%1$d%2$f$1$d。这里的%1$d%2$f%1$d表示用第一个实参,第二个实参,第一个实参来格式化。

代码实例:

public class HelloJava{
    public  static void main(String[] args) {
        String[] goods = {"炸鸡腿", "啤酒"};
        double totalPrice = 29.8;
        // 可组合使用多个标志位来对字符串进行格式化
        // 例如%3$-6.2f,对应的是第三个实参,在使用该参数进行格式化时,显示的最少宽度为6,有两位有效数,且左对齐
        String content = String.format("Lohan在超市里购买了%1$s和%2$s,一共花了%3$-6.2f元\n第二天又买了%1$s", goods[0], goods[1], totalPrice);
        System.out.println(content);
    }
}

以上程序的输出为:

Lohan在超市里购买了炸鸡腿和啤酒,一共花了29.80 元

第二天又买了炸鸡腿

9.3.5 对时间日期进行格式化

对字符串进行格式化时还可以利用%t+时间日期格式化符号对时间日期进行格式化,下表所示为常用的时间日期格式化符号:

时间日期格式化符号

 

描述

F

将日期输出为"年-月-日"格式

D

将日期输出为"日-月-年"格式

r

将时间输出为12小时制的"HH:MM:SS PM"格式,HH表示小时,MM表示分钟,SS表示秒数。AM表示上午,PM表示下午。

T

    将日期输出为24小时制的"HH:MM:SS"格式

通过Java中的内置类Date,我们可以构造一个当前的日期对象,然后传递给String类的format方法进行格式化。

代码实例:

import java.util.Date;
 
public class HelloJava{
    public  static void main(String[] args) {
        // 构造一个日期对象,使用Date之前先执行import来导入Date
        Date date = new Date();
        // 对时间日期进行格式化时需使用%t+相应的格式化符号
        String content = String.format("现在的时间是:%tF %tT", date, date);
        System.out.println(content);
    }

9.3.6 使用特定的语言环境

String类提供了一个重载的format方法,如下所示:

String.format(Locale locale, String format, Object... args)

通过locale参数,我们可以以特定的语言环境来对字符串进行格式化。local的常用选项:

local选项

 

描述

Local.CHINESE

指定为中文环境

Local.ENGLISH

指定为英文环境

Local.JAPANESE

指定为日文环境

代码实例:

import java.util.Date;
import java.util.Locale;
 
public class HelloJava{
    public  static void main(String[] args) {
        // 构造一个日期对象,使用Date之前先执行import来导入Date
        Date date = new Date();
        // 以英文环境来对字符串进行格式化
        String content = String.format(Locale.ENGLISH,"现在的时间是:%tF %tr", date, date);
        System.out.println(content);
    }
}

9.3.7 高薪就业班



欢迎 发表评论:

请登录

忘记密码我要注册

注册账号

已有账号?请登录