小编虽然是学java出生,但工作之后就一直从事android开发,很多java基础都忘记完了,最近一年从ES换到了AS,原来的很多习惯都收到了挑战,比如我喜欢ES写方法的时候先在JAVA project中写个main方法验证下对不对,比如数据拆分,时间对比等等,但AS使用中,因为和ES很多环境变量冲突,就把ES卸载了,现在很多都不方便。

在开发中使用比较多的就是设置view的值/给view填充值得时候,需要格式化数据,小编今天用了一写时间,做了下小小的整理

1.%s 字符串类型

用处:多用于字符串拼接

示例:

String str = String.format("拼接字符,%s", "dddd");
Logs.e("fuqinming", str);
str = String.format("拼接字符,%s", );
Logs.e("fuqinming", str);
str = String.format("拼接字符,%s", true);
Logs.e("fuqinming", str);

下面为各种传值类型以及得到的值:

06-15 11:21:56.862 21904-21904/com.cqfmbank.fmbankmobile E/fuqinming: 拼接字符,dddd
06-15 11:21:56.862 21904-21904/com.cqfmbank.fmbankmobile E/fuqinming: 拼接字符,1
06-15 11:21:56.862 21904-21904/com.cqfmbank.fmbankmobile E/fuqinming: 拼接字符,true

结果小结:
该占位符不规定后面的传值类型,都会变成string类型,类似
String str=“拼接字符,”+传入值


2.%c 字符类型

String str = String.format("拼接字符,%c", 'A');
Logs.e("fuqinming", str); str = String.format("拼接字符,%c", "d");
Logs.e("fuqinming", str);
str = String.format("拼接字符,%c", 1);
Logs.e("fuqinming", str);
str = String.format("拼接字符,%c", true);
Logs.e("fuqinming", str);

下面为得到的结果:

06-15 11:31:00.502 2038-2038/com.cqfmbank.fmbankmobile E/fuqinming: 拼接字符,A
报错
报错
报错
报错

  


3.%b布尔类型

用处:可用于android中直接打出一个判断是否正确

示例:

String str = String.format("对比结果为:%b", 1+1!=2);
Logs.e("fuqinming", str);
str = String.format("拼接字符,%b", "d".equals("A"));
Logs.e("fuqinming", str);
str = String.format("拼接字符,%b", 1);
Logs.e("fuqinming", str);
str = String.format("拼接字符,%b", !true);
Logs.e("fuqinming", str);

结果:

fuqinming对比结果为:false
fuqinming拼接字符,false
fuqinming拼接字符,true
fuqinming拼接字符,false

结果小结:
String.format(“其他拼接字符%b”,判断语句/其他);如果传值不是判断语句那么得到的值,默认为true


4.%d整数类型(十进制)

用处:已经忘记什么是十进制数,也忘记怎么算进制数了,不过依稀记得十进制数就是我们平常看到的数,比如100就是100这样,在android中可用来获取计算得到的int值
示例:

String str = String.format("拼接字符,%d", 1);
Logs.e("fuqinming", str);
str = String.format("拼接字符,%d", 1 / 2);
Logs.e("fuqinming", str);
str = String.format("对比结果为:%d", 1 + 1 != 2);
Logs.e("fuqinming", str);
str = String.format("拼接字符,%d", "d".equals("A"));
Logs.e("fuqinming", str);

得到的结果:

6-15 11:50:37.190 15215-15215/com.cqfmbank.fmbankmobile E/fuqinming: 拼接字符,1
06-15 11:50:37.190 15215-15215/com.cqfmbank.fmbankmobile E/fuqinming: 拼接字符,0
报错
报错

结果小结:String.fromat(“拼接字符串%d”,计算),传入的值可以为int,double,lang,float等值,得到的是int,0.60为0,并不是四舍五入


前沿:前面四点是本人早上写的,晚上回来补充的时候,发现自己的es虽然android环境不行,但是写java代码还是可以的,顾本人下面的代码片来自于es的java project

5.%x整数类型(十六进制)

使用:特殊计算

示例:

public static void main(String[] args) {
String str=String.format("%x",100);
System.out.println(str);
str=String.format("%x",100/2);
System.out.println(str);
// str=String.format("%x",101.f);
// System.out.println(str);
// str=String.format("%x",1000.00);
System.out.println(str);
str=String.format("%x",true);
System.out.println(str);
}

示例结果:

64
32
32
Exception in thread "main" java.util.IllegalFormatConversionException: x != java.lang.Boolean
at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
at java.util.Formatter$FormatSpecifier.printInteger(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.lang.String.format(Unknown Source)
at dd.main(dd.java:11)

  

结果小结:
以用于做特殊运算,但是传参必须是int类型,其他类型会直接报错,在android开发中,很少会遇到这种特殊运算,顾运用价值并不`大


6.%o整数类型(八进制数)

使用:特殊计算,认为在android中使用意义不大

示例:

public class dd {
public static void main(String[] args) {
String str=String.format("%o",100);
System.out.println(str);
str=String.format("%o",100/2);
System.out.println(str);
        str=String.format("%o",1000.00);
System.out.println(str);
str=String.format("%o",true);
System.out.println(str);
}
}

示例结果:

44
62
Exception in thread "main" java.util.IllegalFormatConversionException: o != java.lang.Boolean
at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
at java.util.Formatter$FormatSpecifier.printInteger(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.lang.String.format(Unknown Source)
at dd.main(dd.java:7)

  

结果小结:

tring.format(“%o”,值),值的类型必须是int,如果不是int就会直接报错,该方法比较适合特殊运算,但是android中特殊运算很少,并不使用于android运用。


6.%f浮点类型

使用:多用于格式化数据,android中也常常使用

java示例

public static void main(String[] args) {
String str=String.format("%.2f",100.00);
System.out.println(str);
str=String.format("%f",100.00);
System.out.println(str);
str=String.format("%.8f",1000.00);
System.out.println(str);
str=String.format("%f",true);
System.out.println(str);
}

  

示例结果:

100.00
100.000000
1000.00000000
Exception in thread "main" java.util.IllegalFormatConversionException: f != java.lang.Boolean
at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
at java.util.Formatter$FormatSpecifier.printFloat(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.lang.String.format(Unknown Source)
at dd.main(dd.java:9)

结果小结:

String.format("%f",值),需要注意的是值必须为浮点类型,否则会报错,其中在测试中,发现了如下结果
1>当不设定保留小数点后位数的时候,默认会保留6位小数
2>当设定保留小数点后位数超过最大位数的时候,会直接报错,提示超出内存错误



7.%a十六进制浮点类型

使用:特殊运算,在android中基本上没什么用

示例:

 
public static void main(String[] args) {
String str=String.format("%a",1000.00);
System.out.println(str);
str=String.format("%a",1000.f);
System.out.println(str);
str=String.format("%a",1000);
System.out.println(str);
}

  

示例结果:

x1.f4p9
0x1.f4p9
Exception in thread "main" java.util.IllegalFormatConversionException: a != java.lang.Integer
at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
at java.util.Formatter$FormatSpecifier.printFloat(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.lang.String.format(Unknown Source)
at dd.main(dd.java:7)

  

结果小结:
String.format(“%a”,number),传值可以是int也可以是浮点类型,但也只能是number相关类型,否则就会报错,在android中不适用。


8.%e指数类型

使用:在做金融类APP开发中可能会有用

示例:

public static void main(String[] args) {
String str=String.format("%e",1000.00);
System.out.println(str);
str=String.format("%e",1000.f);
System.out.println(str);
str=String.format("%e",1000);
System.out.println(str);
str=String.format("%e","ddd");
System.out.println(str);
}

  

结果:

1.000000e+03
1.000000e+03
Exception in thread "main" java.util.IllegalFormatConversionException: e != java.lang.Integer
at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
at java.util.Formatter$FormatSpecifier.printFloat(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.lang.String.format(Unknown Source)
at dd.main(dd.java:7)

  

结果小结:
String.format(“%e”,浮点类型),其中传值必须是浮点类型,否则会报错


9.%g通用浮点类型(f和e中较短的)

使用:特殊计算

示例:

public static void main(String[] args) {
String str=String.format("%g",10002121212.0025);
System.out.println(str);
str=String.format("%g",1000.f);
System.out.println(str);
str=String.format("%g",1000);
System.out.println(str);
str=String.format("%g","ddd");
System.out.println(str);
}

  

示例结果

1.00021e+10
1000.00
Exception in thread "main" java.util.IllegalFormatConversionException: g != java.lang.Integer
at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
at java.util.Formatter$FormatSpecifier.printFloat(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.lang.String.format(Unknown Source)
at dd.main(dd.java:7)

  

结果小结:String.format(“%g”,浮点类型),传值类型一定要是浮点类型,并且在实际运算中,一定要控制长度,否则就会得到数据异常,在android view获取值的时候报错


10.%h散列码

使用:多在加密算法中使用

示例:

public static void main(String[] args) {
String str=String.format(“%h”,10002121212.0025);
System.out.println(str);
str=String.format(“%h”,1000.f);
System.out.println(str);
str=String.format(“%h”,1000);
System.out.println(str);
str=String.format(“%h”,”ddd”);
System.out.println(str);
str=String.format(“%h”,true);
System.out.println(str);
str=String.format(“%h”,false);
System.out.println(str);

结果:

 e27d
447a0000
3e8
183e4
4cf
4d5

结果小结:

String.format(“%h”,值),任何值类型都会有散列码,顾传值可以是任何值,在android中可以用于自己写加密解密方法,比如我们自己写的加密键盘


11.%%百分比类型

使用:格式化数

示例:

public static void main(String[] args) {
String str=String.format("%%",10002121212.0025);
System.out.println(str);
str=String.format("%%",1000.f);
System.out.println(str);
str=String.format("%%",1000);
System.out.println(str);
str=String.format("%%","ddd");
System.out.println(str);
str=String.format("%%",true);
System.out.println(str);
str=String.format("%d%%",1);
System.out.println(str);
str=String.format("%.2f%%",100.3);
System.out.println(str);
}

结果:

%
%
%
%
1%
100.30%

结果小结:
  %%多用于混用,与其说占位符,还不如更加确切的说是%%就是%号,android中部分格式化的时候可以使用


12.+为正数或者负数添加符

使用:多用于数字格式化

示例:

public static void main(String[] args) {
String str=String.format("%+d",1000);
System.out.println(str);
str=String.format("%+d",-100);
System.out.println(str);
str=String.format("%+.2f",1000.12);
System.out.println(str);
str=String.format("%+.2f",-1000.12);
System.out.println(str);

结果:

1000
-100
+1000.12
-1000.12

结果小结:多用于混用,是不是发比写很多if 方便很多呢


13.小例子格式化钱

int 转换为,三位,三位,三位这样的数字
 String str=String.format("%,d",1000);
System.out.println(str);

结果

1,000

含有浮点类型的数字转换

public void main(String[] args) {
String str=String.format("%,.2f",1000.00);
System.out.println(str); }

得到的结果:

1,000.00

以上知识虽然特别基础,但也算是比较实用的,一般在android中我们都会写的又臭又长,上面的java的格式化方法可是很使用的偶,希望上面的分享对你有用偶。

Android之使用JAVA占位符格式数据(很实用)的更多相关文章

  1. Java占位符

    一.背景 在使用java开发的过程中,经常需要使用将字符串拼接到一起(比如,用于日志输出),常用方法如下: 使用+将不同字符串进行拼接 使用StringBuilder 使用String.format ...

  2. Swift3.0语言教程使用占位符格式创建和初始化字符串

    Swift3.0语言教程使用占位符格式创建和初始化字符串 Swift3.0语言教程使用占位符格式创建和初始化字符串在很多的编程语言中都存在占位符,占位符就是为指定的内容占留一个位置.此功能一般在开发者 ...

  3. java保存json格式数据,保存字符串和读取字符串

    1.java保存json格式数据,保存字符串和读取字符串 import java.io.*; class RWJson { public void wiite(String s, String toS ...

  4. Java 占位符使用 和 修饰符

    Java中占位符的使用 String类的format()方法 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法, ...

  5. app开发历程————Android程序解析服务器端的JSON格式数据,显示在界面上

    上一篇文章写的是服务器端利用Servlet 返回JSON字符串,本文主要是利用android客户端访问服务器端链接,解析JSON格式数据,放到相应的位置上. 首先,android程序的布局文件main ...

  6. Java 占位符

    Java的占位符有两种:% 和 {} String 类对象 只能使用 % 有效. MessageFormat 类对象 只能使用 {} 有效. package demo; import java.tex ...

  7. python基础入门--input标签、变量、数字类型、列表、字符串、字典、索引值、bool值、占位符格式输出

    # 在python3 中: # nian=input('>>:') #请输入什么类型的值,都成字符串类型# print(type(nian)) # a = 2**64# print(typ ...

  8. Java占位符替换工具类

    import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFact ...

  9. Android 如何通过Retrofit提交Json格式数据

    本文将介绍如何通过retrofit库post一串json格式的数据.首先post的json数据格式如下: { "Id": "string", "Dev ...

随机推荐

  1. day01课程回顾,数据类型

    Day01 Python的分类 Cpython:代码àc字节码->机器码   一行一行的编译执行 Pypy:   代码àc字节码->机器码   全部转换完再执行 其他python  代码- ...

  2. [进程管理]Linux进程状态解析之R、S、D

    Linux是一个分时操作系统,能够在一个cpu上运行多个程序,每个被运行的程序实例对应一个或多个进程,这里介绍一下Linux进程状态. Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个 ...

  3. Android触摸事件的应用

    前言 上一篇讲了Android触摸事件的传递机制,具体可以看这里 初识Android触摸事件传递机制.既然知道Android中触摸事件的传递分发,那么它能解决什么样的问题,在我们实际开发中如何应用,这 ...

  4. 手把手教做单点登录(SSO)系列之一:概述与示例

    本系列将由浅入深的结合示例.源码以及演示视频,手把手的带大家深入最新的单点登录SSO方案选型与架构开发实战.文末附5个满足不同单点登录场景的gif动画演示(如果看不清请在图片上右键用新窗口打开),本系 ...

  5. ThinkPHP框架的增删改

       使用TP框架主要是比较简单一些,之前我们写增删改,代码量相对来说还是比较多的,这里利用tp框架写起来是非常简单的,大大的减少了代码量    这里我是以数据库的nation表为例的,nation表 ...

  6. linux 内核的spinlock

    spinlock设计成了三层,第一层是接口,第二层raw实现层,第三层是CPU平台层.在第二层raw实现层提供了两个分支,分别是单CPU和多CPU(核).第三层是不同CPU的锁操作实现.raw层除了调 ...

  7. ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

    前言 似乎除了官方介绍的例子,我还没有在网上见过一篇介绍如何"使用自己的数据"创建"网络数据集"的文章. 有介绍几何网络的,有介绍如何用官方SanFrancis ...

  8. 关于“foreach循环”中遇到的几个问题总结

    1.列表页面用"foreach循环"的时候数据没有显示,此时需要检查你对象模型中属性的首字母是否大写,切记不能大写(本人在做一个项目的时候,对象模型是别人建立的,属性首字母大写了, ...

  9. zabbix监控rds

    问题:使用zabbix监控rds,用之前的脚本,执行总是会有密码安全提示: [root@iZ25m1box8cZ alertscripts]# sh rds.sh Uptime mysqladmin: ...

  10. HttpClient和 HtmlParser实现爬虫

    网络爬虫技术 1       什么叫网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不 ...