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

歡迎訪問 生活随笔!

生活随笔

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

java

谈谈Java基础数据类型

發布時間:2023/12/10 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈谈Java基础数据类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java的基本數據類型

類型意義取值
boolean布爾值true或false
byte8位有符號整型-128~127
short16位有符號整型-pow(2,15)~pow(2,15)-1
int32位有符號整型-pow(2,31)~pow(2,31)-1
long64位有符號整型-pow(2,63)~pow(2,63)-1
float32位浮點數IEEE754標準單精度浮點數
double64位浮點數IEEE754標準雙精度浮點數
char字符型16位不帶符號,Unicode字符

JVM本地對應的類型

typedef unsigned char jboolean; typedef signed char jbyte; typedef short jshort; typedef int jint; typedef long long jlong; 或 typedef __int64 jlong; typedef double jdouble; typedef float jfloat; typedef unsigned short jchar;復制代碼

java的boolean在jvm中對應unsigned char類型(0為false而非0為true);byte對應signed char類型;short對應short類型;int對應int類型;long對應long long或者_int64類型;double對應double類型;float對應float類型;char對應unsigned short類型。

編譯器生成bytecode的類型

compiler將java編譯為class,而class文件除了結構信息和元數據等,還包含了bytecode,這其實就是虛擬機的指令,好比物理機的機器指令。舉個例子,

public int getInt(){int a = 100;return a;}復制代碼

生成該方法的bytecode為

bipush 100 istore_1 iload_1 ireturn復制代碼

bipush 100將100以byte型推進operand stack中,istore_1將operand stack頂int型數值存入第二個局部變量,iload_1將第二個int型局部變量推進operand stack,ireturn返回int。

對于一些toy jvm會簡單地直接用C/C++處理指令,但對于工業級的openjdk中的Hotspot則會繼續生成匯編指令執行。

從上面的情況可以看到java的int型編譯成bytecode后可能會變成byte型來表示,這個主要取決于java的int型數值的大小,編譯器會在編譯期間判斷大小從而生成對應的指令,比如小于128時則為bipush,大于138且小于32768時則為sipush,它表示以short型表示,而大于32768的則都是用ldc+常量池來表示。

執行時的類型

在指令執行時JVM并不需要指明類型,因為指令已經包含了類型信息,但由于bytecode指令只用1個字節來表示,所以指令數量需要控制,并不是每種基礎數據類型都有對應的操作指令,比如iload lload fload dload對應int long float and double。類似還有ireturn lreturn freturn dreturn。

所以執行引擎只要根據不同的指令做不同的類型處理即可。

Java調本地

如果某個java對象調用了native方法,此本地方法由編譯器編譯后access flags 會生成ACC_NATIVE標識,執行引擎執行bytecode時,根據java-jvm類型的映射也可能會涉及到類型處理。

相關閱讀:
從JDK源碼角度看并發鎖的優化
從JDK源碼角度看線程的阻塞和喚醒
從JDK源碼角度看并發競爭的超時
從JDK源碼角度看Java并發的公平性
從JDK源碼角度看java并發線程的中斷

====廣告時間,可直接跳過====

鄙人的新書《Tomcat內核設計剖析》已經在京東預售了,有需要的朋友可以到 item.jd.com/12185360.ht… 進行預定。感謝各位朋友。

=========================

歡迎關注:

這里寫圖片描述

總結

以上是生活随笔為你收集整理的谈谈Java基础数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

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