Android之使用JAVA占位符格式数据(很实用)

小编虽然是学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", 1);
 Logs.e("fuqinming", str);
 str = String.format("拼接字符,%s", true);
 Logs.e("fuqinming", str);

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

1

2

3

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);

复制代码

下面为得到的结果:

1

2

3

4

5

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

报错

报错

报错

报错

  


 

 

3.%b布尔类型

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

示例:

1

2

3

4

5

6

7

8

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);

结果:

1

2

3

4

fuqinming对比结果为:false

fuqinming拼接字符,false

fuqinming拼接字符,true

fuqinming拼接字符,false

 

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


 

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

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

1

2

3

4

5

6

7

8

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);

 

得到的结果:

1

2

3

4

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,并不是四舍五入

 


 

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

使用:特殊计算

示例:

1

2

3

4

5

6

7

8

9

10

11

12

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);

    }

 

示例结果:

1

2

3

4

5

6

7

8

9

10

11

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中使用意义不大

示例:

1

2

3

4

5

6

7

8

9

10

11

12

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);

    }

}

 

示例结果:

1

2

3

4

5

6

7

8

9

10

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示例

1

2

3

4

5

6

7

8

9

10

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);

    }

  

示例结果:

1

2

3

4

5

6

7

8

9

10

11

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中基本上没什么用

示例:

 

1

2

3

4

5

6

7

8

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);

    }

  

示例结果:

1

2

3

4

5

6

7

8

9

10

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开发中可能会有用

示例:

1

2

3

4

5

6

7

8

9

10

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

2

3

4

5

6

7

8

9

10

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中较短的)

使用:特殊计算

示例:

1

2

3

4

5

6

7

8

9

10

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

2

3

4

5

6

7

8

9

10

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散列码  

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

示例:       
      

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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);

 

结果:

1

2

3

4

5

6

e27d

447a0000

3e8

183e4

4cf

4d5

 

结果小结:  

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


 

 

11.%%百分比类型

使用:格式化数

示例:  
 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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

2

3

4

5

6

%

%

%

%

1%

100.30%

 

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


 

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

使用:多用于数字格式化

 示例:       

1

2

3

4

5

6

7

8

9

10

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);


 结果: 

1

2

3

4

1000

-100

+1000.12

-1000.12

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


13.小例子格式化钱    

1

2

3

int 转换为,三位,三位,三位这样的数字

  String str=String.format("%,d",1000);

System.out.println(str);

结果 
 

1

1,000

含有浮点类型的数字转换  

1

2

3

4

5

public void main(String[] args) {

        String str=String.format("%,.2f",1000.00);

        System.out.println(str);

 

    }

得到的结果:     

1

1,000.00

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

你可能感兴趣的:(Android之使用JAVA占位符格式数据(很实用))