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