Java程序結(jié)構(gòu)與常量變量難點(diǎn)解析
前言
新征程,進(jìn)入java的學(xué)習(xí)。
給自己定下一個(gè)鐵律:
學(xué)習(xí),刷題。
一、java程序結(jié)構(gòu)
下面先上一個(gè)最簡(jiǎn)單的java程序:
public class HelloWorld{
public static void main(String[] args){
System.out.println("hello");
}
}
接下來(lái),我們分析一下java這個(gè)程序的結(jié)構(gòu)。
首先,Java 區(qū)分大小寫(xiě)。 如果出現(xiàn)了大小寫(xiě)拼寫(xiě)錯(cuò)誤(例如, 將 main 拼寫(xiě)成 Main),程序?qū)o(wú)法運(yùn)行。
又例如(String[] args)中的S要大寫(xiě),我剛寫(xiě)這個(gè)程序就被沒(méi)有大小寫(xiě)的細(xì)節(jié)搞到浪費(fèi)了好多時(shí)間,請(qǐng)大家一定要注意。
關(guān)鍵字 public 稱(chēng)為訪問(wèn)修飾符, 這些修飾符用于控制程序的其他部分對(duì)這段代碼的訪問(wèn)級(jí)別。
關(guān)鍵字 class 表明 Java 程序中的全部?jī)?nèi)容都包含在類(lèi)中。
關(guān)鍵字 class 后面緊跟類(lèi)名。
一個(gè)Java程序的結(jié)構(gòu)由如下三個(gè)部分組成:
1.源文件(擴(kuò)展名為*.java):源文件帶有類(lèi)的定義。類(lèi)用來(lái)表示程序的一個(gè)組件,小程序或許只會(huì)有一個(gè) 類(lèi)。類(lèi)的內(nèi)容必須包含在花括號(hào)里面。
2.類(lèi):類(lèi)中帶有一個(gè)或多個(gè)方法。方法必須在類(lèi)的內(nèi)部聲明。
3.方法:在方法的花括號(hào)中編寫(xiě)方法應(yīng)該執(zhí)行的語(yǔ)句。
【總結(jié)】
類(lèi)存在于源文件里面;方法存在于類(lèi)中;語(yǔ)句存在于方法中。
二、java程序的運(yùn)行
1.運(yùn)行過(guò)程
Java程序運(yùn)行的流程如下圖:

所有的Java源代碼(以.java為擴(kuò)展名),通過(guò)Java編譯器javac變成字節(jié)碼,也就是以.class為擴(kuò)展名的文件。然后利用命令Java講對(duì)應(yīng)的字節(jié)碼通過(guò)java虛擬機(jī)(JVM)解釋為特定操作系統(tǒng),如Windows,Linux等能理解的機(jī)器碼,最終Java程序得以運(yùn)行。

2.JVM是什么?
JVM就是Java虛擬機(jī)。
我們可以理解為在機(jī)器和編譯程序之間加入了一層抽象的虛擬機(jī)器,這個(gè)虛擬機(jī)器在任何平臺(tái)都提供給編譯一個(gè)共同的接口。
編譯程序只需要面向虛擬機(jī),生成虛擬機(jī)能夠理解的代碼,然后由解釋器來(lái)將虛擬機(jī)代碼轉(zhuǎn)換成特定的系統(tǒng)代碼執(zhí)行。
下面解釋兩個(gè)東西:
JRE(Java Runtime Environment):Java運(yùn)行時(shí)環(huán)境,包含了JVM,Java基礎(chǔ)類(lèi)庫(kù)。是使用Java語(yǔ)言編寫(xiě)程序運(yùn)行的所需環(huán)境。
JDK(Java Development Kit):Java開(kāi)發(fā)工具包,提供給Java程序員使用,包含了JRE,同時(shí)還包含了編譯器javac與自帶的調(diào)試工具Jconsole、jstack等。
那么JRE JDK JVM的三者關(guān)系如何?
如圖:

三、常量與變量
1. 計(jì)算機(jī)工作原理
說(shuō)到計(jì)算機(jī)原理,就不得不提一個(gè)人——馮·諾依曼。被稱(chēng)為計(jì)算機(jī)之父。
著名的馮·諾伊曼設(shè)計(jì)思想如下:
1、計(jì)算機(jī)由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備組成。五大部件通過(guò)系統(tǒng)總線(xiàn)連接。

【解釋】
當(dāng)輸入設(shè)備向總線(xiàn)輸入指令時(shí),CPU獲取該指令并處理。當(dāng)CPU處理指令時(shí),CPU調(diào)用內(nèi)存儲(chǔ)器的數(shù)據(jù)以便進(jìn)行控制和計(jì)算,最后將計(jì)算結(jié)果發(fā)送給輸出設(shè)備或外存儲(chǔ)器。
當(dāng)內(nèi)存儲(chǔ)器中的數(shù)據(jù)需要從外存儲(chǔ)器中讀取時(shí),外存儲(chǔ)器將數(shù)據(jù)送往總線(xiàn),在CPU的控制下,內(nèi)存儲(chǔ)器再將該數(shù)據(jù)進(jìn)行存儲(chǔ)。
2、計(jì)算機(jī)內(nèi)部采用二進(jìn)制表示指令和數(shù)據(jù)
3、將編好的程序送入內(nèi)存儲(chǔ)器中,讓程序來(lái)指揮計(jì)算機(jī)自動(dòng)逐條取出指令和執(zhí)行指令。其核心是“存儲(chǔ)程序和程序控制”。
2.變量和類(lèi)型
變量是利用聲明的方式,將內(nèi)存中的某個(gè)內(nèi)存塊保留下來(lái)以供程序使用,其內(nèi)的值是可變的。
聲明變量的作用
1、指定在內(nèi)存中分配空間的大小
2、規(guī)定這個(gè)變量所能接受的運(yùn)算
3.變量的命名規(guī)則
1、變量名可由任意順序的大小寫(xiě)字母、數(shù)字、下劃線(xiàn)(_)和美元符號(hào)($)(非常不建議使用)等組成
2、變量名不能以數(shù)字開(kāi)頭
3、變量名不能是Java中的保留關(guān)鍵字
4.變量的作用范圍
作用范圍有時(shí)也稱(chēng)為作用域
按作用范圍劃分,變量分為成員變量和局部變量
【成員變量】
在類(lèi)中定義的變量為成員變量。它的作用范圍是整個(gè)類(lèi)。也就是說(shuō)在這個(gè)類(lèi)中都可以訪問(wèn)到定義的這個(gè)成員變量。
public class HelloWorld{
static int a=10;//定義一個(gè)成員變量
public static void main(String[] args){
int num=10;
System.out.println("num");
}
}
【局部變量】
在一個(gè)函數(shù)(或稱(chēng)方法)或函數(shù)代碼塊仲定義的變量稱(chēng)為局部變量,局部變量在函數(shù)或代碼塊被執(zhí)行時(shí)創(chuàng)建,在函數(shù)或代碼塊結(jié)束時(shí)被銷(xiāo)毀。
public class HelloWorld{
static int a=10;//定義一個(gè)成員變量
public static void main(String[] args){
int num=10;//定義一個(gè)局部變量
System.out.println("num");
}
}
【注意】局部變量在進(jìn)行取值操作前必須被初始化或賦值操作,否則會(huì)出現(xiàn)編譯錯(cuò)誤!
總結(jié)
數(shù)據(jù)類(lèi)型那一部分的內(nèi)容想了想,還是不要拆開(kāi)來(lái)寫(xiě)博客,于是我打算在整一節(jié)學(xué)完之后,再給大家整理。這次就先整理這么多內(nèi)容。
到此這篇關(guān)于Java程序結(jié)構(gòu)與常量變量難點(diǎn)解析的文章就介紹到這了,更多相關(guān)Java 程序結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java?spring?validation?自動(dòng)、手動(dòng)校驗(yàn)
HibernateValidator簡(jiǎn)化了Java開(kāi)發(fā)中的參數(shù)校驗(yàn)過(guò)程,提供自動(dòng)和手動(dòng)兩種校驗(yàn)方式,通過(guò)引入相關(guān)依賴(lài)并使用@Validated注解,可以實(shí)現(xiàn)自動(dòng)校驗(yàn),手動(dòng)校驗(yàn)則需要使用ValidatorUtils類(lèi),此方法有效減少代碼重復(fù),提高開(kāi)發(fā)效率2024-09-09
詳解SpringBoot 發(fā)布ApplicationEventPublisher和監(jiān)聽(tīng)ApplicationEvent事
這篇文章主要介紹了詳解SpringBoot 發(fā)布ApplicationEventPublisher和監(jiān)聽(tīng)ApplicationEvent事件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
java中xml進(jìn)行報(bào)文發(fā)送和解析操作
這篇文章主要介紹了java中xml進(jìn)行報(bào)文發(fā)送和解析操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
詳解如何在SpringBoot項(xiàng)目中使用統(tǒng)一返回結(jié)果
在一個(gè)完整的項(xiàng)目中,如果每一個(gè)控制器的方法都返回不同的結(jié)果,那么對(duì)項(xiàng)目的維護(hù)和擴(kuò)展都會(huì)很麻煩。因此,本文為大家準(zhǔn)備了SpringBoot項(xiàng)目中使用統(tǒng)一返回結(jié)果的方法,需要的可以參考一下2022-10-10
關(guān)于Spring Boot WebSocket整合以及nginx配置詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot WebSocket整合以及nginx配置的相關(guān)資料,文中通過(guò)示例代碼給大家介紹的非常詳細(xì),相信對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)下吧。2017-09-09
Intellij idea 代碼提示忽略字母大小寫(xiě)和常用快捷鍵及設(shè)置步驟
這篇文章主要介紹了Intellij idea 代碼提示忽略字母大小寫(xiě)和常用快捷鍵及設(shè)置步驟,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02
解決Spring在Thread中注入Bean無(wú)效的問(wèn)題
這篇文章主要介紹了解決Spring在Thread中注入Bean無(wú)效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Springboot熱加載JAR包的實(shí)現(xiàn)方法
SpringBoot作為一個(gè)開(kāi)發(fā)快速、部署方便的微服務(wù)框架,具有自動(dòng)配置、約定優(yōu)于配置的特點(diǎn),能夠極大地提高開(kāi)發(fā)效率,它提供了豐富的擴(kuò)展點(diǎn),非常適合實(shí)現(xiàn)動(dòng)態(tài)加載Jar包的功能,本文將深入探討如何在SpringBoot應(yīng)用中實(shí)現(xiàn)動(dòng)態(tài)加載Jar包的方案,感興趣的朋友一起看看吧2024-04-04
Spring Web MVC框架學(xué)習(xí)之配置Spring Web MVC
這一篇文章講的是Spring Web MVC各部分的配置方法,包括Java代碼配置和XML文件配置以及MVC命名空間的使用方法。2017-03-03

