Android之使用JAVA預留位置格式資料(很實用)

來源:互聯網
上載者:User

標籤:開發   數字格式化   exception   加密解密   環境   工作   負數   比較   view   

小編雖然是學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: 拼接字元,dddd06-15 11:21:56.862 21904-21904/com.cqfmbank.fmbankmobile E/fuqinming: 拼接字元,106-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對比結果為:falsefuqinming拼接字元,falsefuqinming拼接字元,truefuqinming拼接字元,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: 拼接字元,106-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);    }

 

樣本結果:

643232Exception 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);    }}

 

樣本結果:

4462Exception 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.00100.0000001000.00000000Exception 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.f4p90x1.f4p9Exception 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+031.000000e+03Exception 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+101000.00Exception 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預留位置格式資料(很實用)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.