一、使用Scanner類進行控制臺的輸入
文檔中Scanner類的定義為A simple text scanner which can parse PRimitive types and strings using regular expressions(一個可以使用正則表達式來解析基本類型和字符串的簡單文本掃描器)。
使用Scanner類,首先要導入 import.util.Scanner;
然后建立對象 Scanner scan = new Scanner(System.in);
然后就可以接收控制臺輸入的各種數據類型了。
比如:
int x = scan.nextInt();
String s = scan.next();
String s = scan.nextLine();
(next和nextLine的區別是,前者接收的字符串到第一個空格為止,后者接收的字符串可以包含空格,到回車為止)
double d = scan.nextDouble();
如果想輸入一個字符,可以利用字符串的charAt(index)方法。
例如,char ch = scan.next().charAt(0);
二、字面量
java中,字面量(literal)是指以人類語言形式出現的固定值。例如100,‘a’等。
Java中,字面量可以是任何基本數據類型。
默認情況下,整數字面量是int類型的,浮點字面量是double類型的,而這會帶來一些麻煩。
例如:
1、float f = 0.1; 這個語句是通不過編譯的,因為字面量0.1是double類型的,賦給float類型后,精度有所損失。
改為float f = (float)0.1; 即可。
2、接著上面的例子,f = f + 0.1;也是通不過編譯的,原因同上,但神奇的是 f += 0.1; 是可以通過編譯的。加完后,f仍然是float類型。
3、整數的在不超出類型表示范圍內,遵循自動類型轉換,例如byte b = 1; 和 short s = 100; 都是可以通過編譯的。
三、Java基本數據類型中需要注意的一些地方
1、boolean類型不能用0和1表示,這是不同于C語言的地方,切記,切記,切記,重要的事情說三遍。
2、字符變量賦值時的各種花式
char ch = 'A'; char ch = '啊'; char ch = '/u655f';(這里用16進制數表示一個漢字的編碼,在java的jdk下的bin目錄里,有一個叫native2ascii.exe的程序,可以顯示漢字編碼) char ch = 3; char ch = '/123';(/后跟的是一個8進制數,數值代表著ASCII碼,單引號不可省)。
3、關于無窮
Java中將正負無窮定義為浮點數,正無窮為POSITIVE_INFINITY,負無窮為NEGATIVE_INFINITY,用一個正浮點數除以0,得到正無窮,用一個負浮點數除以0,得到負無窮。如果是整數除以0,則會拋出ArithmeticException
四、常量
final int i = 123;
關于常量需要注意的是兩條編碼規范:1、常量名字一律大寫,用下劃線分割單詞。 2、常量聲明時就賦值。
五、關于自增自減符號
int i = 1;
i = (i++)+(++i); (結果為1+3=4)
i++和++i 作為獨立語句出現時,沒有任何區別,但當它們作為一個表達式的一部分時,就不同了。i++是將 i 的值作為表達式的值,然后i再增1;++i是將i先增1,然后將增1后的值作為表達式的值。
六、條件表達式的嵌套
exp1 ? exp2 : exp3;
exp1為Boolean表達式,它為true則整個表達式取exp2的值,它為false則取exp3的值。
如上,條件表達式就相當于if-else,下面用一個題目來實際應用一下條件表達式
題目:利用條件運算符的嵌套來完成此題:學習成績> =90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。
grade = x >=90 ? 'A' : (x>=60 ? 'B' : 'C')
七、Java變量的作用域
1、一對花括號就是一個代碼塊,Java允許變量在任何代碼塊中聲明。
2、一個代碼塊就是一個作用域。
3、作用域可以嵌套
1 class ScopeDemo{ 2 3 public static void main(String[] asgs){ 4 int x; 5 x = 10; 6 if(x==10){ 7 int y = 20; 8 System.out.println("x and y:"+ x + " " + y ); 9 x = y * 2; 10 }11 12 //y = 100; //error!!! y在這里是不可知的,這一點和C/C++是一致的13 x *= 2; 14 }15 };
4、內部作用域聲明的變量不能與包含它的作用域中已經聲明的變量同名。(這一點和C/C++不同)
在C++中,這樣的程序是可以編譯運行的
1 #include <iostream> 2 using namespace std; 3 int main(){ 4 int x = 10; 5 6 if(x == 10){ 7 int x = 20; 8 cout<<"x = "<<x<<endl; //輸出20 9 x = x * 2;10 }11 12 cout<<"x = "<<x<<endl; //輸出1013 return 0;14 }
新聞熱點
疑難解答