1.java基本語法
一.資料和資料型別
(一)識別符號:給變數、常量、方法類、物件等命名的符號
(二)變數和常量
1.變數:值在執行時可以改變的量;
每個變數屬於特定的資料型別,使用前要先宣告,然後賦值,初始化或賦值後才能使用。
2.常量:
(1)直接量/字面量:通過原始碼直接給出的量,用文字串表示,可以區分不同型別。
(2)常量:在程式執行期間保持不變的量
final定義常量----用符號表示常量
final double PI = 3.14159;
(三)資料型別
1.大綱
(1)基本資料型別
①數值類:包括整數型別(byte,short,int,long)和浮點型別(float,double)
②字元型:char
③希爾型:boolean
(2)引用資料型別
①類:class
②介面:interface
③陣列:[]
注意:
(1)java是一種“強型別”語言,所有的變數必須先聲明後使用;指定型別的變數只能接受型別與之匹配的值。
(2)在編譯時進行更嚴格的語法檢查,減少程式設計錯誤。
2.詳細說明
(1)整數型別
特點:無小數部分;允許負數
byte、short、int、long;
沒有unsigned型別
整數佔用的儲存空間與程式碼所在機器無關
直接給出的一個整數值預設是int型別
1)整數常量賦值給byte或short型別的變數
①系統會把這個整數值當成byte或short來處理;例如byte i = 10;
②超出byte和short範圍,報錯
2)如果使用一個超出int型別的整數值
①該整數不會被當作long型別處理,報錯
②若被當作long型別處理,加L作為字尾
public static void main(String[] args) { int i = 10; int j = 100000000000000000000;//過大的整數 int j2 = 1000000000000000000000L;//錯誤:不可相容的型別 //從long轉換到int可能會有損失 long k = 11; long k = 111111111111111111111;//過大的整數 byte b1 = 100; byte b2 = 1000;//錯誤:不相容的型別; //從int轉換到byte可能會有損失 }
(2)字元型別
用於單個的字元
用 ‘ ’ 表示字元常量
char c1 = 'a'; char c2 = '人';
(3)浮點型別
java中的實數型別
-float(4位元組、單精度)
-double(8位元組,雙精度)
有個頂的表數範圍和欄位長度,欄位長度、表數範圍都與機器無關
兩種表示方法:
①十進位制形式
②科學計數法
Java中的浮點型別常量值預設為double型,若宣告一個float型,需要在數字後面加上f或F。double a = 12.3;float f = 12.3f;
public static void main(String[] args) { //float f = 123.4;//不相容的型別,預設是double float f = 123.4f; //double d = 1234567890222222;//不加小數點異常,預設是整數 double d = 1234567890222222.0; float f1 = 1234.5f; float f2 = 1.2345e+3f;//科學計數法 }
(3)浮點型別
-float的範圍:2^-149~2^128 -1
-double的範圍:2^-1074~2^1074-1
-浮點數無法進行精度比較
(4)布林型別
boolean型別,表示邏輯上的“真”和“假”
取值:true和false
-只能取true和false,不能用0或非零整數來代替。
-不能與其他基本資料型別的值互相轉換
注意:如下兩個條件判斷,引數必須是布林型別,不能是整型
if() while()
(5)基本型別資料之間的轉換
1)型別的自動轉換(相容轉換)
-表數範圍大的型別向下兼容表數範圍小的型別
-把一個表數範圍小的變數或數值直接賦值給另一個表數範圍大的變數時,可進行型別的自動轉換。
2)強制型別轉換
double pi = 3.1415926; int p = (int)pi;
注意:表數範圍大的型別轉換成表數範圍小的型別時,要加強制轉換符,但可能降低精度或造成溢位。
3)多種型別混合運算:
①系統自動將所有型別轉換成表數範圍最大的型別,再進行計算;
②byte、short、char、互相之間不轉換,用時全部自動轉換成int型別。
思考:函式過載與型別自動轉換
import java.util.*; import java.io.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int m1 = in.nextInt(); double m2 = in.nextDouble(); System.out.println((test1(m1))); System.out.println(test1((m2))); } public static double test1(double m) { return m; } public static int test1(int m) { return m; } }
二.運算子
1.運算子是用來完成一個動作(資料的運算、賦值、比較等)的特定語言的語法記號。
(1)賦值運算子:=、+=、-=、*=、/=、%=
(2) 增減運算子:++、--
(3)算數運算子:+、-、*、/、%
(4)比較運算子:==、!=、>、>=、<、<=、返回boolean
(5)邏輯運算子:&&、||、!、^、&、|
(6)位運算子:&、|、~、^、>>、<<
(7)三目條件運算子:x?y:z
2.運算子的優先順序
+:除了作為加號外,還可以作為字串連線符。
三.流程控制
任何程式流程均可以用順序結構、選擇結構、迴圈結構這三種基本控制結構實現
-順序結構
-兩種選擇語句:if、switch
-迴圈語句:while迴圈、do_while迴圈、for迴圈
四、方法(函式)
返回值型別 函式名(形參){……}
-形參和實參的含義,匹配(型別、順序、數量)
-必須返回和返回值型別一致的資料
-沒有返回值,則函式的返回值型別應為void
-呼叫方法:
物件名.方法(實參)
類名.靜態方法(實參)
-Java函式呼叫的引數傳遞形式
值傳遞
引用傳遞(非物件本身)
五、Scanner類
public static void main(String[] args) { Scanner s = new Scanner(System.in); boolean b1 = s.hasNextInt();//是否下一個是整數 int i = s.nextInt(); boolean b2 = s.hasNext();//是否還有字串,忽略空格 String str1 = s.next();//讀取字串,去掉開頭空格,遇空格結束 String str2 = s.nextLine();//完整讀一行,結果為字串 }