局部變量:不是聲明在類體括號里面的變量
(1)必須要先賦值,后使用,否則通不過編譯,局部變量沒有默認初始化值
(2)作用范圍:定義開始到定義它的代碼塊結束
(3)同一范圍內,不允許2個局部變量命名沖突
參數傳遞時,簡單類型進行值轉遞 (參數進行傳遞時都會先去棧中生成一個副本的,使用結束后釋放)
自動類型提升:
byte a = 1;
byte b = 2;
a = a+b; //編譯出錯自動類型提升成int
a += b; //自加沒有自動類型提升問題
類型自動提升規(guī)則:
a和b作某種運算
a和b中有double,結果就是double
a和b中有float,結果就是float
a和b中有l(wèi)ong,結果就是long
除此之外,結果都是int
把高字節(jié)轉成低字節(jié),需要作強制類型轉換. byte c=(byte)a+b;
移位運算符:效率最高
>> 有符號右移,補符號位
移負數位,則將該數值加32后再進行移位
數值的2進制是按照補碼保存的
>>> 右移后高位都補0
邏輯運算符:
&/|也可以作為邏輯運算符
&& 先判斷前面一個條件,如果為假,則不用計算后一個條件
|| 先判斷前面一個條件,如果為真,則不用計算后一個條件
" + "運算符:
兩個操作的對象是數值時,是加法
如果有一個是字符串時,則是字符串的連接
流程控制語句:
同Core C++
switch中的變量類型只能是byte、 short、int、char四種類型
數組:
聲明數組:
數組能以下列形式聲明:
類型[] array;
類型 array[];
注:
JAVA中推薦用:類型[] array;
一個數組是一個對象
聲明一個數組沒有創(chuàng)建一個對象
聲明時不用指定長度
創(chuàng)建數組:
創(chuàng)建基本數據類型數組:int[] i = new int[2];
創(chuàng)建引用數據類型數組:Student[] s = new Student[100];
數組創(chuàng)建后其中的元素有初始值
類型 黙認值
byte 0
short 0
int 0
long 0l
float 0.0f
double 0.0d
char \u0000
boolean false
reference types null
注:
創(chuàng)建時一定要指定長度
int[] i2=new int[]; //error
初始化數組:
聲明、創(chuàng)建、初始化分開:
int[] i; //定義數組
i = new int[2]; //分配空間
i[0] = 0; //初始化
i[1] = 1;
聲明、創(chuàng)建、初始化在同一時間 :
int[] i = {0,1}; //顯示初始化 {}中有幾個值,則數組長度為幾
Student[] s = {new Student(),new Student()};
注: int[] i=new int[]{1,2,3}; //后面[]中不可以寫數值
int[] i1=new int[3]{1,2,3}; //error
二維數組:(其實是一個一維數組,它的每一個元素又是一個一維數組)
int[][] i1 = new int[2][3];
int[][] i4 = {{1,1,1},{2,2,2},{3,3,3}};
int[][] i3 = new int[][3]; //不允許高維沒分配空間而先給低維分配空間
int[][] i2 = new int[2][];
i2[0] = new int[2];
i2[1] = new int[3];
數組長度:
數組的屬性length
數組長度一旦確定,不可改變
int[] i = new int[5]; 則i.length= 5
數組拷貝:
系統類System提供的
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src: 源數組
srcPos: 從源數組哪個位置開始拷貝(位置指的是元素的下標)
dest: 目標數組
destPos: 拷貝的元素放到目標數組的起始位置
length: 拷貝多少個
數組排序:
自己實現一個排序方法來進行排序
或者調用java.util.Arrays.sort(Object o)