java的print,printf,println以及輸入


java中有三種方式向控制台輸入信息,分別是print,printf,println,現在簡單介紹一下他們之間的異同。

  • printf主要是繼承了C語言的printf的一些特性,可以進行格式化輸出
  • print就是一般的標准輸出,但是不換行
  • println和print基本沒什么差別,就是最后會換行

看一下他們的效果:


 

print:

結果:

 

從結果中可以明顯看到,print輸出內容之后,不會換行,光標定到最后一個字符之后。


 

 println:

結果:

可以看到,每次執行完println之后,光標都會自動定位到下一行。

看看《Head First Java》怎樣區別它們的?

還是很好區分的。


 

如果你學過c語言,對printf應該很是了解啦,我在這里再重復一遍。

什么是格式化輸出呢?格式化輸出就是向指定的地方(如:屏幕)輸出指定格式的內容。

不同的語言對數據的格式化的表達形式稍微有點差別,java中一些數據的格式化形式:

'd' 整數 結果被格式化為十進制整數
'o' 整數 結果被格式化為八進制整數
'x', 'X' 整數 結果被格式化為十六進制整數
'e', 'E' 浮點 結果被格式化為用計算機科學記數法表示的十進制數
'f' 浮點 結果被格式化為十進制數
'g', 'G' 浮點 根據精度和舍入運算后的值,使用計算機科學記數形式或十進制格式對結果進行格式化。
'a', 'A' 浮點 結果被格式化為帶有效位數和指數的十六進制浮點數

第一種的顏色是之適用整形,紅色只適應浮點型,我為什么說這個呢?在c語言中能自動強制類型轉換,所以,類型不對,程序也能正常運行,但在java中,類型不對程序就不能運行。我會在后邊舉例的。

再給從c語言陣營的一個小提醒:float 數據后必須跟 “f”,否則java會把數據看成double類型。

舉幾個具體的例子展示一下java的各種格式化的輸出:

 1 public class Test{
 2         public static void main(String[] args) {
 3                 int i = 10;
 4                 float f = 10.0f;
 5                 double d = 10.0;
 6                 System.out.printf("%d %#o %#x \n", i, i, i);//你可以去掉#號試試效果
 7                 System.out.printf("%e %f %g %a \n", f, f, f,f);
 8                 System.out.printf("%e %f %g %a \n", d, d, d,d);
 9         }
10 }

 

看看效果:

下邊舉個錯誤的例子:

1 public class Test{
2         public static void main(String[] args) {
3                 int i = 10;
4                 System.out.printf("%e \n",i);
5         }
6 }

 

看看會出現什么錯誤:

不合法類型轉換異常,所以,寫程序時要對號入座啊。

 

print, printf, println就說這么多啦,下邊介紹一下從從控制台輸入數據的方式,以后會在IO輸入/輸出時再詳細介紹java的輸入。

輸出我們用的是System.out,那么又沒有System.in呢?哈哈,有是有,但System.in只能獲取字節,我們要想獲得數字和字符串直接調用System.in是不能實現的,如果可以,你可以自己寫個類封裝一下System.in,實現獲取數字與字符串的接口。你可能已經想到啦,java已經提供了這樣的類:Scanner,你可以通過Scanner對象獲取各種數據。

1 import java.util.Scanner;
2 public class Test{
3         public static void main(String[] args) {                
4                 Scanner s = new Scanner(System.in);//System.in作為Scanner構造函數的參數
5                 System.out.println(s.nextLine());//nextLine獲取輸入的數據直到遇見回車鍵,回車鍵也會接受
6                 System.out.println("over");    
7         }
8 }

 

一定要注意那個注釋部分回車鍵也會接受,否則會進入到一個小坑里呦,舉個例子:

import java.util.Scanner;

public class Test{
        public static void main(String[] args) {                
                Scanner s = new Scanner(System.in);//System.in作為Scanner構造函數的參數
                
                int i = s.nextInt();
                System.out.println(i);
                
                System.out.println("please input a word:");//輸入一個單詞
                String str = s.nextLine();
                System.out.println(str);
                
                System.out.println("over");
                
        }
}

 

看結果:

沒有輸入單詞程序就結束啦,為什么呢?當你輸入“100”數字時,敲回車結束,nextInt()函數不會接受回車鍵,但nextLine會接受緩存區里的數據和回車鍵,此時緩存區有個回車鍵,所以nextLine()接收了回車鍵,如果緩存區是空的會讓你輸入內容,所以,你應該明白了為什么你沒有輸入程序就結束了的原因了吧。


 

好啦,今天就寫這么多。

我很想用心打造精品,但限於知識和語言表達能力,其中必有很多不足,望大家海涵啊。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM