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