摘要:什么是變量用來命名一個(gè)數(shù)據(jù)的標(biāo)示符這個(gè)標(biāo)識(shí)符就是一個(gè)變量,它代表這個(gè)值是數(shù)據(jù)類型,表示是整數(shù)是一個(gè)標(biāo)識(shí)符是賦值操作符是一個(gè)數(shù)字類型的值表示該行結(jié)束基本變量類型整型如果試圖給類型的變量賦予超出其范圍的值,就會(huì)產(chǎn)生編譯錯(cuò)誤字符型類型用于存放一個(gè)
1 什么是變量
用來命名一個(gè)數(shù)據(jù)的標(biāo)示符
year這個(gè)標(biāo)識(shí)符就是一個(gè)變量,它代表1949這個(gè)值
int year = 1949;
2 基本變量類型 (1) 整型int是數(shù)據(jù)類型,表示是整數(shù)
year是一個(gè)標(biāo)識(shí)符
=是賦值操作符
1949 是一個(gè)數(shù)字類型的值
;表示該行結(jié)束
public class HelloWorld{ public static void main(String[] args){ byte b = 1; short s = 200; int i = 300; long l = 400; /*如果試圖給byte類型的變量賦予超出其范圍的值,就會(huì)產(chǎn)生編譯錯(cuò)誤*/ byte b2 = 200; } }(2) 字符型
char類型用于存放一個(gè)字符,值用單引號(hào)"表示 (雙引號(hào)表示字符串)
其長(zhǎng)度和short一樣,也是16位的
只能存放一個(gè)字符,超過一個(gè)字符就會(huì)產(chǎn)生編譯錯(cuò)誤
public class HelloWorld{ public static void main(String[] args){ char c = "中"; //char 只能存放一個(gè)字符,超過一個(gè)字符就會(huì)產(chǎn)生編譯錯(cuò)誤 char c2 = "中國(guó)"; //報(bào)錯(cuò) char c3 = "ab"; //報(bào)錯(cuò) } }(3) 浮點(diǎn)型
默認(rèn)的小數(shù)值是double類型的
所以float f=54.321會(huì)出現(xiàn)編譯錯(cuò)誤,因?yàn)?4.321的默認(rèn)類型是double,其類型長(zhǎng)度為64,超過了float的長(zhǎng)度32在數(shù)字后面加一個(gè)字母f,直接把該數(shù)字聲明成float類型,float f2 = 54.321f,這樣就不會(huì)出錯(cuò)了
public class HelloWorld{ public static void main(String[] args){ double d = 123.45; //該行會(huì)出現(xiàn)編譯錯(cuò)誤,因?yàn)?4.321是double型的 float f = 54.321; float f2 = 54.321f; } }(4) 布爾型
public class HelloWorld { public static void main(String[] args) { boolean b1 = true; boolean b2 = false; // 雖然布爾型真正存放的數(shù)據(jù)是0(false) 1(true) // 但是,不能直接使用0 1 進(jìn)行賦值 boolean b3 = 1; } }(5) String類型
3 字面值 (1) 整數(shù)字面值String類型其實(shí)并不是基本類型,但是它是如此廣泛的被使用,常常被誤以為是一種基本類型
String類型是Immutable,一旦創(chuàng)建就不能夠被改變
當(dāng)以L結(jié)尾的時(shí)候,一個(gè)整數(shù)字面值是long類型,否則就是int類型
byte,short,int和long的值都可以通過int類型的字面值來創(chuàng)建
public class HelloWorld { public static void main(String[] args) { long val = 26L; //以L結(jié)尾的字面值表示long型 int decVal = 26; //默認(rèn)就是int型 int hexVal = 0x1a; //16進(jìn)制 int oxVal = 032; //8進(jìn)制 int binVal = 0b11010; //2進(jìn)制 System.out.println(oxVal); } }(2) 浮點(diǎn)數(shù)字面值
(3) 字符和字符串字面值當(dāng)以F結(jié)尾的時(shí)候,就表示一個(gè)float類型的浮點(diǎn)數(shù),否則就是double類型
浮點(diǎn)數(shù)還可以用E或者e表示(科學(xué)計(jì)數(shù)法)
e2表示10的二次方,即100,1.234e2 = 1.234x100
字符的字面值放在單引號(hào)中
字符串的字面值放在雙引號(hào)中
表示轉(zhuǎn)義,比如需要表示制表符,回車換行,雙引號(hào)等就需要用 " 的方式進(jìn)行
public class HelloWorld { public static void main(String[] args) { String name = "蓋倫"; char a= "c"; //以下是轉(zhuǎn)義字符 char tab = " "; //制表符 char carriageReturn = " "; //回車 char newLine = " "; //換行 char doubleQuote = """; //雙引號(hào) char singleQuote = """; //單引號(hào) char backslash = ""; //反斜杠 } }4 類型轉(zhuǎn)換 (1) 轉(zhuǎn)換規(guī)則
精度高的數(shù)據(jù)類型就像容量大的杯子,可以放更大的數(shù)據(jù)
精度低的數(shù)據(jù)類型就像容量小的杯子,只能放更小的數(shù)據(jù)
小杯子往大杯子里倒東西,大杯子怎么都放得下
大杯子往小杯子里倒東西,有的時(shí)候放的下,有的時(shí)候就會(huì)有溢出
public class HelloWorld { public static void main(String[] args) { char c = "A"; short s = 80; //雖然short和char都是16位的,長(zhǎng)度是一樣的 //但是彼此之間,依然需要進(jìn)行強(qiáng)制轉(zhuǎn)換 c = (char) s; //直接進(jìn)行轉(zhuǎn)換,會(huì)出現(xiàn)編譯錯(cuò)誤 s = c; } }(2) 低精度向高精度轉(zhuǎn)換
把i的值賦給l,首先l和i彼此的類型是不一樣的,那么能否轉(zhuǎn)換就取決于彼此的精度
L的精度,比i的精度要高
低精度向高精度轉(zhuǎn)換,正常
public class HelloWorld { public static void main(String[] args) { long l = 50; int i = 50; //int比較小,要放進(jìn)比較大的long,隨便怎么樣,都放的進(jìn)去 l = i; } }(3) 高精度向低精度轉(zhuǎn)換
把int類型的數(shù)據(jù)轉(zhuǎn)成為byte類型的數(shù)據(jù),是有風(fēng)險(xiǎn)的
有的時(shí)候是可以轉(zhuǎn)換的,比如 b = i1 (i1=10);
有的時(shí)候不可以轉(zhuǎn)換 比如 b= i2 (i2=300) 因?yàn)榉挪幌铝?/p>
強(qiáng)制轉(zhuǎn)換的意思就是,轉(zhuǎn)是可以轉(zhuǎn)的,但是不對(duì)轉(zhuǎn)換之后的值負(fù)責(zé)
public class HelloWorld { public static void main(String[] args) { byte b = 5; int i1 = 10; int i2 = 300; b = (byte) i1; //因?yàn)閕1的值是在byte范圍之內(nèi),所以即便進(jìn)行強(qiáng)制轉(zhuǎn)換 //最后得到的值,也是10 System.out.println(b); //因?yàn)閕2的值是在byte范圍之外,所以就會(huì)按照byte的長(zhǎng)度進(jìn)行截取 //i2的值是300,其對(duì)應(yīng)的二進(jìn)制數(shù)是 100101100 //按照byte的長(zhǎng)度8位進(jìn)行截取后,其值為 00101100 即44 b =(byte) i2; System.out.println(b); //查看一個(gè)整數(shù)對(duì)應(yīng)的二進(jìn)制的方法: System.out.println(Integer.toBinaryString(i2)); } }5 命名規(guī)則 (1) 命名規(guī)則
(2) 使用完整的單詞命名,而非縮寫變量命名只能使用字母 數(shù)字 $ _
變量第一個(gè)字符 只能使用 字母 $ _
變量第一個(gè)字符 不能使用數(shù)字
_ 是下劃線,不是-減號(hào)或者—— 破折號(hào)
(3) 關(guān)鍵字列表 (4) 不能只使用關(guān)鍵字,但是可以包含關(guān)鍵字 (5) 中文也是可以用來命名變量的 6 作用域 (1) 字段,屬性,F(xiàn)ield在命名的時(shí)候,盡量使用完整的單詞進(jìn)行命名,比如name,moveSpeed,而不是使用縮寫 n,m
當(dāng)一個(gè)變量被聲明在類下面,變量就叫做字段或者屬性、成員變量、Field
比如變量i,就是一個(gè)屬性
從變量聲明的位置開始,整個(gè)類都可以訪問得到,所以其作用域就是從其聲明的位置開始的整個(gè)類
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 } }(2) 參數(shù)
如果一個(gè)變量,是聲明在一個(gè)方法上的,就叫做參數(shù)
參數(shù)的作用域即為該方法內(nèi)的所有代碼
其他方法不能訪問該參數(shù)
類里面也不能訪問該參數(shù)
public class HelloWorld { public void method1(int i){ //參數(shù)i的作用域即方法method1 System.out.println(i); } public void method2(){ System.out.println(i); //method2 不能訪問參數(shù)i } int j = i; //類里面也不能訪問參數(shù)i }(3) 局部變量
聲明在方法內(nèi)的變量,叫做局部變量
作用域在聲明開始的位置,到其所處于的塊結(jié)束位置
public class HelloWorld { public void method1() { int i = 5; //其作用范圍是從聲明的第4行,到其所處于的塊結(jié)束12行位置 System.out.println(i); { //子塊 System.out.println(i); //可以訪問i int j = 6; System.out.println(j); //可以訪問j } System.out.println(j); //不能訪問j,因?yàn)槠渥饔糜虻降?0行就結(jié)束了 } }7 final
(1) 在聲明的時(shí)候賦值當(dāng)一個(gè)變量被final修飾的時(shí)候,該變量只有一次賦值的機(jī)會(huì)
public class HelloWorld { public void method1() { final int i = 5; i = 10; //i在第4行已經(jīng)被賦值過了,所以這里會(huì)出現(xiàn)編譯錯(cuò)誤 } }(2) 在聲明的時(shí)候沒有賦值
public class HelloWorld { public void method1() { final int i; i = 10; //i在第4行,只是被聲明,但是沒有被賦值,所以在這里可以進(jìn)行第一次賦值 i = 11; //i在第6行已經(jīng)被賦值過了,所以這里會(huì)出現(xiàn)編譯錯(cuò)誤 } }(3) final 修飾其他
8 表達(dá)式 (1) 以;結(jié)尾的一段代碼,即為一個(gè)表達(dá)式final 除了修飾變量,還可以修飾類,修飾方法
表達(dá)式是由變量、操作符以及方法調(diào)用所構(gòu)成的結(jié)構(gòu)
public class HelloWorld { public static void main(String[] args) { //每一句話都是一個(gè)表達(dá)式 int i = 5; System.out.println(5); } }(2) ;
public class HelloWorld { public static void main(String[] args) { //一個(gè)空;也是一個(gè)表達(dá)式 ; ; ; ; } }9 塊
從{開始到對(duì)應(yīng)的}結(jié)束,即一個(gè)塊
public class HelloWorld { //類對(duì)應(yīng)的塊 public static void main(String[] args) { //主方法對(duì)應(yīng)的塊 System.out.println("abc"); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/67726.html
摘要:上下文比如,接受它傳遞的方法的參數(shù),或者接受它的值得局部變量中表達(dá)式需要類型稱為目標(biāo)類型。但局部變量必須顯示的聲明,或?qū)嶋H上就算。換句話說,表達(dá)式只能捕獲指派給它們的局部變量一次。注捕獲實(shí)例變量可以被看作捕獲最終局部變量。 由于第三章的內(nèi)容比較多,而且為了讓大家更好的了解Lambda表達(dá)式的使用,也寫了一些相關(guān)的實(shí)例,可以在Github或者碼云上拉取讀書筆記的代碼進(jìn)行參考。 類型檢查、...
摘要:選擇結(jié)構(gòu)變量和數(shù)據(jù)類型,賦值和輸出算術(shù)運(yùn)算選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)函數(shù)定義,函數(shù)調(diào)用變量作用域棧,程序運(yùn)行的基石面向?qū)ο螽惓L幚碚Z言提供的公用包上一節(jié)介紹了的算術(shù)運(yùn)算,如加減乘除等,的運(yùn)算規(guī)則跟四則運(yùn)算一樣。 選擇結(jié)構(gòu) 變量和數(shù)據(jù)類型,賦值和輸出 算術(shù)運(yùn)算 選擇結(jié)構(gòu) = 60) { System.out.println(You have passed the exam...
摘要:一旦線程執(zhí)行線程會(huì)進(jìn)入可執(zhí)行狀態(tài),它會(huì)在可執(zhí)行與執(zhí)行中兩種狀態(tài)中來來去去,同時(shí)也有另外一種狀態(tài)暫時(shí)不可執(zhí)行又稱為被堵塞狀態(tài)。當(dāng)對(duì)象有一個(gè)或多個(gè)同步化的方法時(shí),線程只有在取得對(duì)象鎖的鑰匙時(shí)才能進(jìn)入同步化的方法。 前言: 今天要分享的是關(guān)于 《Head First Java》這本書的讀后感,這本書有點(diǎn)小厚差不多有七百頁左右,所以我花了幾乎整個(gè)國(guó)慶的時(shí)間去閱讀,學(xué)習(xí)。讀完之后發(fā)現(xiàn),受益頗多。...
摘要:插入排序就這么簡(jiǎn)單從上面已經(jīng)講解了冒泡和選擇排序了,本章主要講解的是插入排序,希望大家看完能夠理解并手寫出插入排序的代碼,然后就通過面試了如果我寫得有錯(cuò)誤的地方也請(qǐng)大家在評(píng)論下指出。 插入排序就這么簡(jiǎn)單 從上面已經(jīng)講解了冒泡和選擇排序了,本章主要講解的是插入排序,希望大家看完能夠理解并手寫出插入排序的代碼,然后就通過面試了!如果我寫得有錯(cuò)誤的地方也請(qǐng)大家在評(píng)論下指出。 插入排序介紹 來...
閱讀 1990·2021-09-22 16:05
閱讀 9252·2021-09-22 15:03
閱讀 2880·2019-08-30 15:53
閱讀 1697·2019-08-29 11:15
閱讀 902·2019-08-26 13:52
閱讀 2348·2019-08-26 11:32
閱讀 1797·2019-08-26 10:38
閱讀 2561·2019-08-23 17:19