剛開始學習java的時候,可能是一頭霧水,不知道從何學起,這裡跟大家分享一下!(僅僅只供初級學者學習,大佬勿噴)
一、初始java
1.生活中的程序:
從起床到教室上課的過程
穿衣打扮》起床》洗漱》出宿舍》》吃早餐》到教室
按照特定的順序去完成某一件事的過程我們叫做生活中的程序
2.計算機中的程序:
一組有序指令的集合,需要和計算機交流就要使用計算機語言,java就是計算機語言的一種
3.java能做什麼:
1、開發桌面應用程序,比如:QQ、酷狗
2、開發internet應用程序,比如:淘寶、天貓
4.java技術平臺:
1、Java SE:標準版,java的技術與核心,開發桌面應用程序
2、Java EE:提供企業級項目的解決方案,開發網頁應用
5.安裝jdk:
jdk:java的一個核心工具包
jre:java的一個運行環境(表示java除了可以在windows系統運行,還可以在蘋果系統運行)
環境變量:告訴計算機可以執行.java的運行程序在哪裡
6.開發java程序的步驟:
1、編寫一個java源程序
新建記事本,將後綴名改為.java
2、編譯java源程序,語法:javac 源文件名.java
編譯後會生成一個.class的字節碼文件
3、運行java程序,運行的是.class的文件,語法:java 源文件名
注意:java嚴格區分大小寫
System.out.println ()打印之後換一行,先打印再換行
System.out.print ()打印之後不換行
7.轉義字符:
使用"\\n"進行換行
使用"\\t"空格一個製表符的位置,也就是一個tab的位置,8個英文字母的長度
8.java中的註釋:
//註釋內容單 行註釋:表示對下一條語句進行一個解釋
/* 註釋內容 */ 多行註釋:表示對下面一段語句進行一個解釋
/**註釋內容 */ 文檔註釋:表示對一段文本註釋
註釋的語句是不會進行編譯的
9.java的編碼規範:
1、遇到大括號 { 就進行一次縮進,縮進距離一個tab鍵的長度
2、每一個大括號 } 單獨佔一行,表示一段語句的結束
3、 ; 表示每行語句的結束,每一行只寫一句代碼
10.使用開發工具開發java程序的步驟:
1、新建一個java工程
2、選中新建的工程,選中src文件夾,點擊右鍵new,新建一個class,新建時選中
public static void main這一項,會自動生成java源程序的框架
3、去編寫java源程序
4、編譯java源程序,開發工具會自動編譯
5、運行java程序
二、變量、數據類型和運算符
1.每個程序都只有一個入口,也就是隻有一個main方法,只有一個程序可以打開QQ,其他的地方都打
開不了
2.程序沒有運行是存儲磁盤上,運行在內存中
3.酒店中入住:
1、開房間(根據不同人數開不同類型的房間)
2、入住
4.變量的概念:內存根據數據不同類型開闢的這個空間叫做變量
酒店相當於內存
房間相當於變量
入住的人 相當於 數據(變量值)
房間類型相當於 數據類型(數字還是文字)
房間號相當於變量名
5.變量名:用於快速找到內存中變量空間位置取得名字
6.數據類型:
數值型:
1、整型(int):用於存儲整數,整數的類型123,999,666
byte字節型,short短整型,long長整型
long》int》short》byte
2、非整型:用於存儲小數,小數的類型1234.5,3.14
雙精度浮點型(double):小數的長度比較長
單精度浮點型(float):小數的長度短一些
非數值型:
1、字符型(char):用於存儲單個字符,都需要使用英文狀態的單引號括起來
比如:‘男’、‘女’、‘開’、‘關’
2、字符串型(String):用於存儲一串字符,存儲0~n個字符,都需要用英文狀
態下的雙引號括起來
比如:“我的名字是張三”,“我的愛好是打遊戲”
7.變量名的命名規則:
1、只能夠使用_和這兩個符號;2、只能使用英文字母、、 這兩個符號;2、只能使用英文字母、_、這兩個符號;2、只能使用英文字母、、 三個開頭,後面的可以使用數字、字母和_、$;
3、使用java語言中的關鍵字
4、採用見文識意的方式命名,採用駝峰命名法ageOfStudent,多個字母命名時,
第一個字母的首字母小寫,後面字母首字母大寫
8.變量的使用:
語法:數據類型 變量名;(空格和分號不能少),比如:int qian;
2、變量賦值,就是將數據放到開闢的這個空間
語法:變量名 = 變量值;比如:qian = 1000;
3、使用變量
比如:System.out.println(qian);
9.運算符的使用:
1、賦值運算符(=),將等號右邊的值賦給左邊
2、拼接運算符(+),將+左右兩邊的連起來
表達式:就是符號(如加號、減號)與操作數(如b,3等)的組合,比如:b-1
算術運算符:
四則運算:+、-、*、/
%(取模運算):除以一個數得到餘數,就是求餘數的運算的運算
10.從鍵盤掃描輸入的值:
1、找到有掃描儀的商店,語法:import java.util.Scanner;寫在public class的前面
2、購買一臺新的掃描儀,給它取一個名字
語法:Scanner input = new Scanner(System.in);
3、使用掃描儀的掃描功能
如果掃描整數:使用input.nextInt();
如果掃描小數:使用input.nextDouble();
如果掃描字符串:使用input.next();
11.類型轉換:
自動類型轉換:
1、必須兩種類型互相兼容,比如:都是數值類型int和double,double和float
2、轉換成的類型一定要比被轉換的類型要大,比如:int轉換成double
float轉換成double
12.強制類型轉換:
語法:數據類型 變量名 = (數據類型)變量名;
比如:double b = 3.14
int a = (int)b;
1、同類型的強制類型轉換,比如:int a = (int)10.9;
2、不同類型的強制類型轉換,只有char和int可以,通過ASCII碼錶去轉換
比如:int b = (int)‘a’;
13.運算符:
1、賦值運算符 =,將右邊的值賦給左邊
2、算術運算符+、-、、/、%,數學運算一樣,先、/、%,後+、-
3、關係運算符(比較運算符):>、=、<=、==、!=
4、邏輯運算符
boolean類型(布爾類型):用於比較運算,只有兩個值(true和false)
14.運算符的優先級:
1、最高優先級,英文狀態下的小括號()
2、最低優先級,賦值運算符=
3、算術運算符>關係運算符>邏輯運算符>賦值運算符
三、選擇結構
1.if選擇結構
if基本選擇結構
語法:if(要滿足的條件){
如果條件為true的時候,進入大括號中
滿足條件之後得到的結果,不滿足條件不會去執行
}
如果條件為false的時候,繞過大括號執行外面的
條件只能是boolean類型的數據
1條件只能是boolean類型的數據
2.邏輯運算符:
&&(shift+7):and符號,並且的意思,同時滿足連接前後條件才為true,有一個不滿足為
false
||(shirt+):或者的意思,只要前後兩個條件一個為true,整個表達式就為true,同時為
false才為false
!(shirt+1):非的意思,就是取反,如果表達式為true,使用非就為false
3.if-else選擇結構:
適用於基本選擇條件的情況
語法:if(要滿足的條件){
滿足條件得到的結果
}else{
不滿足條件的得到的結果
}
4.產生一個隨機數:
1、找到一個有隨機數產生器的商店,語法:import java.util.Random;
2、購買一臺隨機數產生器並取一個名字,語法:Random ran = new Random();
3、使用這臺隨機數產生器的功能區產生隨機數,語法:ran.nextInt(數字);
ran.nextInt(10)表示產生一個0~9之間的隨機數
ran.nextInt(10)+1表示產生一個1~10之間的隨機數
5.多重if選擇結構:
適用於很多條件分支的情況
語法:if(要滿足的條件1){
滿足條件1得到的結果
}else if(要滿足的條件2){//默認不滿足條件1
滿足條件1得到的結果
}else if(要滿足的條件n){//默認不滿足條件2
滿足條件n得到的結果
}else{//默認不滿足條件n
不滿足所有條件得到的結果
}
只要找到一個滿足的條件,執行完之後,結束選擇結構
6.嵌套if選擇結構
適用於在一個判斷的基礎再做一次判斷的情況
語法:if(要滿足的條件1){
滿足條件1得到的結果
if(要滿足的條件2){
滿足條件2得到的結果
}
}else{
不滿足條件1得到的結果
}
==只能夠比較數值類型,比較字符串是否相等,使用.equals(“要等於哪個字符串”);
比如:sex.equals(“男”);10 == 10
四、循環結構
1.循環結構:
打印50份試卷,是從第1份開始打印,打印到第50份結束,重複打印試卷的過程
繞操場跑10圈,從第1圈開始,到第10圈結束,重複跑步的過程
做100道編程題,從第1題開始,到第100道結束,重複做題的過程
2.循環的概念:重複完成某一件事情或者某一個操作,有一個開始位置和結束位置就叫做
循環
3.循環的特點:
1、循環條件:也就是滿足某個條件下才做重複的操作
2、循環操作:也就是重複所做的事情或者操作
4.while循環的語法:
while(循環條件){
滿足條件的時候所做的循環操作
}
特點:先判斷,再執行
使用while循環的步驟:
1、確定是否存在重複操作
2、分析出循環條件和循環操作分別是什麼
3、套用while循環語法寫出循環結構
4、檢查循環是否能正確退出
5.do-while循環結構的語法:
do{
循環操作
}while(循環條件);
特點:先執行循環操作,再進行循環條件判斷(先執行,再判斷)
6.while循環和do-while循環的差別:
1、循環的次序不同,while循環是先判斷,再執行,do-while是先執行,再判斷;
2、while循環在初始值不滿足循環條件的時候一次都不會執行,do-while循環在初始值不
滿足循環條件的時候至少執行一次
7.程序調試:
斷點調試的步驟:(每次調試後取消掉斷點)
1、設置斷點:在左側邊欄的位置點擊鼠標左鍵兩次,可以生成一個斷點
2、進入調試模式:點擊右鍵,選擇debug as進入debug調試模式,程序會在設置斷點的地
方停下來
3、單步執行,也就是一行一行的執行代碼,按F6單步跳過執行代碼
4、觀察變量值的變化
5、找出錯誤的位置
6、改正錯誤
7、運行看結果是否正確**
8.for循環結構
語法:for(表達式1;表達式2;表達式3){
循環操作
}
表達式1:循環從哪裡開始,也就是循環的初始值,比如:int num = 1
表達式2:循環的條件,也就是循環到哪裡結束,比如:num <100
表達式3:計數器,也就是每循環一次,初始值產生怎樣的變化,比如:num++
每個表達式之間用分號隔開,每個表達式都可以不寫,但是分號不能省略
for循環的執行順序:
①先去執行表達式1,也就是先去找初始值
②第二步去執行表達式2,也就是去找循環條件
③第三步去執行循環操作
④最後才去執行表達式3,也就是最後才實現初始值變化的過程
表達式1和表達3中可以寫多個,表達式2,條件只能有一個
9.跳轉語句的使用:
break關鍵字:(通常和if選擇結構一起使用)
在switch使用break表示結束switch選擇結構去執行選擇結構外的代碼
在循環中使用break表示結束循環結構去執行循環結構外的代碼
continue關鍵字:(通常和if選擇結構一起使用)
continue只能夠在循環結構中使用
在循環中使用continue表示結束當前這一次循環,然後開始下一次循環
使用場合:
break常用於switch結構和循環結構中
continue一般用於循環結構中
作用(循環結構中)
break語句終止某個循環,程序跳轉到循環塊外的下一條語句
continue跳出本次循環,進入下一次循環
10.循環結構四要素:
1、初始值,也就是循環要從哪裡開始
2、循環條件,循環要到哪裡結束
3、循環操作(循環體),就是需要重複做的某些操作
4、計數器(迭代部分),就是每次重複之後,初始值要產生的變化
11.while、do-while和for循環的區別:
1、執行順序不同
while和for循環:先判斷,再執行
do-while循環:先執行,再判斷
2、適用場景(循環次數固定推薦使用for循環)
for循環只適用於循環次數固定的情況
while和do-while循環無論循環次數是否固定都可以使用
五、數組
1.數組的概念
在內存中開闢的一串連續的空間,用來存儲相同數據類型的,比如:鞋櫃只會放鞋子,衣
櫃只會用來放衣服
2.數組的基本要素
1、標識符(數組名):數組的名稱,用來區分不同的數組
2、數組元素:存放在數組空間中的數據
3、數組下標:對數組中的空間進行編號,區分每個空間,數組下標從0開始,可以通過數
組下標找到對應的空間
4、元素類型:數組的數據類型
3.數組的定義和使用
1、聲明數組:告訴計算機數組是什麼類型
語法:數據類型[] 數組名 或者 數據類型 數組名[]
比如:String[] args;int[] nums,數組名的命名方式和變量命名方式一樣
2、分配空間:告訴計算機要開闢一串連續的多長的空間
語法:數組名 = new 數據類型[數組長度];
比如:scores = new int[30];
第一步和第二步可以一起寫
數據類型[] 數組名 = new 數據類型[數組長度];
3、賦值:向開闢好空間裡面去存放數據
語法:數組名[數組下標] = 數據;
比如:scores[0] = 60;//表示將數組第一個空間存放了60這個整數
scores[1] = 80;
語法:數據類型[] 數組名 = new 數據類型[]{數據1,數據2,數據n};
數據類型[] 數組名 = {數據1,數據2,數據n};
注意:如果在聲明數組時就直接賦值,那麼不要寫數組長度
比如:int[] scores = new int[]{60,80,100,50,60,70};
通過循環的方式動態的錄入數據
循環從初始0開始,到數組的最大長度結束,每次加1
for(int i = 0;i < 5;i++){
System.out.println("請輸入第"+(i+1)+"名學生的成績:");
scores[i] = input.nextInt();
}
4、數據的使用:將存放在數組空間中的元素拿出來使用
使用循環的方式將存放在每個空間中數據拿出來使用
for(int i = 0;i < 5;i++){
System.out.println("第"+(i+1)+"名的學生成績為"+scores[i]);
}
數組名.length表示數組的長度
比如:int[] scores = new int[10];
scores.length = 10;//數組長度為多少,該值就為多少
4.數組的排序
使用Arrays類,使用Arrays的步驟
1、找到有Arrays的商店,語法:import java.util.Arrays;
2、Arrays是一個公用的工具,不需要夠買,只要去使用就可以,
語法:Arrays.sort(數組名);
它會將該數組進行一個升序的排列
二重循環:在一個循環中再使用一個循環結構
循環特點:外層循環循環一次,內層循環循環一遍(也就是從開始到結束循環完)
while循環,do-while循環和for循環之間可以相互嵌套,也就是說while循環可以放while,
do-while和for循環,其他兩種一樣
5.二重循環中跳轉語句的使用
continue:如果continue在內層循環中,表示結束內層循環的本次循環,開始內層循環的
下一次循環,如果在外層循環表示結束外層循環的本次循環,開始外層循環的
下一次循環,也就是說,continue在哪一個循環的{}中,就結束哪一個循環的
本次循環,開始該循環的下一次循環。
break:如果break在內層循環中,表示結束內層循環的整個循環,開始執行內層循環外面
語句,如果在外層循環中表示結束整個循環,也就是說,break在哪個循環中,結
束的就是哪個循環的整個循環。
六、類和對象
1.OO:Object Oriented表示面向對象的意思
2.世界由什麼組成:水,陸地,草,人,動物,植物,樓房,汽車等等
由所有一切真實存在的東西組成,這些真實存在的東西就叫作對象
屬性:就是對象所具有特徵
方法:就是對象所執行的行為或操作
對象:用來描述真實存在事物的一個實體,由一組屬性和方法組成
封裝:對象的屬性和方法通常封裝在一起,共同體現事物的特性,兩者不可分割
類:將對象共同的屬性和方法抽取出來就是類
類是模子,定義對象所具有的屬性和方法
3.類和對象的關係:
類是抽象的,對象是具體的實體
對象是類的一個實體,類是對象的抽象概念
4.定義一個類的步驟:
1、新建一個class,給這個class取一個類名,名字和你想要定義的類型一致
類名的取名方式,使用帕斯卡命名法,所有單詞的首字母大寫
2、定義類的屬性
3、定義類的方法
5.使用定義好的類:
1、新建一個對象,語法:類名 對象名 = new 類名();
比如:Car car1 = new Car();
2、通過“.”操作符來使用這個對象的屬性和方法
六、類的無參方法
1.定義類的方法:
語法:返回修飾符 返回值類型 方法名(){
//具體實現方法的操作
}
比如:
public void sayHello(){
//具體實現方法的操作
System.out.println(“你好”);
}
1、訪問修飾符(在哪些地方能夠使用這個方法),public公共的,最高級別
2、返回值類型,執行完方法後能夠得到什麼數據
void,表示沒有返回值,也就是沒有任何數據返回
如果有數據返回,那麼就需要使用return關鍵字返回一個數據,並且返回的數據類型
和返回值的數據類型一致
3、方法名(),方法名錶示方法的名字
4、方法體:具體實現方法的操作
2.編寫類的方法步驟:
1、先定義方法的訪問修飾符,先寫沒有返回值類型,定義方法名,方法名的命名採用見
文識意的方式
2、定義方法體,也就是寫具體實現方法的操作
3、判斷方法是否有返回值,如果有,添加return關鍵字返回該數據,並修改返回值類型
方法是怎麼去實現,方法是怎麼實現的只需要在定義方法的關心,使用的時候只要知道是哪一個方
法是什麼作用就可以了
3.方法的調用:
1、在同一個類調用同一類中的方法,只需要通過方法名()就可以指直接調用
2、在不同類中調用方法,需要先new一個需要調用方法的類的對象,然後通過對象名.方
法名的方式去調用方法
調用方法的時候,實際上就是去執行方法體中的代碼
4.常見錯誤:
1、返回值數據類型必須和返回值類型一致
2、不可以返回多個值,也不能寫多個返回值類型
3、定義方法不能夠相互嵌套
4、程序邏輯代碼(順序、選擇、循環結構)只能寫在方法體中
5.面向對象的編程:
類的方法實現某個特定的功能,其他類不需要知道它如何實現,只需要知道它是用來幹什
麼的
6.全局變量:(成員變量)它是指定義在類中的變量,它在類中的任意位置都可以被識別
比如:類的屬性
1、作用域:作用在類中任意位置
2、初始值不同:如果沒有給它賦值,系統會默認給它一個初始值,int類型為0,double
為0.0,String為null
3、在同一個類中不允許同名存在
7.局部變量:它是指定義在方法體中變量,它只能在該方法中被識別
1、作用域:作用在定義該變量的方法體中
2、初始值不同:必須給它賦值後才能去使用,系統不會給它賦初始值
3、在同一個類中,不同的方法中可以存在相同的命名,同名的兩個變量沒有任何關係
在同一個類中,允許局部變量和成員變量命名相同,如果兩個命名一樣,在使用時,局部變量有
更高優先級
七、類的有參方法
1.帶參數的方法:
無參方法:在方法名()的括號中沒有參數的方法
有參方法:在方法名()的括號中有參數的方法
2.定義有參方法的語法:
訪問修飾符 返回值類型 方法名(參數1、參數2、參數3…參數n){
方法體(具體實現方法的過程)
}
3.參數:實際就是聲明的一個變量,聲明的變量使用“,”隔開
在定義方法的時候,方法中的參數只是進行了聲明,並沒有賦值,這個參數就叫做形式參
數,也就是形參;
在調用方法的時候,對方法中參數進行賦值,這個參數就叫作實際參數,也就是實參
4.調用帶參數的方法:
同一類中調用同一類中的方法,直接方法名()調用
不同類中調用不同類中的方法,先new一個對象,再通過對象名.方法名()的方式調用
必須和定義方法的參數個數相同,並且數據類型必須一致,順序也要和定義的位置一致
5.二次傳遞 :在調用方法的時候,傳遞一個參數值給該方法,然後在該方法中去調用了另外的方法,
再將這個參數值傳遞給在該方法中調用的這個方法
F5:單步跳入,遇到方法的時候回進入方法體中,逐方法體的代碼一行一行的執行
F6:單步跳過,遇到方法的時候直接執行完方法,獲得結果,不進入方法體
6.對象數組:就是自己定義的類型的數組
自己定義類型,如果沒有new一個對象,那麼它的初始就為null
7.包:在windows中以文件夾的方式存在
1)將類分為幾個類似於文件夾的單元
2)防止命名衝突,在同一個包不允許重複命名,不同包可以重複
3)可以對類中數據中進行一個保護作用
聲明包,語法:package 包名;必須為java源文件中第一條非註釋語句
包名:1、通常由小寫的英文字母組成,不能以圓點開頭或結尾
2、開頭一般是一個頂級域名cn,com,org,net
3、後續部分一般由公司名稱、部門名稱、小組名稱、項目名稱
導入包:語法:import 包名;
導入包,可以將在這個包中的所有類導入到我們這個類中,導入後才能使用該包中的類
通過ctrl+鼠標左鍵點擊進入定義方法的位置
八、字符串
1.字符串:就是一個或多個字符組成
1、直接聲明,比如:String name = “張三”;
2、使用對象的方式,new一個String類的對象,
比如:String name = new String(“張三”);
3.棧:用來存儲較小的數據,離訪問位置比較近,比如:int,double,short。。
堆:用來存儲較大的數據,離訪問位置比較遠,比如:String,數組,自己定義的類型
4.引用數據類型:通過在棧中的地址去引用存儲在堆中數據的數據類型
只要使用了new關鍵字,就表示在堆中新開了一個空間,然後在棧中留下一個地址
String類型中的值是不可變的
5.比較字符串:
使用比較的是存儲的地址,引用類型地址不相同,不能使用比較
.equals比較的是存儲的數據,將數據一一比較,字符串使用.equals比較是否相等
.equals()比較字符串是否相等
.equalsIgnoreCase()忽略大小寫比較字符串是否相等
.toLowerCase()將字符串中所有字符轉化為小寫
.toUpperCase()將字符串中所有字符轉化為大寫
6.獲得字符串長度:
字符串名.length,獲得字符串長度,每個字符就是一個長度
7.字符串的拼接:
1、使用拼接符+進行拼接
2、使用.concat()方法進行拼接
8.字符串的查詢和提取
indexOf("@qq")、indexOf(’@’),查詢第一個字符出現的位置
.lastIndexOf(‘7’)、.lastIndexOf(“77”),查詢最後一個字符出現的位置
查詢:字符串名.indexOf(需要查找字符串名),返回一個int類型的數據,第一個數從0
開始,返回字符串第一個字符所在位置,找不到指定的字符串返回-1
9.提取:
.substring(8)提取第9個字符串後面的所有字符串
.substring(8,12)提取從第8個字符到第11個字符,開始的位置從0開始數起,結束的位置
從1開始數起
忽略字符串前後的空格
.trim()忽略字符串前後的空格,中間不能忽略
10.字符串的分割
.split(以什麼為分割的字符),返回一個String的數組,將分割的每個字符串放到這個數
組中
11.字符串的替換
.replaceAll(表示替換前的字符,表示替換後的字符),返回一個String的數據
StringBuffer類,是一個可變的字符串類型
語法:StringBuffer sb = new StringBuffer(“小林”);
StringBuffer的拼接:
.append(“需要追加的字符串”);追加的時候不會新開闢空間
StringBuffer的插入字符:
.insert(插入的位置,要插入的字符);
————————————————
最後,我自己是一名從事了多年開發的JAVA老程序員,今年年初我花了一個月整理了一份最適合2019年學習的java學習乾貨,可以送給每一位喜歡java的小夥伴,想要獲取的可以關注我的頭條號並在後臺私信我:交流,即可免費獲取。
*有什麼問題歡迎大家提出來 ♪(´○`)o團結就是力量
閱讀更多 程序員小皮 的文章