java格式,java格式化時間

本文目錄一覽:

JAVA程序編寫的文件是什麼格式的

JAVA

程序編寫的源文件(源代碼)是以”.java”為結尾的,JVM(JAVA虛擬機解析的文件)是以”.class”為結尾的,”.class”文件就是java的可執行文件,同.exe文件具有同等的效果,.class文件採用的是魔力數字存儲,同時為了在不同的CPU下運行,規定了位元組的保存形式,採用大端位元組順序(BIG_ENDIAN)來保存的。而且”.class”文件裡面包含有編譯器的版本以及兼容性數據!

Java支持的數據類型有哪些?什麼是自動拆裝箱?

java支持的數據類型有兩大類:  一類是基本數據類型分為8種 (數據)   byte——(單位元組)   sort——(雙位元組)   int——(4位元組)    long——(8位元組)   float——(4位元組)    double——(8位元組)    char——(雙位元組)    boolean——(雙位元組) 前面四種為整數類型,5和6為浮點數類型,7為字元類型,8為布爾類型。  一類是引用類型3種(除了數據還有地址編號) Object——(類類型)  Array——(數組類型)  Interface——(介面類型)  JVM在解釋java變數的時候是把它們按照數據類型區分的,基本數據類型的變數會存儲在棧空間中,而引用類型在棧空間存放的是地址編號,它們的數據是存儲在堆空間中的。查找引用類型變數的時候現在棧空間拿到該變數 在堆空間存儲數據的地址編號,然後再到堆空間按照拿到的地址編號取數據。

一、Java簡介

Java是一種面向對象的編程語言。Java語言有兩個特點:功能強大和使用方便。Java具有簡單的、面向對象的和分散式的特點。它可以編寫桌面應用程序、Web應用程序、分散式系統和嵌入式系統應用程序。

二、java的工作原理

在編輯和運行一個Java程序時,這四個方面需要同時涉及:(1)Java編程語言;(2)Java類文件格式;(3)Java虛擬機;(4)Java應用程序介面。使用文本編輯軟體(如寫字板、記事本、UltraEdit等)或集成開發環境(MyEclipse、Eclipse等)。在Java源文件中定義不同的類,通過調用類中的方法訪問資源系統(這些類實現Java API),編譯源文件生成二進位中間代碼,並存儲在類文件中。然後通過運行操作系統平台環境對應的Java虛擬機運行類文件,執行編譯生成的位元組碼,調用類文件中實現的方法,滿足程序的Java API調用。

三、Java的貢獻及影響力

Java語言是一種與時俱進的計算機語言程序。它深刻地展現了編程的本質,其簡潔嚴謹的結構和簡潔的語法為其未來的開發和維護提供了保障。因為它提供了網路應用和多媒體訪問的支持,所以它將促進互聯網和企業網路的應用。此外,為了保持Java的增長,促進Java社區的參與,Sun在Java One開發者大會上宣布開放Java核心源代碼,鼓勵更多人參與Java社區活動。在Java社區和IBM等全球技術合作夥伴的支持下,Java技術繼續在創新和社會進步中發揮著強大而重要的作用,並且隨著其編程難度的降低,更多的專業人士專註於Java語言的編寫和框架結構的設計。

JAVA文件是什麼東西?

Java是一種語言。

Java文件就是用用Java語言編寫的文件。

樓上說的手機之類的:

有的手機系統是用Java語言開發的的手機系統。

智能機與非智能機:

非智能機只可以安裝Java格式的遊戲和程序。而智能機則不但可以安裝Java格式的遊戲和程序,還可以安裝其他格式的。對於這另外一種格式,要看你的手機系統是哪一種了。

什麼是Java位元組碼?

它是程序的一種低級表示,可以運行於Java虛擬機上。將程序抽象成位元組碼可以保證Java程序在各種設備上的運行

Java號稱是一門「一次編譯到處運行」的語言,從我們寫的java文件到通過編譯器編譯成java位元組碼文件(.class文件),這個過程是java編譯過程;而我們的java虛擬機執行的就是位元組碼文件。不論該位元組碼文件來自何方,由哪種編譯器編譯,甚至是手寫位元組碼文件,只要符合java虛擬機的規範,那麼它就能夠執行該位元組碼文件。

JAVA程序的運行

因為Java具有跨平台特性,為了實現這個特性Java執行在一台虛擬機上,這台虛擬機也就是JVM,Java通過JVM屏蔽了不同平台之間的差異,從而做到一次編譯到處執行。JVM位於Java編譯器和OS平台之間,Java編譯器只需面向JVM,生成JVM能理解的代碼,這個代碼即位元組碼,JVM再將位元組碼翻譯成真實機器所能理解的二進位機器碼。

位元組碼是怎麼產生的?

我們所編寫的程序都是.java格式,通常在執行的時候也許點擊一下eclipse的運行鍵就可以在控制台看到運行結果,但是也可以更酷一些,如果你裝了JDK,那就可以直接在以命令行的方式編譯運行你的.java文件,編譯後會形成.class文件,這個.class文件即位元組碼。

位元組碼怎麼解讀?

上圖是編譯好的位元組碼文件,即一堆16進位的位元組,如果使用IDE去打開,也許看到的是已經被反編譯的我們所熟悉的java代碼,但這才是純正的位元組碼

這裡只介紹位元組碼由哪些部分組成, 具體的意思自行百度或者看文尾的連接, 有較為詳細的講解

上圖即位元組碼文件的組成部分, Class文件的結構不像XML等描述語言那樣鬆散自由。由於它沒有任何分隔符號,

所以,以上數據項無論是順序還是數量都是被嚴格限定的。哪個位元組代表什麼含義,長度是多少,先後順序如何,都不允許改變, 如上圖左側即每一部分規定的長度

魔數(Magic Number)

魔數是用來區分文件類型的一種標誌,一般都是用文件的前幾個位元組來表示。

比如0XCAFE BABE表示的是class文件,那麼有人會問,文件類型可以通過文件名後綴來判斷啊?是的,但是文件名是可以修改的(包括後綴),那麼為了保證文件的安全性,將文件類型寫在文件內部來保證不被篡改。

至於為什麼是CAFE BABE估計大家也能猜到, 程序員與咖啡的不解之緣

版本號(Version)

版本號含主版本號和次版本號,都是各佔2個位元組。在此Demo種為0X0000 0033。其中前面的0000是次版本號,後面的0033是主版本號。通過進位轉換得到的是次版本號為0,主版本號為51。高版本的JDK能向下兼容以前版本的Class文件,但不能運行以後版本的Class文件,即使文件格式未發生任何變化. 這就是target參數的用處,可以在使用JDK 1.7編譯時指定-target 1.5

常量池(Constant Pool)

常量池是Class文件中的資源倉庫, 量池中主要存儲2大類常量:字面量和符號引用。字面量如文本字元串,java中聲明為final的常量值等等,而符號引用如類和介面的全局限定名,欄位的名稱和描述符,方法的名稱和描述符。常量池是一個表結構,在表的內容前有一個類型的計數器,表示常量池的長度

上面的表中描述了11中數據類型的結構,其實在jdk1.7之後又增加了3種(CONSTANT_MethodHandle_info,CONSTANT_MethodType_info以及CONSTANT_InvokeDynamic_info)。這樣算起來一共是14種

訪問標誌(Access_Flag)

訪問標誌信息包括該Class文件是類還是介面,是否被定義成public,是否是abstract,如果是類,是否被聲明成final。通過上面的源代碼,我們知道該文件是類並且是public。

0x 00 21:是0×0020和0×0001的並集。其中0×0020這個標誌值涉及到位元組碼指令

類索引(This Class Name)

類索引用於確定類的全限定名

0×00 03 表示引用第3個常量,同時第3個常量引用第19個常量,查找得」com/demo/Demo」。#3.#19

父類索引(Super Class Name)

0×00 04 同理:#4.#20(java/lang/Object)

介面索引(Interfaces)

通過上邊位元組碼圖可以看到,這個介面有2+n個位元組,前兩個位元組表示的是介面數量,後面跟著就是介面的表。我們這個類沒有任何介面,所以應該是0000。果不其然,查找位元組碼文件得到的就是0000。

欄位表集合(fields)

欄位表用於描述類和介面中聲明的變數。這裡的欄位包含了類級別變數以及實例變數,但是不包括方法內部聲明的局部變數。接下來就是2+n個欄位屬性。我們只有一個屬性a,所以應該是0001。查找文件果不其然是0001。

該區域含有欄位的訪問標誌, 訪問許可權, 欄位的名稱索引, 欄位的描述符索引, 屬性表

描述符的作用就是用來描述欄位的數據類型、方法的參數列表和返回值。而屬性表就是為欄位表和方法表提供額外信息的表結構。對於欄位來說,此處如果將欄位聲明為一個static final msg = “aaa”的常量,則欄位後就會跟著一個屬性表,其中存在一項名為ConstantValue,指向常量池中的一個常量,值為的”aaa”。

方法(methods)

包含訪問標誌表, 方法名索引 , 方法描述符索引, 屬性表數量,等

Attribute

0×0001 :同樣的,表示有1個Attributes了。

0x000f : #15(「SourceFile」)

0×0000 0002 attribute_length=2

0×0010 : sourcefile_index = #16(「Demo.java」)

SourceFile屬性用來記錄生成該Class文件的源碼文件名稱。

java文件格式是什麼?

Java一般存在兩種文件格式,如下:

1.*.java文件是保存源代碼的文本文件

(*代表類名)

使用

javac

*.java可以編譯該文件

使用

java

*可以運行該類

2.*.class是用於保存

Java類的

二進位編碼以及Class對象,每一個

Java類都有一個解釋該類特徵的

Class對象。*.jar文件

是一種壓縮文件格式

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/198531.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-04 10:25
下一篇 2024-12-04 10:25

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件並生成完整的圖像

    OBJ格式是一種用於表示3D對象的標準格式,通常由一組頂點、面和紋理映射坐標組成。在本文中,我們將討論如何將多個OBJ文件拼接在一起,生成一個完整的3D模型。 一、讀取OBJ文件 …

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論