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

下面為各種傳值類型以及得到的值:

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的格式化方法可是很使用的偶,希望上面的分享對你有用偶。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM