多態 多態的定義 多態按字面的意思就是多種形態。當類之間存在層次結構,並且類之間是通過繼承關聯時,就會用到多態。C++ 多態意味著調用成員函數時,會根據調用函數的對象的類型來執行不同的函數。 簡單來說就是完成某個行為,不同的對象會產生不同的結果 多態的構成條件 1. 必須通過基類的指針或者引用調用虛 ...
轉自:
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$表示第幾個變數,指的是這一行後面給出的變數的第幾個。 } }