用來命名一個數據的標示符java
- year這個標識符就是一個變量,它表明1949這個值
int year = 1949;
- int是數據類型,表示是整數
- year是一個標識符
- =是賦值操做符
- 1949 是一個數字類型的值
- ;表示該行結束
public class HelloWorld{ public static void main(String[] args){ byte b = 1; short s = 200; int i = 300; long l = 400; /*若是試圖給byte類型的變量賦予超出其範圍的值,就會產生編譯錯誤*/ byte b2 = 200; } }
- char類型用於存放一個字符,值用單引號'表示 (雙引號表示字符串)
- 其長度和short同樣,也是16位的
- 只能存放一個字符,超過一個字符就會產生編譯錯誤
public class HelloWorld{ public static void main(String[] args){ char c = '中'; //char 只能存放一個字符,超過一個字符就會產生編譯錯誤 char c2 = '中國'; //報錯 char c3 = 'ab'; //報錯 } }
- 默認的小數值是double類型的
因此float f=54.321
會出現編譯錯誤,由於54.321的默認類型是double
,其類型長度爲64,超過了float
的長度32- 在數字後面加一個字母
f
,直接把該數字聲明成float
類型,float f2 = 54.321f
,這樣就不會出錯了
public class HelloWorld{ public static void main(String[] args){ double d = 123.45; //該行會出現編譯錯誤,由於54.321是double型的 float f = 54.321; float f2 = 54.321f; } }
public class HelloWorld { public static void main(String[] args) { boolean b1 = true; boolean b2 = false; // 雖然布爾型真正存放的數據是0(false) 1(true) // 可是,不能直接使用0 1 進行賦值 boolean b3 = 1; } }
- String類型其實並不是基本類型,可是它是如此普遍的被使用,經常被誤覺得是一種基本類型
- String類型是Immutable,一旦建立就不可以被改變
- 當以L結尾的時候,一個整數字面值是long類型,不然就是int類型
- byte,short,int和long的值均可以經過int類型的字面值來建立
public class HelloWorld { public static void main(String[] args) { long val = 26L; //以L結尾的字面值表示long型 int decVal = 26; //默認就是int型 int hexVal = 0x1a; //16進制 int oxVal = 032; //8進制 int binVal = 0b11010; //2進制 System.out.println(oxVal); } }
- 當以F結尾的時候,就表示一個float類型的浮點數,不然就是double類型
- 浮點數還能夠用E或者e表示(科學計數法)
e2表示10的二次方,即100,1.234e2 = 1.234x100
- 字符的字面值放在單引號中
- 字符串的字面值放在雙引號中
- 表示轉義,好比須要表示製表符,回車換行,雙引號等就須要用 \t \r \n \" 的方式進行
public class HelloWorld { public static void main(String[] args) { String name = "蓋倫"; char a= 'c'; //如下是轉義字符 char tab = '\t'; //製表符 char carriageReturn = '\r'; //回車 char newLine = '\n'; //換行 char doubleQuote = '\"'; //雙引號 char singleQuote = '\''; //單引號 char backslash = '\\'; //反斜槓 } }
- 精度高的數據類型就像容量大的杯子,能夠放更大的數據
- 精度低的數據類型就像容量小的杯子,只能放更小的數據
- 小杯子往大杯子裏倒東西,大杯子怎麼都放得下
- 大杯子往小杯子裏倒東西,有的時候放的下,有的時候就會有溢出
public class HelloWorld { public static void main(String[] args) { char c = 'A'; short s = 80; //雖然short和char都是16位的,長度是同樣的 //可是彼此之間,依然須要進行強制轉換 c = (char) s; //直接進行轉換,會出現編譯錯誤 s = c; } }
- 把i的值賦給l,首先l和i彼此的類型是不同的,那麼可否轉換就取決於彼此的精度
- L的精度,比i的精度要高
- 低精度向高精度轉換,正常
public class HelloWorld { public static void main(String[] args) { long l = 50; int i = 50; //int比較小,要放進比較大的long,隨便怎麼樣,都放的進去 l = i; } }
把int類型的數據轉成爲byte類型的數據,是有風險的spa
- 有的時候是能夠轉換的,好比 b = i1 (i1=10);
- 有的時候不能夠轉換 好比 b= i2 (i2=300) 由於放不下了
強制轉換的意思就是,轉是能夠轉的,可是不對轉換以後的值負責code
public class HelloWorld { public static void main(String[] args) { byte b = 5; int i1 = 10; int i2 = 300; b = (byte) i1; //由於i1的值是在byte範圍以內,因此即使進行強制轉換 //最後獲得的值,也是10 System.out.println(b); //由於i2的值是在byte範圍以外,因此就會按照byte的長度進行截取 //i2的值是300,其對應的二進制數是 100101100 //按照byte的長度8位進行截取後,其值爲 00101100 即44 b =(byte) i2; System.out.println(b); //查看一個整數對應的二進制的方法: System.out.println(Integer.toBinaryString(i2)); } }
- 變量命名只能使用字母 數字 $ _
- 變量第一個字符 只能使用 字母 $ _
- 變量第一個字符 不能使用數字
- _ 是下劃線,不是-減號或者—— 破折號
在命名的時候,儘可能使用完整的單詞進行命名,好比name,moveSpeed,而不是使用縮寫 n,mblog
當一個變量被聲明在類下面,變量就叫作字段或者屬性、成員變量、Fieldip
- 好比變量i,就是一個屬性
從變量聲明的位置開始,整個類均可以訪問獲得,因此其做用域就是從其聲明的位置開始的整個類作用域
public class HelloWorld { int i = 1; int j = i; //其餘的屬性能夠訪問i public void method1(){ System.out.println(i); //方法1裏能夠訪問i } public void method2(){ System.out.println(i); //方法2裏能夠訪問i } }
若是一個變量,是聲明在一個方法上的,就叫作參數字符串
- 參數的做用域即爲該方法內的全部代碼
- 其餘方法不能訪問該參數
- 類裏面也不能訪問該參數
public class HelloWorld { public void method1(int i){ //參數i的做用域即方法method1 System.out.println(i); } public void method2(){ System.out.println(i); //method2 不能訪問參數i } int j = i; //類裏面也不能訪問參數i }
- 聲明在方法內的變量,叫作局部變量
- 做用域在聲明開始的位置,到其所處於的塊結束位置
public class HelloWorld { public void method1() { int i = 5; //其做用範圍是從聲明的第4行,到其所處於的塊結束12行位置 System.out.println(i); { //子塊 System.out.println(i); //能夠訪問i int j = 6; System.out.println(j); //能夠訪問j } System.out.println(j); //不能訪問j,由於其做用域到第10行就結束了 } }
當一個變量被final修飾的時候,該變量只有一次賦值的機會it
public class HelloWorld { public void method1() { final int i = 5; i = 10; //i在第4行已經被賦值過了,因此這裏會出現編譯錯誤 } }
public class HelloWorld { public void method1() { final int i; i = 10; //i在第4行,只是被聲明,可是沒有被賦值,因此在這裏能夠進行第一次賦值 i = 11; //i在第6行已經被賦值過了,因此這裏會出現編譯錯誤 } }
final 除了修飾變量,還能夠修飾類,修飾方法編譯
表達式是由變量、操做符以及方法調用所構成的結構table
public class HelloWorld { public static void main(String[] args) { //每一句話都是一個表達式 int i = 5; System.out.println(5); } }
public class HelloWorld { public static void main(String[] args) { //一個空;也是一個表達式 ; ; ; ; } }
從{開始到對應的}結束,即一個塊
public class HelloWorld { //類對應的塊 public static void main(String[] args) { //主方法對應的塊 System.out.println("abc"); } }