1. 程式人生 > >Android之使用JAVA佔位符(很實用)

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
報錯
報錯
報錯
報錯

結果小結:該方法在android中使用的實用性不高,並且該方法對傳值要求過高,顧感覺不受本人待見

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

結果小結:
tring.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開發中,很少會遇到這種特殊運算,顧運用價值並不`大

.%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佔位(實用)

小編雖然是學java出生,但工作之後就一直從事android開發,很多java基礎都忘記完了,最近一年從ES換到了AS,原來的很多習慣都收到了挑戰,比如我喜歡ES寫方法的時候先在JAVA project中寫個main方法驗證下對不對,比如資料拆分,時間對比等等,

Android Gradle manifestPlaceholders 佔位詳解

https://www.cnblogs.com/zhaohongtian/p/6808962.html   在實際專案中,AndroidManifest裡十幾個地方的值是需要動態的改變(生成apk檔案的時候).如果每次去改也可以,但是累啊,在我之前他們打包是用手動替換,但我

android textview空格佔位以及一些其他佔位彙總

  == 普通的英文半形空格   ==   ==   == no-break space (普通的英文半形空格但不換行)   == 中文全形空格 (一箇中文寬度)   ==

深入理解AndroidJava虛擬機器Dalvik

一、背景這個選題很大,但並不是一開始就有這麼高大上的追求。最初之時,只是源於對Xposed的好奇。Xposed幾乎是定製ROM的神器軟體技術架構或者說方法了。它到底是怎麼實現呢?我本意就是想搞明白Xposed的實現原理,但隨著程式碼研究的深入,我發現如果不瞭解虛擬機器的實現,

Java基礎Java 修飾

前言:Java內功心法之Java 修飾符,看完這篇你向Java大神的路上又邁出了一步(有什麼問題或者需要資料可以聯絡我的扣扣:734999078)   Java語言提供了很多修飾符,主要分為以下兩類: 訪問修飾符 非訪問修飾符 修飾符用來定義類、方法或者變數,通常放在語句的最前

jdbc使用佔位的增刪改查

package com.hanchao.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sq

java佔位使用

public static void main(String[] args) { String str=null; str=String.format("Hi,%s", "王力"); System.out.println(str); st

深入理解AndroidJava Security第一部分

深入理解Android之Java Security(第一部分)從事Android工作4年以來,只有前1年不到的時間是用C++在開發東西(主要是開發DLNA元件,目前我已將它們全部開源,參考http://

AndroidJava反射使用:阻止AlertDialog的dismiss事件

知識點: 1、利用反射,阻止AlertDialog每次的dismiss事件; 在使用AlertDialog的時候,我們設定positive,negative和neutral的button,在點選之後,即使不手動呼叫dismiss方法,系統都會自動的幫我們dismiss掉了

Androidjava執行緒池總結

執行緒池 Android培訓實戰教程裡面,耗時的網路操作,都會開子執行緒,在程式裡面直接開過多的執行緒會消耗過多的資源,在眾多的開源框架中也總能看到執行緒池的蹤影,所以執行緒池是必須要會把握的一個知識點; 執行緒執行機制 ·         開啟執行緒過多,會消耗cpu

深入理解AndroidJava Security第二部分(Final)

深入理解Android之Java Security(第二部分,最後)程式碼路徑:Security.java:libcore/lunl/src/main/java/java/security/TrustedCertificateStore.java:libcore /crypt

Java佔位替換工具類

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

開發手記--android佈局用佔位%1$s

在開發中,如果遇到如下listview的item佈局 以前總是把“物料名稱:”作為一個TextView,後面具體值作為一個TextView。這樣做使得佈局變得很繁瑣。後來發現可以使用佔位符%1$s使其變成一個TextView,使得佈局變得簡單。 1.在strings.xm

java佔位

自己在這裡總結了三種佔位符形式:看下面程式碼即可String stringFormat  = "lexical error at position %s, encountered %s, expected %s ";   String messageFormat ="lexi

Java框架Mybatis中佔位 # 和 $ 的區別是什麼?

佔位符 # 和 $ 的區別 /# 符號存在預編譯的過程,對問號賦值,防止 SQL 注入。它將傳入的資料都當成一個字串,會對自動傳入的資料加一個雙引號 /$ 沒有預編譯過程,將傳入的資料直接顯示生成 SQL 中 /$ 符號是直譯的方式,一般用在 order

java中自定義使用{0}佔位功能MessageFormat類

MessageFormat提供一種語言無關的方式來組裝訊息,它允許你在執行時刻用指定的引數來替換掉訊息字串中的一部分。你可以為MessageFormat定義一個模式,在其中你可以用佔位符來表示變化的部分,例如在下面的測試類中: package cn.lz.life.uti

Java 常用運算(3)

註意 sys 有趣的 open size 除法 如果能 都是 pla 什麽是運算符: 運算符是一種“功能”符號,用以通知 Java 進行相關的運算。譬如,我們需要將變量 age 的值設置為 20 ,這時候就需要一個“=”,告

Android學習探索Java 8 在Android 開發中的應用

相關 概念 容易 並不是 min etc bstr trac flavor 前言: Java 8推出已經將近2年多了,引入很多革命性變化,加入了函數式編程的特征,使基於行為的編程成為可能,同時減化了各種設計模式的實現方式,是Java有史以來最重要的更新。但是Androi

java面向對象學習——java中的類修飾、成員變量修飾、方法修飾

16px 實例化 同時 pan 相同 nbsp 激活 fin ati 類修飾符: public(訪問控制符)——>將一個類聲明為公共類,他可以被任何對象訪問,一個程序的主類必須是公共類。abstract——>將一個類聲明為抽象類,沒有實現的方法,需要子類提供方法

java隨機字

println package length str pre oid imp har con package Shoot; import java.util.Arrays; import java.util.Random; public class Generate {