poker java idea_JavaBasic学习笔记
DAY 1 概述
Java語言版本————JDK與openJDK
Java SDK最早叫Java Software Develop Kit,后來道改名為JDK,即Java Develop Kit。JDK作為Java開發(fā)工具包,主要用于構(gòu)建在Java平臺(tái)上運(yùn)行的應(yīng)用程序、回Applet 和組件等。
其中包括了Java編譯器、JVM、大量的Java工具以及Java基礎(chǔ)度API里面是Java類庫和Java的語言規(guī)范,同時(shí)Java語言的任何改進(jìn)都應(yīng)當(dāng)加到其中,作為后續(xù)版本發(fā)知布。(JDK,JRE和JVM:https://www.cnblogs.com/mambahyw/p/7978832.html)
Java語言特點(diǎn)
編譯型語言:用這種語言寫出代碼首先通過編譯器的編譯,全部轉(zhuǎn)化成目標(biāo)代碼(在win上,就是二進(jìn)制可執(zhí)行文件.exe),然后依次在操作系統(tǒng)中運(yùn)行。
解釋型語言:轉(zhuǎn)化一句,執(zhí)行一句。
從?.java--->.class--->java虛擬機(jī) 這個(gè)角度來講,Java是解釋型語言
跨平臺(tái)——通過Java語言編寫的應(yīng)用程序在不同的系統(tǒng)平臺(tái)上都可以運(yùn)行——實(shí)現(xiàn)原理:Java程序在jvm上運(yùn)行,而非直接運(yùn)行于操作系統(tǒng)
面向?qū)ο?/p>
健壯
分布式
多線程
解釋型
動(dòng)態(tài)
高效
結(jié)構(gòu)中立(字節(jié)碼)
開源
(Java核心技術(shù)I p2-6)
Java運(yùn)行原理
Path環(huán)境變量與Classpath
path環(huán)境變量:告訴操作系統(tǒng)到哪里去找javac可執(zhí)行程序配置
classpath環(huán)境變量:給JVM用,告訴JVM到哪里去加載字節(jié)碼文件配置
配置path環(huán)境變量的官方推薦方式:
1.JAVA_HOMEH環(huán)境變量:F:\java\bin——根據(jù)自己的javac位置
2.配置path環(huán)境變量:%JAVA_HOME%\bin
在Java語言中,一個(gè)Java文件中只能定義一個(gè)被public修飾的類,且被public修飾的類的類名,必須和Java文件的文件名相同
DAY2
IDEA的基本使用
1.在idea的一個(gè)窗口,一次只能打開一個(gè)project。
2.idea中module就相當(dāng)于一個(gè)項(xiàng)目——類比為eclipse里的workspace,一個(gè)project中可以有多個(gè)module,多個(gè)module之間相互獨(dú)立
關(guān)鍵字(變量等起名不可用的)
被java語言賦予了特殊含義的單詞(目前有且僅有50個(gè))
特點(diǎn):組成關(guān)鍵字的單詞全部小寫
注意事項(xiàng):在高級(jí)的編譯器或?qū)iT的開發(fā)工具中,關(guān)鍵字會(huì)有高亮效果,goto和const作為保留字符存在,目前并不使用
標(biāo)識(shí)符(自己可以起的名字)
就是給類、接口、方法、變量等起名字時(shí)使用的字符序列
組成規(guī)則:a.英文字母大小寫
b.數(shù)字字符
c.$和_
注意事項(xiàng):不能以數(shù)字開頭,不能是java中的關(guān)鍵字(保留字),區(qū)分大小寫
常見命名規(guī)則:駝峰命名
包命名:單級(jí)和多級(jí)包名,在java語言中,以包來組織java中的l類
為了保證包名的唯一,以域名(唯一)反轉(zhuǎn)的方式來命名包
單級(jí):一個(gè)全部小寫的單詞
多級(jí):以域名反轉(zhuǎn)的 方式來命名,單詞全部小寫,單詞之間以 . 來分隔,例如com.baidu.name
類的接口命名:
單個(gè):首字母大寫,其余字母全部小寫
多個(gè)單詞:每個(gè)單詞首字母大寫,其余字母全部小寫
變量和方法的命名:
單個(gè):所有字母小寫
多個(gè)單詞:第一個(gè)單詞首字母小寫,第二個(gè)單詞開始,每個(gè)字母首字母大寫? intValue
常量的命名:所有字母全部大寫
單個(gè):單詞的所有字母全部大寫。例如:MAX
多個(gè)單詞:每個(gè)單詞全部大寫,單詞之間以下劃線分隔? 例如MAX_AGE
在實(shí)際開發(fā)當(dāng)中,命名遵循的一個(gè)核心原則是見名知意
注釋
單行注釋? ?//
多行注釋? /* 注釋內(nèi)容 */
文檔注釋 /** 文檔注釋內(nèi)容 */
常量、進(jìn)制、進(jìn)制轉(zhuǎn)化、有符號(hào)表示
字面值常量:字面值常量,字符串常量,小數(shù)常量,字符常量,布爾常量,空常量(NULL)
自定義常量
變量
變量定義的格式:數(shù)據(jù)類型 變量名 = 變量值
類型
占用存儲(chǔ)空間
表數(shù)范圍
byte
1字節(jié)
-128~ 127
short
2字節(jié)
-2^15~2^15-1
int
4字節(jié)
-2^31~2^31-1
long
8字節(jié)
-2^63~2^63-1
float
4字節(jié)
-3.403E38~3.403E38
double
8字節(jié)
-1.798E308~1.798E308
不同類型之間的轉(zhuǎn)化規(guī)則:
Boolean類型的變量不能直接轉(zhuǎn)化為其他類型的值
byte,short,char相互之間不能轉(zhuǎn)化 ——>int——>long——>float——>double
byte,short,char相互之間不轉(zhuǎn)換,他們參與運(yùn)算首先轉(zhuǎn)換為int類型
變量的數(shù)據(jù)類型和類型轉(zhuǎn)化
目標(biāo)類型 變量名=(目標(biāo)類型)(被轉(zhuǎn)換的數(shù)據(jù));
字符串的拼接
操作數(shù)1 + 操作數(shù)2? ? ? ? 兩個(gè)操作數(shù)中,只要至少有一個(gè)是字符串, +操作執(zhí)行的就是字符串拼接
除法運(yùn)算
當(dāng)參與除法運(yùn)算的除數(shù)與被除數(shù),他們都是整數(shù)的時(shí)候,此時(shí)除法運(yùn)算的結(jié)果,會(huì)丟棄小數(shù)部分,只保留整數(shù)部分
邏輯運(yùn)算符
位運(yùn)算符
位運(yùn)算符:針對變量的二進(jìn)制位來進(jìn)行運(yùn)算
運(yùn)行其他人的項(xiàng)目——>new一個(gè)directory(在項(xiàng)目下新建一個(gè)項(xiàng)目文件夾)命名為out——>設(shè)置一下編譯輸出路徑project structure(若沒有,自己新建一個(gè)編譯輸出目錄即可)——>將project complier output設(shè)置為自己新建的輸出目錄即可
Scanner in中 int? 和boolean都以空格作為分隔符,string以回車作為分隔符
DAY 4
順序結(jié)構(gòu)
選擇結(jié)構(gòu)
if語句
與三目運(yùn)算符的一些區(qū)別:
對于三目運(yùn)算符,結(jié)果一定是一個(gè)值,例如a>b?1:2? 而不能是a>b?System.out.print(a):System.out.print(b)
用if語句實(shí)現(xiàn)把獲取兩個(gè)數(shù)據(jù)較大的值給輸出出來,這個(gè)通過三元運(yùn)算符就沒辦法寫了。
switch語句
switch語句表達(dá)式的取值:byte,short,int,char
case后面的值,不能相同,但必須得是常量值,必須和表達(dá)式值的類型相同
break可以省略,但是省略之后會(huì)出現(xiàn)case穿越
default可以省略,一般不建議省略(根據(jù)開發(fā)的實(shí)際情況決定),且不一定要放在最后,如果不在最后,仍然會(huì)發(fā)生case穿越
DAY 5
循環(huán)結(jié)構(gòu)
for循環(huán)
while循環(huán)
do-while循環(huán):與while相比不管是否滿足循環(huán)條件,都首先執(zhí)行一次循環(huán)體中的代碼
for(;;)---while(true)死循環(huán)并非不能使用(在多線程時(shí)可以)
for-each循環(huán)? for(變量類型 變量名:數(shù)組)————從頭到尾的遍歷數(shù)組
跳轉(zhuǎn)控制語句
break:在for循環(huán)中只是停止當(dāng)前層的循環(huán),外層循環(huán)依然可以執(zhí)行
想要停止整個(gè)循環(huán),在最外層設(shè)置一個(gè)標(biāo)簽outer
outer:for(int i=0; i<3; i++)
{for(int j=0; j<3; j++)
{if(j==2)
{breakouter;
}
}
}
continue:退出循環(huán)的一次迭代過程,必須配合if使用
return:不是為了跳出循環(huán)體,更常用的功能是結(jié)束一個(gè)方法(函數(shù)),也就是退出一個(gè)方法,跳轉(zhuǎn)到上層調(diào)用的方法
方法
格式說明:
修飾符:現(xiàn)在先認(rèn)為是public static
返回值類型:方法體中的代碼執(zhí)行結(jié)果的數(shù)據(jù)類型
方法名:標(biāo)識(shí)符
參數(shù):類比數(shù)學(xué)中函數(shù)的自變量z = f(x,y)
方法體:實(shí)現(xiàn)具體功能的語句結(jié)合
return:跳轉(zhuǎn)控制關(guān)鍵字
返回值:方法執(zhí)行的到的最終結(jié)果
沒有返回值的方法,可以有return,也可以沒有return
void
調(diào)用沒有返回值的方法,只能使用直接調(diào)用
方法調(diào)用的注意事項(xiàng)
方法不調(diào)用不執(zhí)行
方法與方法是平級(jí)關(guān)系,不能嵌套定義
方法定義的時(shí)候參數(shù)之間用逗號(hào)隔開
方法調(diào)用的時(shí)候
方法重載(over load)
在同一個(gè)類中,允許存在一個(gè)以上的同名方法
只要他們的參數(shù)個(gè)數(shù)不同
參數(shù)類型不同
參數(shù)順序不同:不是指形式參數(shù)的變量名順序,而是指形式參數(shù)的類型順序
public static int add(double a, intb){
}public static int add(int a , doubleb){
}
而非public static int add(double b, int a){
}
所以,編譯器區(qū)分方法的是通過區(qū)分方法簽名(方法名+參數(shù)列表)
但是編譯器并不會(huì)考慮方法的返回值
public static int add(int x,inty) {
}public static double add(int x, inty){
}
直接調(diào)用add(a,b),沒用調(diào)用double和int,編譯器自然無法區(qū)分。因此再次印證了編譯器只通過方法簽名來區(qū)分,而不能通過返回值類型來區(qū)分
比較兩個(gè)數(shù)據(jù)是否相等
編譯器默認(rèn)的方向是小范圍轉(zhuǎn)大范圍,重載的時(shí)候是尋找最接近的數(shù)據(jù)類型。
DAY6
數(shù)組
相同數(shù)據(jù)類型的數(shù)據(jù)元素的有序集合(容器)
同一數(shù)組的單元都是物理緊鄰
訪問數(shù)組中任意元素,所用時(shí)間幾乎相同(而數(shù)組的元素類型相同,也是為了保證隨機(jī)存取)
數(shù)組當(dāng)中可以存放:1.基本類型數(shù)據(jù) byte,short char int double float
2.引用類型數(shù)據(jù)? 對象
Java中的數(shù)組必須先初始化,然后才能使用 ——所謂的初始化,就是為數(shù)組中的元素分配內(nèi)存空間,并為每個(gè)數(shù)組元素賦初值
數(shù)組初始化的方式:動(dòng)態(tài)初始化:初始化時(shí)程序只指定數(shù)組的長度,由jvm為數(shù)組分配初始值
靜態(tài)初始化:初始化時(shí)指定每個(gè)數(shù)組元素的初值,由系統(tǒng)決定數(shù)組長度
靜態(tài)初始化:
int[] a = new int[]{1,2,3}
簡化寫法:int[] a = {1,2,3}//只有在聲明數(shù)組的時(shí)候才能使用,聲明好的數(shù)組變量不能使用
JVM虛擬機(jī)內(nèi)存模型:一個(gè)Java程序在虛擬機(jī)運(yùn)行的過程中,在內(nèi)存中需要保存很多種類型的數(shù)據(jù)。比如說局部變量,數(shù)組等。不同類型的數(shù)據(jù),其使用方式和生命周期,都不相同。為了更好的管理這些不同類型的數(shù)據(jù),jvm將自己的內(nèi)存空間劃分為不同的內(nèi)存區(qū)域,各個(gè)區(qū)域針對不同類型的數(shù)據(jù),其內(nèi)存空間有不同的管理方式。
棧(stack):存儲(chǔ)局部變量
堆(heap):存儲(chǔ)new出來的東西
方法區(qū):
本地方法棧(系統(tǒng)相關(guān)):比如說c/c++
程序計(jì)數(shù)器:指明代碼執(zhí)行的位置
棧上的變量
堆上的變量
變量類型
局部變量
new出來的東西
初值
局部變量的初始值,coder自己給變量賦初值
天然有初值,jvm賦予的
整數(shù)類型(byte,int等):0
字符型char:'\u0000'碼值0對應(yīng)的字符
小數(shù)型(float,double):0.0
布爾類型:false
引用類型:null
內(nèi)存管理方式
管理和作用域相關(guān)
和棧內(nèi)存管理方式完全不同(比如有垃圾回收期來管理堆空間上的內(nèi)存)
DAY7
二維數(shù)組
存儲(chǔ)一維數(shù)組的數(shù)組
初始化格式:
1.數(shù)據(jù)類型[][] 變量名 = new數(shù)據(jù)類型[m][n];2.數(shù)據(jù)類型[][] 變量名 = new數(shù)據(jù)類型[m][];
沒有給出一位數(shù)組的元素個(gè)數(shù),可以動(dòng)態(tài)的給出3.數(shù)據(jù)類型[][] 變量名 = new 數(shù)據(jù)類型[][]{{元素,...},{元素,...},{元素,...}};
DAY8
參數(shù)傳遞:
如果是基本數(shù)據(jù)類型,形參的改變不影響實(shí)參
參數(shù)有兩份,同時(shí)參數(shù)對應(yīng)的數(shù)據(jù)的值,也有兩份
如果是引用數(shù)據(jù)類型,形參的改變會(huì)改變實(shí)參
參數(shù)值有兩份,但是兩個(gè)數(shù)組類型引用變量,對應(yīng)的值(數(shù)組),只有一個(gè)
在Java語言中,不管參數(shù)的類型,是引用類型還是基本數(shù)據(jù)類型,實(shí)際參數(shù)和形式參數(shù)進(jìn)行值傳遞的方式只有一種:實(shí)際參數(shù)的值復(fù)制一份賦值給形式參數(shù);所以實(shí)參的值其實(shí)有兩份,調(diào)用方法中一份,被調(diào)用方法中一份
關(guān)于棧空間的內(nèi)存管理:
1.棧空間內(nèi)存分配的基本單位:
局部變量(方法的形式參數(shù)和方法中定義的變量)存儲(chǔ)在棧空間中
一個(gè)方法當(dāng)他被調(diào)用執(zhí)行的時(shí)候,方法中的局部變量等,才需要在棧空間上存儲(chǔ)
即每一個(gè)運(yùn)行中的方法,都需要占用棧內(nèi)存中的一片存儲(chǔ)空間
于是,每一個(gè)運(yùn)行中的方法,都會(huì)在棧上分配一片,只屬于該運(yùn)行中的方法的內(nèi)存空——棧幀
2.何時(shí)分配,何時(shí)回收(銷毀)內(nèi)存
當(dāng)一個(gè)方法被調(diào)用執(zhí)行的時(shí)候,給該運(yùn)行中的方法分配棧幀
當(dāng)一個(gè)方法執(zhí)行完畢的時(shí)候,他所對應(yīng)的棧幀被回收(銷毀)
棧幀:給每一個(gè)運(yùn)行中的方法來使用,每一個(gè)運(yùn)行中的方法都對應(yīng)著一個(gè)棧幀
當(dāng)方法被調(diào)用執(zhí)行時(shí)棧幀被創(chuàng)建,當(dāng)方法調(diào)用結(jié)束棧幀被回收
同一方法多次執(zhí)行,每一次執(zhí)行的時(shí)候,都會(huì)在棧上分配一個(gè)棧幀
遞歸
遞歸的定義:方法定義中調(diào)用方法本身的現(xiàn)象
核心思想:分而治之
遞歸的注意事項(xiàng):
遞歸一定要有出口
次數(shù)不能太多,不然還是會(huì)出現(xiàn)StackOverFlowException
警惕遞歸方法的缺陷:有重復(fù)計(jì)算的問題
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的poker java idea_JavaBasic学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java web jsp相对路径_Jav
- 下一篇: java邮件发送代码_用Java实现最简