日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java小入坑

發布時間:2025/4/16 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java小入坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java入坑指南
是滴,下面是一個最低的入坑

還應該有23種設計模式應該掌握的。╮(╯▽╰)╭
注意,第一個j是大寫。

Java的特點跨平臺,風格接近C++
最重要的api文檔 https://docs.oracle.com/javase/10/docs/api/overview-summary.html

語言特點

  • 面向對象
  • 跨平臺,運行在JRE上,JRE包括JVM
  • 具有自動垃圾回收的機制
    屬于強類型,簡單,面向對象,分布式,健壯的,安全的,可移植的,解釋型語言(將會翻譯成字節碼,在JVM上運行),高性能,動態,多線程。

    開發工具

    JDK,一個工具包,面向開發者的工具包,包含JVM。
    JRE,一個Java的運行環境,分為服務器端的運行環境和開發者的運行環境。服務器端部署Java的時候,需要使用JRE運行Java程序。

  • 體系

    分為三個體系,分別是J2SE,J2EE,J2ME
    分別為以上三個體系。

    專業術語

    JDK 編寫Java程序的程序員使用的軟件
    JRE 運行Java程序的用戶使用的軟件
    Server JRE 運行Java程序的服務器使用的軟件
    SDK 軟件開發工具包
    DAO 數據訪問的接口
    MVC 一種模式
    JSP 一種在HTML中寫入Java的方式,由服務器端進行渲染,然后返回給用戶(已經用的很少嘍,目前都是直接封裝成為API的,其接口設計需要遵守RESTful API的設計規范,屬于一種架構方式,可以使用https://swagger.io/對api進行設計,jsp類似于php都是直接寫在HTML內的~)
    Servlet 一種封裝成http的接口,然后通過http請求來訪問,使用這個Java能更加注重后端的業務的邏輯,實現解耦。(這個日后需要在繼續學習)
    JDBC 一種連接方式,用來連接數據庫例如Mysql
    Tomcat 一種運行Servlet的容器,在服務器端運行
    SSH框架 包括Hibernate5框架、Struts2框架、Spring4框架
    SSM框架 Spring、SpringMVC和Mybatis框架。
    RPC框架 客戶端在不知道調用細節的情況下,調用存在于遠程計算機上的某個對象,就像調用本地應用程序中的對象一樣 用于分布式。經典框架 https://thrift.apache.org/ 來自于FaceBook

    OOP

    一種編程范式,

    類與對象

    類(Class):定義了一件事物的抽象特點。類的定義包含了數據的形式以及對數據的操作。
    對象:是類的實例。

    動態配置與消息傳遞

    定義上動態配置是指方法會隨著實例動態的改變。而消息傳遞機制(Message Passing)是指一個對象通過接受消息、處理消息、傳出消息或使用其他類的方法來實現一定功能。

    封裝

    具備封裝性(Encapsulation)的面向對象編程隱藏了某一方法的具體運行步驟,取而代之的是通過消息傳遞機制發送消息給它。

    繼承

    繼承性(Inheritance)是指,在某種情況下,一個類會有“子類”。

    多態

    多態(Polymorphism)是指由繼承而產生的相關的不同的類,其對象對同一消息會做出不同的響應。

    抽象

    抽象(Abstraction)是簡化復雜的現實問題的途徑,它可以為具體問題找到最恰當的類定義,并且可以在最恰當的繼承級別解釋問題。

    語言

    C→C++,C→Objective-C,BASIC→Visual Basic→Visual Basic .NET,Pascal→Object Pascal,Ada→Ada95

    腳本化中的面向對象

    Python和Ruby
    Perl和PHP

    Java和js有非常大的區別,一個是腳本,一個不是腳本。Java不是腳本,是編譯成字節碼然后在jvm上運行的。

    Java語言編譯的過程

    Java代碼編譯是由Java源碼編譯器來完成,也就是Java代碼到JVM字節碼(.class文件)的過程
    Java字節碼的執行是由JVM執行引擎來完成

    將jvm比喻成操作系統,Java只是又新建了一個類似于操作系統,術語叫虛擬機,用來運行Java的字節碼

    Java代碼編譯和執行的機制

    源碼編譯

    ①分析和輸入到符號表

    ②注解處理

    ③語義分析和生成class文件

    最后生成的class文件包含以下內容
    ①結構信息:包括class文件格式版本號及各部分的數量與大小的信息

    ②元數據:對應于Java源碼中聲明與常量的信息。包含類/繼承的超類/實現的接口的聲明信息、域與方法聲明信息和常量池

    ③方法信息:對應Java源碼中語句和表達式對應的信息。包含字節碼、異常處理器表、求值棧與局部變量區大小、求值棧的類型記錄、調試符號信息

    類的加載機制


    一張圖說明,先自底向上檢查類是否加載,進行記錄,然后全部將類檢查完成以后,再自頂向下不斷的嘗試加載類。

    底層使用C++完成對類的加載

    類的執行機制

    JVM是基于堆棧的虛擬機,JVM為每個新創建的線程分配一個堆棧,對于Java程序來說,運行時通過對堆棧的操作來完成的。
    堆棧以幀為單位保存線程的狀態,JVM對堆棧的操作為壓棧和出棧
    JVM執行class字節碼以后,將會產生程序計數器和棧,程序計數器存放將要執行下一條指令的偏移量。
    棧中存放一個個的棧幀,每個棧幀對應每個方法的每次調用,棧幀由局部變量和操作數棧兩部分組成,局部變量存放局部變量和參數,操作數棧中用于存放方法執行過程中產生的中間結果

    JVM內存管理和垃圾回收

    JVM內存分為方法區(method),棧內存(stack),堆內存(heap),本地方法棧(java中的jni調用)

    堆內存

    操作系統有一個記錄空閑內存地址的鏈表,當系統收到程序的申請時,會遍歷該鏈表,尋找第一個空間大于所申請空間的堆結點,然后將該結點從空閑結點鏈表中刪除,并將該結點的空間分配給程序,

    棧內存

    棧是向低地址擴展的數據結構。為一塊連續的內存區域。

    會有棧溢出這種情況

    其中對象保存在堆中,變量和其中的中間結果保存在棧中

    垃圾回收機制

    如果一個對象沒有其他對象進行引用,將會進行不定時的進行刪除,即對無用的內存空間進行回收。

    類加載的流程圖

    開發環境

    官方教程 https://docs.oracle.com/javase/10/install/installation-jdk-and-jre-microsoft-windows-platforms.htm#JSJIG-GUID-A7E27B90-A28D-4237-9383-A58B416071CA
    windows上安裝JDK。
    進入oracle官網,https://www.oracle.com/index.html
    選擇,https://www.oracle.com/technetwork/java/javase/downloads/index.html
    目前最新的J2EE為10.0.2
    選擇jdk 即面向開發者的https://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html
    由于目前是在windows版本,選擇windows版本的。
    單擊下一步即可,所有的都會幫你設置完成。
    打開PowerShell 輸入

    PS C:\Users\mingm\Desktop> java -version java version "10.0.2" 2018-07-17 Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13) Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode) PS C:\Users\mingm\Desktop>

    如果能出現以上命令說明配置正確。path等環境變量已經自動配置

    Server JRE

    一種運行在服務器端的Java環境。鏈接https://www.oracle.com/technetwork/java/javase/downloads/index.html
    選擇進行下載。
    在win10 設置中設置環境變量
    http://www.runoob.com/w3cnote/windows10-java-setup.html

    Eclipse

    一種Java的IDE環境https://www.eclipse.org/
    選擇java環境文件,即可完成,灰常簡單。由于某些讓人氣憤的原因,包無法使用,那就用https://www.eclipse.org/downloads/packages/

    hello world

    現在書寫第一個hello world程序

    public class HelloWorld {/*你好世界!*/public static void main(String []args) {System.out.println("hello world");} }

    新建HelloWorld.java文件
    然后打開同目錄下的powershell
    編譯成為class

    PS C:\Users\mingm\Desktop\test> javac .\HelloWorld.java

    出現錯誤

    .\HelloWorld.java:2: : GBK ??? (0x81)/*你好世界?*/^ 1

    提示編碼錯誤,由于保存的是utf-8編碼的,所以直接代碼編碼進行編譯。

    PS C:\Users\mingm\Desktop\test> javac -encoding utf-8 .\HelloWorld.java

    使用

    -encoding

    編碼使用utf-8進行編譯成為class文件
    查看目錄

    PS C:\Users\mingm\Desktop\test> ls目錄: C:\Users\mingm\Desktop\testMode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2018/9/18 22:14 425 HelloWorld.class -a---- 2018/9/18 22:12 135 HelloWorld.javaPS C:\Users\mingm\Desktop\test>

    目錄下出現class文件
    繼續運行

    PS C:\Users\mingm\Desktop\test> java HelloWorld hello world PS C:\Users\mingm\Desktop\test>

    出現hello world

    在Eclipse上寫hello world

    接著書寫項目名稱

    接著在src目錄下創建包

    創建Java源文件

    書寫代碼

    package cn.xd.test;public class Hello {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("hello world");}}

    運行

    運行結果

    評價,不習慣用IDE,至今不知道為什么。╮(╯▽╰)╭。習慣使然。

    IntelliJ idea

    ps 試試這個,如果能適應TJ的話,那更加的好啦。

    和jre連接

    比較簡單,不在闡述,
    綜上所述,個人還是傾向于簡單應用直接編輯器,submit text 就行啦,稍微復雜一點的應用,使用IntelliJ idea 即可。

    轉載于:https://www.cnblogs.com/melovemingming/p/9676579.html

    總結

    以上是生活随笔為你收集整理的Java小入坑的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。