JDK Locale的妙用:探索多语言和地区设置的强大功能

文章目录

  • 前言
  • 应用场景
    • 国际化(Internationalization)
    • 格式化(Formatting)
      • 日期格式化
      • 数字格式化
      • 金额格式化
      • 百分比形式格式化
    • 获取Locale信息


前言

JDK(Java Development Kit)的Locale类用于表示特定的地理、文化和语言的环境信息。Locale对象包含了对应于特定地区或语言的信息,这对于国际化和本地化的应用程序是非常重要的。


应用场景

国际化(Internationalization)

国际化的应用程序中,Locale类用于支持不同地区和语言的用户界面。通过使用Locale对象,程序可以根据用户的首选语言和地区来加载相应的本地化资源文件,例如文本、图像和声音等。

IDEA新建语言资源文件
在这里插入图片描述
命名自己的资源文件名称,并选择自己要添加的语言
在这里插入图片描述

public class InternationalizationExample {public static void main(String[] args) {// 获取用户的默认LocaleLocale userLocale = Locale.ENGLISH;// 使用ResourceBundle加载本地化资源文件ResourceBundle messages = ResourceBundle.getBundle("Message", userLocale);// 获取本地化字符串String greeting = messages.getString("help");System.out.println(greeting);}
}

控制台输出:
在这里插入图片描述

格式化(Formatting)

日期格式化

Locale类用于格式化和解析日期、时间、数字和货币等信息。不同地区和语言对于这些格式的要求可能会有所不同,Locale对象允许应用程序适应用户的偏好。

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;public class DateFormatExample {public static void main(String[] args) {// 获取用户的默认LocaleLocale userLocale = Locale.getDefault();// 获取日期格式化对象DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL, userLocale);// 格式化当前日期Date currentDate = new Date();String formattedDate = dateFormat.format(currentDate);System.out.println("Formatted Date: " + formattedDate);}
}

控制台输出
在这里插入图片描述

数字格式化

public class NumberFormatExample {public static void main(String[] args) {// 获取用户的默认LocaleLocale userLocale = Locale.getDefault();// 获取数字格式化对象NumberFormat numberFormat = NumberFormat.getInstance(userLocale);// 格式化数字double number = 1234567.8455;String formattedNumber = numberFormat.format(number);System.out.println("Formatted Number: " + formattedNumber);// 带货币符号的格式化String currencyFormattedNumber = NumberFormat.getCurrencyInstance(Locale.CHINA).format(number);System.out.println("Formatted Number with Currency Symbol: " + currencyFormattedNumber);}}

控制台打印效果
在这里插入图片描述

⚠️ number进行format的时候只会保留3位小数,并且进行四舍五入操作

如果想原样输出,但有带有货币符号的,我们可以这样做:

public class FormatNumber {public static void main(String[] args) {// 使用BigDecimal表示金额BigDecimal amount = new BigDecimal("1234.5678");// 获取中文环境的货币格式Locale chineseLocale = Locale.CHINA;Currency currency = Currency.getInstance(chineseLocale);String currencySymbol = currency.getSymbol();// 格式化BigDecimal为带有货币符号的字符串(不进行四舍五入)String formattedAmount = currencySymbol +amount;System.out.println("Original BigDecimal: " + amount);System.out.println("Formatted Amount (Currency, No Rounding): " + formattedAmount);}
}

在这里插入图片描述

金额格式化

public class DecimalFormatExample {public static void main(String[] args) {BigDecimal bigDecimal = new BigDecimal("1234567890.1234567890");DecimalFormat decimalFormat = new DecimalFormat("###,###,###,###.00");// 保留两位小数String format = decimalFormat.format(bigDecimal);System.out.println("格式化后的金额:"+format);}
}

在这里插入图片描述

百分比形式格式化

public class NumberFormatExample {public static void main(String[] args) {// 获取用户的默认LocaleLocale userLocale = Locale.getDefault();// 获取数字格式化对象NumberFormat numberFormat = NumberFormat.getInstance(userLocale);// 格式化数字double number = 1234567.8455;String formattedNumber = numberFormat.format(number);System.out.println("Formatted Number: " + formattedNumber);// 带货币符号的格式化String currencyFormattedNumber = NumberFormat.getCurrencyInstance(Locale.CHINA).format(number);System.out.println("Formatted Number with Currency Symbol: " + currencyFormattedNumber);// 百分比形式格式化String formattedNumberWithPercentSymbol = NumberFormat.getPercentInstance().format(0.43);System.out.println("Formatted Number with Percent Symbol: " + formattedNumberWithPercentSymbol);}

在这里插入图片描述

获取Locale信息

Locale类提供了一些方法,可以获取Locale的信息,例如语言代码、国家代码、显示名等。

public class LocalInfoExample {public static void main(String[] args) {Locale locale = Locale.getDefault();System.out.println("国家名称简写:"+locale.getCountry());System.out.println("国家名称全称:"+locale.getDisplayCountry());System.out.println("语言简写:"+locale.getLanguage());System.out.println("语言全称:"+locale.getDisplayLanguage());System.out.println("语言标记:"+locale.toLanguageTag());System.out.println("国家语言信息:"+locale.getDisplayName());}
}

在这里插入图片描述

更多用法可以参考JDK官方文档,或者参考这篇文章https://www.wenjiangs.com/doc/pn3sp3eu

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

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

相关文章

openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错

文章目录 openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错210.1 谓词下推引起的查询报错210.1.1 问题现象210.1.2 原因分析210.1.3 处理办法 openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错 210.…

8-小程序数据promise化、共享、分包、自定义tabbar

小程序API Promise化 wx.requet 官网入口 默认情况下,小程序官方异步API都是基于回调函数实现的 wx.request({method: , url: , data: {},header: {content-type: application/json // 默认值},success (res) {console.log(res.data)},fail () {},complete () { }…

ANAPF有源电力滤波器选型计算——安科瑞赵嘉敏

配电系统中谐波电流的计算涉及很多因素。对于改造项目,可使用专业电能质量分析仪测得所需谐波数据;对于新建项目,设计人员并不能直接获得供电系统的的谐波数据,因此,我司研发人员通过众多不同行业、不同类型的项目&…

JSP仓储管理系统myeclipse定制开发SQLServer数据库网页模式java编程jdbc

一、源码特点 JSP仓储管理系统系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库 ,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为SQLServer2008&#x…

扩展学习|一文明晰推荐系统应用开发核心技术发展

文献来源:Lu J, Wu D, Mao M, et al. Recommender system application developments: a survey[J]. Decision support systems, 2015, 74: 12-32. 主题:关于推荐系统应用开发的调查研究 关键词:推荐系统、电子服务个性化、电子商务、电子学习、电子政务 …

除了Adobe之外,还有什么方法可以将Excel转为PDF?

前言 Java是一种广泛使用的编程语言,它在企业级应用开发中发挥着重要作用。而在实际的开发过程中,我们常常需要处理各种数据格式转换的需求。今天小编为大家介绍下如何使用葡萄城公司的的Java API 组件GrapeCity Documents for Excel(以下简…

BL808学习日志-3-DPI-RGB屏幕使用-LVGL D0

一、DPI-RGB驱动 BL808的手册上显示是支持RGB565屏幕显示输出的,但是一直没找到网上的使用例程。且官方的SDK显示也是能够使用的,只是缺少了驱动。这一部分驱动在SIPEED的SDK中已经内置了,今天就是简单的点亮一个800*480 RGB565的屏幕。 二、…

Java基础数据结构之Lambda表达式

一.语法 基本语法:(parameters)->expression或者(parameters)->{statements;} parameters:类似方法中的形参列表,这里的参数是函数式接口里面的参数。这里的参数可以明确说明,也可以不声明而由JVM隐含的推断。当只有一个推…

C++实习报告(集合交,并,差运算的实现)

一、问题描述 1、问题描述 集合元素类型可以是整数、字符串和小数,实现集合的交、并、差运算。 2、功能要求 (1)用户能够输入两个集合元素; (2)能够完成集合的交、并、差运算; (3&a…

07. STP的基本配置

文章目录 一. 初识STP1.1. STP概述1.2. STP的出现1.3. STP的作用1.4. STP的专业术语1.5. BPDU的报文格式1.6. STP的选择原则(1)选择根桥网桥原则(2)选择根端口原则 1.7. 端口状态1.8. STP报文类型1.9. STP的收敛时间 二. 实验专题…

【MySQL 流浪之旅】 第六讲 浅谈 MySQL 锁

系列文章目录 【MySQL 流浪之旅】 第一讲 MySQL 安装【MySQL 流浪之旅】 第二讲 MySQL 基础操作【MySQL 流浪之旅】 第三讲 MySQL 基本工具【MySQL 流浪之旅】 第四讲 MySQL 逻辑备份【MySQL 流浪之旅】 第五讲 数据库设计的三个范式 目录 系列文章目录 一、什么是锁&#x…

07-Nacos-接入Mysql实现持久化

1、默认内嵌的数据库 Derby 存于/data目录 2、扩展仅支持Mysql 5.6.5 执行Nacos中的SQL脚本,该脚本是Nacos-server文件夹中的nacos-mysql.sql 详见 01-Nacos源码打包、部署-CSDN博客 3、修改配置文件 Nacos-server中的conf目录下,application.proper…

5种ai智能自动写作,让你的写作效率秒拔高

写作是一项需要耗费大量时间和精力的任务,但现在有了AI智能自动写作软件,我们可以轻松提高写作效率。在国内市场上,有许多优秀的写作软件可供选择。本文将向您推荐5款国内的写作软件,并详细说明每款软件的功能特点。 爱制作AI 使…

小项目:使用MQTT上传温湿度到Onenet服务器

前言 我们之前分别编写了 DHT11、ESP8266 和 MQTT 的代码,现在我们将它们仨整合在一起,来做一个温湿度检测小项目。这个项目可以实时地将 DHT11 传感器获取到的温湿度数据上传到 OneNET 平台。通过登录 OneNET,我们随时随地可以查看温湿度数…

山体滑坡在线安全监测预警系统(解决方案)

在近年来,随着全球气候变化的影响,山体滑坡等自然灾害频发,给人们的生命财产安全带来了严重威胁。为了有效预防和减少山体滑坡带来的危害,许多地方开始在山上安装山体滑坡在线安全监测预警系统(解决方案)。…

Java版大厂算法题1——数字颠倒

问题描述 输入一个整数&#xff0c;将这个整数以字符串的形式逆序输出&#xff0c;程序不考虑负数的情况&#xff0c;若数字含有0&#xff0c;则逆序形式也含有0。如果输入为100&#xff0c;则输出为001。 数据范围&#xff1a;0<n<(2^30)-1 * 输入描述&#xff1a;输入…

SpringBoot+SqlServer查询接口

SpringBootSqlServer查询接口 文章目录 SpringBootSqlServer查询接口1. pom环境配置2. common工具包3. 实体类接口映射4. Service层Controller层 需求&#xff1a;根据站号查询前一个小时的所有数据&#xff0c;将数据返回格式为Map<String,List<Map<String,String>…

【硬件产品经理】避免硬件产品失败 | 技术维度

目录 简介 技术维度一&#xff1a;低估产品开发 技术维度二&#xff1a;低估规模生产的复杂性 技术维度三&#xff1a;测试不足 技术维度四&#xff1a;产品太复杂 技术维度五&#xff1a;对客户承诺太高 推荐内容 简介 这节内容主要从技术维度来谈谈避免硬件产品失败这…

vue3封装el-pagination分页组件

1、效果如图&#xff1a; 2、分页组件代码&#xff1a; <template><div class"paging"><el-config-provider :locale"zhCn"><el-paginationv-model:current-page"page.currentPage"v-model:page-size"page.pageSize…

基于Prompt Learning的信息抽取

PTR: Prompt Tuning with Rules for Text Classification 清华&#xff1b;liuzhiyuan&#xff1b;通过规则制定subpromptRelation Extraction as Open-book Examination: Retrieval-enhanced Prompt Tuning Relation Extraction as Open-book Examination: Retrieval-enhance…