前言
希望可以通過這篇文章,能夠給你得到幫助。(感謝一鍵三連)
內存分析,底層算法,JDK源碼分析(
idea
版本和jdk13
)
初級學習方向:Java
入門,idea
開發環境使用(idea,eclipse
),面向對象基礎和麪向對象設計,Java
虛擬機內存機制,內存分析全面理解面向對象,內存分析全面理解編程語言,面向對象深入,數組和數據存儲,異常機制和可視化bug
追蹤,常用類和jdk
底層源碼分析,容器的使用,io
流技術,網絡編程,多線程和併發編程,函數式編程。
程序員職業發展:技術總監,資深碼農,架構師,項目經理,ceo
等。
常見的語言:c,java,python,c++,c#,javascript,php,swift,kotlin
等。
掌握:代碼能力,面向對象分析能力,內存底層和源碼分析習慣,調試和查錯能力。
javase java
標準版本, ee
企業級開發必學。
程序是現實邏輯的表達,程序的本質三個因素,變量,if
語句,循環語句。考慮因素(變量),判斷條件,無限極。
表格思想去理解數據庫存儲數據
如何理解Java中的類和對象?-表格思想
- 表結構對應:類
- 一行數據對應:對象
xml
文檔:表結構對應:文檔標籤定義;一行數據對應:指定元素。
爭對公司:瞭解該公司基本情況,側重哪款技術,研究該公司產品。
java
版本
-
JavaSE(Java Standard Edition)
:標準版,定位在個人計算機上的應用。 -
JavaEE(Java Enterprise Edition)
:企業版,定位在服務器端的應用。
Java的特性和優勢
Java程序的運行機制
計算機高級語言的類型主要有編譯型和解釋型兩種,而Java 語言是兩種類型的結合。
Java
首先利用文本編輯器編寫 Java
源程序,源文件的後綴名爲.java
;再利用編譯器(javac
)將源程序編譯成字節碼文件,字節碼文件的後綴名爲.class
; 最後利用虛擬機(解釋器,java
)解釋執行。
畫了個圖:
JVM、JRE和JDK
JVM (Java Virtual Machine)
就是一個虛擬的用於執行bytecode
字節碼的"虛擬計算機"。它包含了:指令集,寄存器集,結構棧,垃圾收集堆,內存區域。JVM
負責java
字節碼解釋運行,邊解釋邊運行,這樣速度就會受到一定的影響。
不同的操作系統有不同的虛擬機,java
虛擬機機制屏蔽了底層運行平臺的差別,實現了“一次編譯,隨處運行”。java
虛擬機是實現跨平臺的核心機制。
畫了個圖:
Java Development Kit(JDK)
包含:JRE
虛擬機,庫函數,運行Java
應用程序所必須的文件。
Java Runtime Environment(JRE)
包含:Java虛擬機
,庫函數,運行Java
應用程序所必須的文件。
JVM (Java Virtual Machine)
就是一個虛擬的用於執行bytecode
字節碼的"虛擬計算機"。
JDK、JRE和JVM
的關係如圖:
如果只是運行
Java
程序,只需要JRE
就可以,JRE
通常非常小,其中包括了JVM
;如果要開發Java
程序,就需要安裝JDK
。
JDK下載和安裝
現新:
點擊”Accept License Agreement”
,然後選擇對應的版本,下載即可
再進入JDK的安裝目錄
-
bin
目錄是存儲一些可執行的二進制文件 -
lib
存儲相關jar
包 -
src.zip
是JDK
相關JAVA
類的源代碼
環境變量Path的配置
C:\Program Files\Java\jdk-15.0.1
右鍵計算機,屬性,高級系統設置
一定是英文分號而不是中文分號
測試JDK安裝成功
第一個Java
程序
使用記事本開發第一個Java程序
public class helloWorld{
public static void main(String[] args){
System.out.println("Hello Java!我的掘金魔王哪吒作者");
}
}
保存在d盤,文件名helloWorld.java
,打開命令行窗口,進入java
文件所在目錄,執行javac helloWorld.java
,生成class文件。
解釋並運行階段:java helloWorld
,運行編譯生成的helloWorld.class文件,輸出結果。
常見錯誤
- path變量配置錯誤導致沒有找到javac命令
- 可能是操作系統顯示設置的問題,隱藏了文件的擴展名
- 找不到main方法,應該是main方法書寫有誤
常用DOS命令
-
cd
目錄路徑,進入一個目錄 -
cd ...
,進入父目錄 -
dir
,查看本目錄下的文件和子目錄列表 -
cls
,清除屏幕命令 -
Tab
鍵,自動補齊命令
常用Java開發工具
下載和安裝eclipse
選擇Eclipse IDE for Java Developers
,根據自己安裝的JDK
,下載完成後,直接解壓。進入目錄,雙擊eclipse.exe
即可使用。
工作空間指Java項目存儲的目錄,一般採用默認工作空間目錄即可。
在eclipse中創建Java項目,選擇new,Java Project,開始新建Java項目。
使用eclipse開發和運行Java程序
在src目錄上右鍵單擊,建立一個Java類。
Java項目的src目錄和bin目錄
- src用於存放源代碼
- bin用於存放生成的class文件
桌球小遊戲
ball.png
desk.jpg
import java.awt.*;
import javax.swing.*;
public class BallGame extends JFrame {
Image ball = Toolkit.getDefaultToolkit().getImage("images/ball.png");
Image desk = Toolkit.getDefaultToolkit().getImage("images/desk.jpg");
double x=100; //小球的橫座標
double y=100; //小球的縱座標
boolean right = true; //方向
//畫窗口的方法
public void paint(Graphics g){
System.out.println("窗口被畫了一次!");
g.drawImage(desk, 0, 0, null);
g.drawImage(ball, (int)x, (int)y, null);
if(right){
x = x + 10;
}else{
x = x - 10;
}
if(x>856-40-30){ //856是窗口寬度,40是桌子邊框的寬度,30是小球的直徑
right = false;
}
if(x<40){ //40是桌子邊框的寬度
right = true;
}
}
//窗口加載
void launchFrame(){
setSize(856,500);
setLocation(50,50);
setVisible(true);
//重畫窗口,每秒畫25次
while(true){
repaint();
try{
Thread.sleep(40); //40ms, 1秒=1000毫秒. 大約一秒畫25次窗口
}catch(Exception e){
e.printStackTrace();
}
}
}
//main方法是程序執行的入口
public static void main(String[] args){
System.out.println("掘金:魔王哪吒");
BallGame game = new BallGame();
game.launchFrame();
}
}
效果圖:
import java.awt.*;
import javax.swing.*;
public class BallGame2 extends JFrame {
Image ball = Toolkit.getDefaultToolkit().getImage("images/ball.png");
Image desk = Toolkit.getDefaultToolkit().getImage("images/desk.jpg");
double x=100; //小球的橫座標
double y=100; //小球的縱座標
double degree = 3.14/3; //弧度。此處就是:60度
//畫窗口的方法
public void paint(Graphics g){
System.out.println("窗口被畫了一次!");
g.drawImage(desk, 0, 0, null);
g.drawImage(ball,(int)x, (int)y, null);
x = x+ 10*Math.cos(degree);
y = y +10*Math.sin(degree);
//碰到上下邊界
if(y>500-40-30||y<40+40){//500是窗口高度;40是桌子邊框,30是球直徑;最後一個40是標題欄的高度
degree = -degree;
}
//碰到左右邊界
if(x<40||x>856-40-30){
degree = 3.14 - degree;
}
}
//窗口加載
void launchFrame(){
setSize(856,500);
setLocation(50,50);
setVisible(true);
//重畫窗口,每秒畫25次
while(true){
repaint();
try{
Thread.sleep(40); //40ms, 1秒=1000毫秒. 大約一秒畫25次窗口
}catch(Exception e){
e.printStackTrace();
}
}
}
//main方法是程序執行的入口
public static void main(String[] args){
System.out.println("掘金:魔王哪吒");
BallGame2 game = new BallGame2();
game.launchFrame();
}
}
效果圖如下: