轉自:
http://www.java265.com/JavaCourse/202203/2632.html
下文筆者講述Java中最全的prinf的用法,如下所示:
printf的格式控制的完整格式:
常見的格式說明
| %:表示格式說明的起始符號 |
| -:有-表示左對齊輸出,如省略表示右對齊輸出 |
| 0:有0表示指定空位填0,如省略表示指定空位不填 |
| m.n:m指域寬,即對應的輸出項在輸出設備上所占的字符數,N指精度,用于說明輸出的實型數的小數位數,為指定n時,隱含的精度為n=6位 |
| l或h:l對整型指long型,對實型指double型,h用于將整型的格式字符修正為short型 |
格式字符
| d格式:用來輸出十進制整數,有以下幾種用法: %d:按整型資料的實際長度輸出, %md:m為指定的輸出欄位的寬度,如果資料的位數小于m,則左端補以空格,若大于m,則按實際位數輸出, %ld:輸出長整型資料 |
| o格式:以無符號八進制形式輸出整數,對長整型可以用"%lo"格式輸出,同樣也可以指定欄位寬度用“%mo”格式輸出 |
| x格式:以無符號十六進制形式輸出整數,對長整型可以用"%lx"格式輸出,同樣也可以指定欄位寬度用"%mx"格式輸出 |
| u格式:以無符號十進制形式輸出整數,對長整型可以用"%lu"格式輸出,同樣也可以指定欄位寬度用“%mu”格式輸 |
| c格式:輸出一個字符 |
| s格式:用來輸出一個串,有幾中用法 %s:例如:printf("%s", "CHINA")輸出"CHINA"字串(不包括雙引號), %ms:輸出的字串占m列,如字串本身長度大于m,則突破獲m的限制,將字串全部輸出,若串長小于m,則左補空格, %-ms:如果串長小于m,則在m列范圍內,字串向左靠,右補空格, %m.ns:輸出占m列,但只取字串中左端n個字符,這n個字符輸出在m列的右側,左補空格, %-m.ns:其中m、n含義同上,n個字符輸出在m列范圍的左側,右補空格,如果n>m,則自動取n值,即保證n個字符正常輸出 |
| f格式:用來輸出實數(包括單、雙精度),以小數形式輸出,有以下幾種用法: %f:不指定寬度,整數部分全部輸出并輸出6位小數, %m.nf:輸出共占m列,其中有n位小數,如數值寬度小于m左端補空格, %-m.nf:輸出共占n列,其中有n位小數,如數值寬度小于m右端補空格 |
| e格式:以指數形式輸出實數,可用以下形式://在實踐中沒有運行出來, %e:數字部分(又稱尾數)輸出6位小數,指數部分占5位或4位, %m.ne和%-m.ne:m、n和”-”字符含義與前相同,此處n指資料的數字部分的小數位數,m表示整個輸出資料所占的寬度 |
| g格式:自動選f格式或e格式中較短的一種輸出,且不輸出無意義的零, //在實踐中沒有運行出來, |
例:
public class printf {undefined
public static void main(String[] args) {undefined
//定義一些變數,用來“格式化”輸出,
double a=999.675;//double型無法強制型別轉換為String型,
float d=(float) a;
String b="nihao";
int c=111;
char e='.';
System.out.print("輸出字符:");
System.out.printf("%c",e);//"%c"輸出一個字符,
System.out.println();
//“%”表示進行格式化輸出,“%”之后的內容為格式化的定義,
System.out.println("單精度浮點型:"+d);/*單精度浮點型占32位存盤空間,在一些
處理器上比雙精度更快而且只占用雙精度一般的空間,但是當值很大或很小的時候,它
將變得不準確*/
System.out.println("雙精度型:"+a);/*雙精度型占64位存盤空間,在一些現代化的
被優化用來進行高速數學計算的處理器上比單精度的快,當需要保持多次反復迭代計算
的準確性時,或在操作值很大的數字時,雙精度是最好的選擇,*/
System.out.print("格式化輸出浮點數:");
System.out.printf("%f",a);//格式化輸出浮點數,
System.out.println();
System.out.print("輸出長度為9,小數點后兩位的值:");
System.out.printf("%9.2f",a);/*“9.2”中的9表示輸出的長度,2表示小數點后的
位數,其中標點符號也占一位*/
System.out.println();
System.out.print("輸出長度為9,小數點后兩位的值:");
System.out.printf("%9.2f000000",a);//指定位置填0
System.out.println();
System.out.print("輸出長度為9,小數點后兩位,帶正負號的值:");
System.out.printf("%+9.2f",a);//“+”表示輸出的數帶正負號,
System.out.println();
System.out.print("輸出長度為9,小數點后兩位,左對齊(默認為右對齊)的值:");
System.out.printf("%-9.2f",a);//“-”表示輸出的數左對齊(默認為右對齊),
System.out.println();
System.out.print("輸出長度為9,小數點后兩位,帶符號,左對齊(默認為右對齊)的值:");
System.out.printf("%+-9.2f",a);//“+-”表示輸出的數左對齊(默認為右對齊),
//不能用指數形式輸出
System.out.println();
System.out.print("輸出十進制整數:");
System.out.printf("%d",c);//“%d”表示輸出十進制整數,
System.out.println();
System.out.print("輸出寬度為10的十進制整數:");
System.out.printf("%10d",c);/*“%md”表示輸出寬度為m的十進制整數,如果資料
的位數小于m,則左端補以空格,若大于m,則按實際位數輸出,其他進制數也可以這樣*/
System.out.println();
System.out.print("輸出長整型資料:");
System.out.printf("%1d",c);//“%1d”表示輸出長整型資料,前面的是數字1,
System.out.println();
System.out.print("輸出八進制整數:");
System.out.printf("%o",c);//“%o”表示輸出八進制整數,//"%u"輸出十進制形式無法使用,
System.out.println();
System.out.print("輸出帶有八進制標志的整數:");
System.out.printf("%#o",c);//“%#o”表示輸出帶有八進制標志的整數,標志是數字0
System.out.println();
System.out.print("輸出十六進制整數:");
System.out.printf("%x",c);//“%x”表示輸出八進制整數,
System.out.println();
System.out.print("輸出帶有十六進制標志的整數:");
System.out.printf("%#x",c);//“%#x”表示輸出帶有十六進制標志的整數標志,標志第一位是數字0,
//printf不能用于輸出二進制,可以用如下方式輸出二進制
System.out.println("十進制轉換為二進制:"+Integer.toBinaryString(c));
//這種方法也可以輸出八進制,十六進制,分別如下,但不可以將其他進制轉換為十進制
System.out.println("十進制轉換為八進制:"+Integer.toOctalString(c));
System.out.println("十進制轉換為十六進制:"+Integer.toHexString(c));
//下面的方法只適用于將其他進制轉換為十進制
System.out.println("輸出一個二進制數的十進制表示:"+Integer.valueOf("111001",2));
System.out.println("輸出一個八進制數的十進制表示:"+Integer.valueOf("111001",8));
System.out.println("輸出一個十六進制數的十進制表示:"+Integer.valueOf("111001",16));
System.out.print("輸出字串:");
System.out.printf("%s",b);//"%s"表示輸出字串,當輸出的為字串時,“%s”可以省去,
System.out.println();
System.out.print("輸出占m列的字串:");
System.out.printf("%13s",b);/*"%ms"表示輸出的字串占m列,如字串本身長度大于m,則輸出
原字串;如果串長小與m,則左補空格*/
System.out.println();
System.out.print("輸出占m列的右對齊的字串:");
System.out.printf("%-13s",b);/*-表示字串右對齊*/
System.out.println();
System.out.print("輸出占m列,但只取字串中左端n個字符的的字串:");
System.out.printf("%13.3s",b);/*"%m.n"表示輸出占m列,但只取字串中左端n個字符,右對齊*/
System.out.println();
System.out.print("輸出占m列,但只取字串中左端n個字符的右對齊的字串:");
System.out.printf("%-13.3s",b);/*-表示字串右對齊*/
System.out.println();
System.out.printf("輸出一個浮點數: %f,一個字串: %s,一個整數: %d",a,b,c);
//可以輸出多個變數,但一定要注意順序不要漏掉逗號
System.out.println();
System.out.printf("字串:%2$s,%3$d的十六進制數:%3$#x,雙精度%1$1f的單精度浮點型表示:%1$f",a,b,c);
//雙精度的格式輸出為數字1加f,"X$表示第幾個變數,指的是這一行后面給出的變數的第幾個,
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/500175.html
標籤:其他
上一篇:C++多型
