Java虛擬機(JVM)是用于解釋Java字節(jié)碼文件的工具。Java字節(jié)碼是Java源代碼編譯后生成的中間代碼,JVM可以將其解釋執(zhí)行,并將其轉(zhuǎn)換為機器碼,從而實現(xiàn)跨平臺的Java應(yīng)用程序。除了JVM,還有一些其他的工具可以用于解釋字節(jié)碼文件,例如JIT編譯器和反匯編器等。Java虛擬機(JVM)是用于解釋Java字節(jié)碼文件的工具。Java字節(jié)碼是Java源代碼編譯后生成的中間代碼,JVM可以將其解釋執(zhí)行,并將其轉(zhuǎn)換為機器碼,從而實現(xiàn)跨平臺的Java應(yīng)用程序。除了JVM,還有一些其他的工具可以用于解釋字節(jié)碼文件,例如JIT編譯器和反匯編器等。
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)西湖免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
?這個問題確實是由較高版本的JDK編譯的java class文件試圖在較低版本的JVM上運行產(chǎn)生的錯誤。
1、解決措施就是保證jvm(java命令)和jdk(javac命令)版本一致。如果是linux版本,則在命令行中分別輸入java -version和javac -version命令來查看版本是否一致。這里假設(shè)都是1.7版本。
2、如果都一致,但還是解決不了問題,那么你肯定不是直接在命令行中用javac來編譯的,而是用類似于eclipse、netbeans這樣的編譯器來編譯的。因為很多編譯器都自帶javac,而不是采用操作系統(tǒng)中的編譯器。如果你的編譯器是eclipse的話,那么需要在項目的屬性里設(shè)置jdk版本,方法是右擊項目--properties--java compiler -- Enable project specific settings --將compiler compliance level設(shè)置為1.7,也就是與jvm一致的版本(在命令行中java -version所顯示的版本)。
綜上,如果你是用編譯器來編譯的話,請首先確保編譯器自帶的jdk版本是否和操作系統(tǒng)中的java版本一致。
見下圖:
Double類中本來就有個方法parseDouble() ,作用是把字符串轉(zhuǎn)換為Double。
比如你要把字符串轉(zhuǎn)換為整數(shù)也是一樣的方法:int a=Integer.parseInt("");
英文意思是:解析,其實就是把其他數(shù)據(jù)(ch)給我轉(zhuǎn)換成 Double的意思
擴展資料:
Java工作原理:
由四方面組成:
(1)Java編程語言
(2)Java類文件格式
(3)Java虛擬機
(4)Java應(yīng)用程序接口
當(dāng)編輯并運行一個Java程序時,需要同時涉及到這四種方面。使用文字編輯軟件(例如記事本、寫字板、UltraEdit等)或集成開發(fā)環(huán)境(Eclipse、MyEclipse等)在Java源文件中定義不同的類,
通過調(diào)用類(這些類實現(xiàn)了Java API)中的方法來訪問資源系統(tǒng),把源文件編譯生成一種二進(jìn)制中間碼,存儲在class文件中,然后再通過運行與操作系統(tǒng)平臺環(huán)境相對應(yīng)的Java虛擬機來運行class文件,執(zhí)行編譯產(chǎn)生的字節(jié)碼,調(diào)用class文件中實現(xiàn)的方法來滿足程序的Java API調(diào)用。
1997年11月17日,國際標(biāo)準(zhǔn)化組織(ISO)同意采納Sun公司的專利技術(shù)——Java作為ISO標(biāo)準(zhǔn)。JAVA作為一個技術(shù)標(biāo)準(zhǔn)供公眾無償使用。根據(jù)ISO的批準(zhǔn),Sun公司將可提交JAVA的標(biāo)準(zhǔn)化平臺規(guī)范。
參考資料:百度百科——Java
什么是Java?
Java好象隨處可見 - 甚至在TV中。盡管如此,說清楚Java是什 ??么和它能做什么卻不那么容易。剛開始接觸Java的人通常有三?
個問題:?
什么是Java??
Java能做什么??
Java怎樣改變我的生活??
讓我們先回答第一個問題:什么是Java??
Java既是一種編程語言,又是一個平臺。?
Java程序語言?
Java是具有以下特征的高級程序語言:?
簡單?
面向?qū)ο?
可分布?
可解釋?
強壯?
安全性?
結(jié)構(gòu)化?
輕便?
功能強大?
多線程?
動態(tài)?
Java既可以被編譯,也可以被解釋。通過編譯器,可以把Java?程序翻譯成一種中間代碼 - 稱為字節(jié)碼 - 可以被Java解釋器?
解釋的獨立于平臺的代碼。通過解釋器,每條Java字節(jié)指令被?分析,然后在計算機上運行。只需編譯一次,程序運行時解釋?執(zhí)行。
一 有很多教程,叫學(xué)了也白搭
這年頭,網(wǎng)上的Java教程一堆一堆的,看的我們很多Java寶寶們是眼花繚亂,不知該如何是好,我當(dāng)年也是從這個過程走過來的,每天看很多老師的Java教程,聽的自己暈頭轉(zhuǎn)向的,當(dāng)然我不是說他們講錯了,他們講的知識層面的東西是對的,但是很多做Java教程的老師不善于深入淺出,通俗易懂的來為我們講解知識,什么是好教程?好教程就是讓我們學(xué)了之后,有一種豁然開朗的感覺,而不是云深不知處,我想說的是這種教程,不看也罷,浪費了時間,迷茫了自己。
二 有一種教程叫無論你身處何地,都能現(xiàn)場直播教你
現(xiàn)在很多網(wǎng)上流傳的教程都是很多年前的,遠(yuǎn)遠(yuǎn)的不適應(yīng)現(xiàn)在Java新應(yīng)用的需要,基本上都是一些淘汰貨,很多小伙伴們,從網(wǎng)上找這種破爛,學(xué)的還不亦樂乎,也是醉了。綜上所述,我們很多人學(xué)不好Java,是因為 一開始就選擇錯了,選擇不對,努力白費。為了能夠讓廣大Java學(xué)子們在網(wǎng)上學(xué)到Java的系統(tǒng)精華知識,通俗易懂的理解這些知識,我們決定現(xiàn)在每天晚上現(xiàn)場直播在網(wǎng)上教大家學(xué)習(xí)Java,我們的老師,一般的老師不用,我們只讓牛掰的老師講,而你什么都不需要付出,你只需要來我們這個群里聽就行,開頭的的第一部分是:426.,位于中間的第二部分是:396,處于最后一部分的是:284,學(xué)習(xí)沒有任何借口,想強大就要努力,同時這也不是一個單打獨斗的時代了,大家在這里一塊學(xué)習(xí),打拼出屬于我們的Java新天地。
三Java新手入門的30個基本概念
在我們學(xué)習(xí)Java的過程中,掌握其中的基本概念對我們的學(xué)習(xí)無論是J2SE,J2EE,J2ME都是很重要的,J2SE是Java的基礎(chǔ),所以有必要對其中的基本概念做以歸納,以便大家在以后的學(xué)習(xí)過程中更好的理解java的精髓,在此我總結(jié)了30條基本的概念。?
Java概述:?
目前Java主要應(yīng)用于中間件的開發(fā)(middleware)---處理客戶機于服務(wù)器之間的通信技術(shù),早期的實踐證明,Java不適合pc應(yīng)用程序的開發(fā),其發(fā)展逐漸變成在開發(fā)手持設(shè)備,互聯(lián)網(wǎng)信息站,及車載計算機的開發(fā).Java于其他語言所不同的是程序運行時提供了平臺的獨立性,稱許可以在windows,solaris,linux其他操作系統(tǒng)上使用完全相同的代碼.Java的語法與C++語法類似,C++/C程序員很容易掌握,而且Java是完全的徹底的面向?qū)ο蟮?其中提出了很好的GC(Garbage Collector)垃圾處理機制,防止內(nèi)存溢出。?
Java的白皮書為我們提出了Java語言的11個關(guān)鍵特質(zhì)。?
(1)Easy:Java的語法比C++的相對簡單,另一個方面就是Java能使軟件在很小的機器上運行,基礎(chǔ)解釋其和類庫的支持的大小約為40kb,增加基本的標(biāo)準(zhǔn)庫和線程支持的內(nèi)存需要增加125kb。?
(2)分布式:Java帶有很強大的TCP/IP協(xié)議族的例程庫,Java應(yīng)用程序能夠通過URL來穿過網(wǎng)絡(luò)來訪問遠(yuǎn)程對象,由于servlet機制的出現(xiàn),使Java編程非常的高效,現(xiàn)在許多的大的web server都支持servlet。?
(3)OO:面向?qū)ο笤O(shè)計是把重點放在對象及對象的接口上的一個編程技術(shù).其面向?qū)ο蠛虲++有很多不同,在與多重繼承的處理及Java的原類模型。?
(4)健壯特質(zhì):Java采取了一個安全指針模型,能減小重寫內(nèi)存和數(shù)據(jù)崩潰的可能型。?
(5)安全:Java用來設(shè)計網(wǎng)路和分布系統(tǒng),這帶來了新的安全問題,Java可以用來構(gòu)建防病毒和防攻擊的System.事實證明Java在防毒這一方面做的很優(yōu)秀。
(6)中立體系結(jié)構(gòu):Java編譯其生成體系結(jié)構(gòu)中立的目標(biāo)文件格式可以在很多處理器上執(zhí)行,編譯器產(chǎn)生的指令字節(jié)碼(Javabytecode)實現(xiàn)此特性,此字節(jié)碼可以在任何機器上解釋執(zhí)行。?
(7)可移植:Java中對基本數(shù)據(jù)結(jié)構(gòu)類型的大小和算法都有嚴(yán)格的規(guī)定所以可移植很好。?
(8)多線程:Java處理多線程的過程很簡單,Java把多線程實現(xiàn)交給底下操作系統(tǒng)或線程程序完成.所以多線程是Java作為服務(wù)器端開發(fā)語言的流行原因之一。?
(9)Applet和servlet:能夠在網(wǎng)頁上執(zhí)行的程序叫Applet,需要支持Java的瀏覽器很多,而applet支持動態(tài)的網(wǎng)頁,這是很多其他語言所不能做到的。
基本概念:?
1.OOP中唯一關(guān)系的是對象的接口是什么,就像計算機的銷售商她不管電源內(nèi)部結(jié)構(gòu)是怎樣的,他只關(guān)系能否給你提供電就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的屬性和行為對象組成的,不同的對象的訪問通過函數(shù)調(diào)用來完成,對象間所有的交流都是通過方法調(diào)用,通過對封裝對象數(shù)據(jù),很大限度上提高復(fù)用率。?
2.OOP中最重要的思想是類,類是模板是藍(lán)圖,從類中構(gòu)造一個對象,即創(chuàng)建了這個類的一個實例(instance)。?
3.封裝:就是把數(shù)據(jù)和行為結(jié)合起在一個包中)并對對象使用者隱藏數(shù)據(jù)的實現(xiàn)過程,一個對象中的數(shù)據(jù)叫他的實例字段(instance field)。?
4.通過擴展一個類來獲得一個新類叫繼承(inheritance),而所有的類都是由Object根超類擴展而得,根超類下文會做介紹。?
5.對象的3個主要特點
behavior---說明這個對象能做什么.?
state---當(dāng)對象施加方法時對象的反映.?
identity---與其他相似行為對象的區(qū)分標(biāo)志.?
每個對象有唯一的indentity 而這3者之間相互影響.?
6.類之間的關(guān)系:?
use-a :依賴關(guān)系?
has-a :聚合關(guān)系?
is-a :繼承關(guān)系--例:A類繼承了B類,此時A類不僅有了B類的方法,還有其自己的方法.(個性存在于共性中)?
7.構(gòu)造對象使用構(gòu)造器:構(gòu)造器的提出,構(gòu)造器是一種特殊的方法,構(gòu)造對象并對其初始化。?
例:Data類的構(gòu)造器叫Data?
new Data()---構(gòu)造一個新對象,且初始化當(dāng)前時間.?
Data happyday=new Data()---把一個對象賦值給一個變量happyday,從而使該對象能夠多次使用,此處要聲明的使變量與對象變量二者是不同的.new返回的值是一個引用。?
構(gòu)造器特點:構(gòu)造器可以有0個,一個或多個參數(shù)?
構(gòu)造器和類有相同的名字?
一個類可以有多個構(gòu)造器?
構(gòu)造器沒有返回值?
構(gòu)造器總是和new運算符一起使用.?
8.重載:當(dāng)多個方法具有相同的名字而含有不同的參數(shù)時,便發(fā)生重載.編譯器必須挑選出調(diào)用哪個方法。?
9.包(package)Java允許把一個或多個類收集在一起成為一組,稱作包,以便于組織任務(wù),標(biāo)準(zhǔn)Java庫分為許多包.java.lang java.util java,net等,包是分層次的所有的java包都在java和javax包層次內(nèi)。?
10.繼承思想:允許在已經(jīng)存在的類的基礎(chǔ)上構(gòu)建新的類,當(dāng)你繼承一個已經(jīng)存在的類時,那么你就復(fù)用了這個類的方法和字段,同時你可以在新類中添加新的方法和字段。?
11.擴展類:擴展類充分體現(xiàn)了is-a的繼承關(guān)系. 形式為:class (子類) extends (基類)。?
12.多態(tài):在java中,對象變量是多態(tài)的.而java中不支持多重繼承。?
13.動態(tài)綁定:調(diào)用對象方法的機制。?
(1)編譯器檢查對象聲明的類型和方法名。?
(2)編譯器檢查方法調(diào)用的參數(shù)類型。?
(3)靜態(tài)綁定:若方法類型為priavte static final 編譯器會準(zhǔn)確知道該調(diào)用哪個方法。?
(4)當(dāng)程序運行并且使用動態(tài)綁定來調(diào)用一個方法時,那么虛擬機必須調(diào)用x所指向的對象的實際類型相匹配的方法版本。?
(5)動態(tài)綁定:是很重要的特性,它能使程序變得可擴展而不需要重編譯已存代碼。?
14.final類:為防止他人從你的類上派生新類,此類是不可擴展的。?
15.動態(tài)調(diào)用比靜態(tài)調(diào)用花費的時間要長。?
16.抽象類:規(guī)定一個或多個抽象方法的類本身必須定義為abstract。?
例: public abstract string getDescripition?
17.Java中的每一個類都是從Object類擴展而來的。?
18.object類中的equal和toString方法。?
equal用于測試一個對象是否同另一個對象相等。?
toString返回一個代表該對象的字符串,幾乎每一個類都會重載該方法,以便返回當(dāng)前狀態(tài)的正確表示.?
(toString 方法是一個很重要的方法)?
19.通用編程:任何類類型的所有值都可以同object類性的變量來代替。?
20.數(shù)組列表:ArrayList動態(tài)數(shù)組列表,是一個類庫,定義在java.uitl包中,可自動調(diào)節(jié)數(shù)組的大小。?
21.class類 object類中的getclass方法返回ckass類型的一個實例,程序啟動時包含在main方法的類會被加載,虛擬機要加載他需要的所有類,每一個加載的類都要加載它需要的類。?
22.class類為編寫可動態(tài)操縱java代碼的程序提供了強大的功能反射,這項功能為JavaBeans特別有用,使用反射Java能支持VB程序員習(xí)慣使用的工具。?
能夠分析類能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射機制十分強大.?
1.在運行時分析類的能力。?
2.在運行時探察類的對象。?
3.實現(xiàn)通用數(shù)組操縱代碼。?
4.提供方法對象。?
而此機制主要針對是工具者而不是應(yīng)用及程序。?
反射機制中的最重要的部分是允許你檢查類的結(jié)構(gòu).用到的API有:?
java.lang.reflect.Field 返回字段.?
java.reflect.Method 返回方法.?
java.lang.reflect.Constructor 返回參數(shù).?
方法指針:java沒有方法指針,把一個方法的地址傳給另一個方法,可以在后面調(diào)用它,而接口是更好的解決方案。?
23.接口(Interface)說明類該做什么而不指定如何去做,一個類可以實現(xiàn)一個或多個interface。?
24.接口不是一個類,而是對符合接口要求的類的一套規(guī)范。?
若實現(xiàn)一個接口需要2個步驟:?
1.聲明類需要實現(xiàn)的指定接口。?
2.提供接口中的所有方法的定義。?
聲明一個類實現(xiàn)一個接口需要使用implements 關(guān)鍵字?
class actionB implements Comparable 其actionb需要提供CompareTo方法,接口不是類,不能用new實例化一個接口.?
25.一個類只有一個超類,但一個類能實現(xiàn)多個接口。Java中的一個重要接口:Cloneable?
26.接口和回調(diào).編程一個常用的模式是回調(diào)模式,在這種模式中你可以指定當(dāng)一個特定時間發(fā)生時回調(diào)對象上的方法。?
例:ActionListener 接口監(jiān)聽.?
類似的API有:java.swing.JOptionPane?
java.swing.Timer?
java.awt.Tookit?
27.對象clone:clone方法是object一個保護方法,這意味著你的代碼不能簡單的調(diào)用它。?
28.內(nèi)部類:一個內(nèi)部類的定義是定義在另一個內(nèi)部的類。?
原因是:?
1.一個內(nèi)部類的對象能夠訪問創(chuàng)建它的對象的實現(xiàn),包括私有數(shù)據(jù)。?
2.對于同一個包中的其他類來說,內(nèi)部類能夠隱藏起來。?
3.匿名內(nèi)部類可以很方便的定義回調(diào)。?
4.使用內(nèi)部類可以非常方便的編寫事件驅(qū)動程序。?
29.代理類(proxy):?
1.指定接口要求所有代碼?
2.object類定義的所有的方法(toString equals)?
30.數(shù)據(jù)類型:Java是強調(diào)類型的語言,每個變量都必須先申明它都類型,java中總共有8個基本類型.4種是整型,2種是浮點型,一種是字符型,被用于Unicode編碼中的字符,布爾型。