程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 談談Java中整數類型(short int long)的存儲方法

談談Java中整數類型(short int long)的存儲方法

編輯:關於JAVA

談談Java中整數類型(short int long)的存儲方法。本站提示廣大學習愛好者:(談談Java中整數類型(short int long)的存儲方法)文章只能為提供參考,不一定能成為您想要的結果。以下是談談Java中整數類型(short int long)的存儲方法正文


在java中的整數類型有四種,分離是 byte  short int long 個中byte只要一個字節 0或1,在此不具體講授。

其他的三品種型以下:

1、
根本類型:short 二進制位數:16
包裝類:java.lang.Short
最小值:Short.MIN_VALUE=-32768 (-2的15此方)
最年夜值:Short.MAX_VALUE=32767 (2的15次方-1)

2、
根本類型:int 二進制位數:32
包裝類:java.lang.Integer
最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方)
最年夜值:Integer.MAX_VALUE= 2147483647  (2的31次方-1)

3、
根本類型:long 二進制位數:64
包裝類:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808 (-2的63次方)
最年夜值:Long.MAX_VALUE=9223372036854775807 (2的63次方-1)

拿short類型舉例:

  起首須要明確在盤算機中最高位為符號位,0表現負數,1表現正數。在盤算機中數據是應用其補碼表現的,但負數補碼是其自己,正數的補碼是正數的源碼取反加一獲得的補碼。

1、負數的原碼、反碼、補碼都相等

    例:0000 1010(在十進制中表現+10,左數第一名為符號位)
    它的原碼、反碼、補碼都是0000 1010

2、正數的原碼是其自己,正數的反碼是將符號不變,把符號後邊的數取反,關於正數的補碼 是把原碼取反後加1

    例:1000 1010(在十進制中表現-10)
    它的原碼是 1000 1010
    它的反碼是 1111 0101
    它的補碼是 1111 0110

    例如short類型: -1  二進制標示: 10000000 00000001(最年夜的負整數-1 )

          取反:          11111111 11111110  

          加1 補碼:      11111111 11111111  (最年夜的負整數-1在盤算機中的標示辦法)

明確了 以上這些再說short的二進制標示:

    先看這個: 最小的負整數 -32768     盤算機中二進制標示:10000000   00000000

          最年夜的負整數-1     盤算機中二進制標示:11111111  11111111

          0           盤算機中二進制標示:00000000  0000000

         最小的正整數 1               盤算機中二進制標示: 00000000 00000001

         最年夜的正整數:32767  盤算機中二進制標示: 01111111  11111111

最小的正數-32768加1以後盤算機中二進制標示為:10000000  00000001 一向加1直到到 11111111 11111111(-1)到達最年夜的負整數,然後再加1變成:1 00000000  0000000   留意此處字節長度為 17位,而short類型只取 16位即:00000000  0000000   所以-1+1以後變成0 然後00000000 00000000再一向加1直到 01111111  11111111 到達最年夜正整數(32767),32767再加1變成:10000000   00000000 即為最小的負整數 -32768(2^15)

ps:數據類型之間的轉換

1).簡略類型數據間的轉換,有兩種方法:主動轉換和強迫轉換,平日產生在表達式中或辦法的參數傳遞時。

主動轉換

詳細地講,當一個較"小"數據與一個較"年夜"的數據一路運算時,體系將主動將"小"數據轉換成"年夜"數據,再停止運算。而在辦法挪用時,現實參數較"小",而被挪用的辦法的情勢參數數據又較"年夜"時(如有婚配的,固然會直接挪用婚配的辦法),體系也將主動將"小"數據轉換成"年夜"數據,再停止辦法的挪用,天然,關於多個同名的重載辦法,會轉換成最"接近"的"年夜"數據並停止挪用。這些類型由"小"到"年夜"分離為 (byte,short,char)--int--long--float—double。這裡我們所說的"年夜"與"小",其實不是指占用字節的若干,而是指表現值的規模的年夜小。

①上面的語句可以在Java中直接經由過程:

byte b;int i=b; long l=b; float f=b; double d=b;

②假如初級類型為char型,向高等類型(整型)轉換時,會轉換為對應ASCII碼值,例如

char c='c'; int i=c;

System.out.println("output:"+i);輸入:output:99;

③關於byte,short,char三品種型而言,他們是平級的,是以不克不及互相主動轉換,可使用下述的強迫類型轉換。

short i=99 ; char c=(char)i; System.out.println("output:"+c);輸入:output:c;

強迫轉換

將"年夜"數據轉換為"小"數據時,你可使用強迫類型轉換。即你必需采取上面這類語句格局: int n=(int)3.14159/2;可以想象,這類轉換確定能夠會招致溢出或精度的降低。

2)表達式的數據類型主動晉升, 關於類型的主動晉升,留意上面的規矩。

①一切的byte,short,char型的值將被晉升為int型;

②假如有一個操作數是long型,盤算成果是long型;

③假如有一個操作數是float型,盤算成果是float型;

④假如有一個操作數是double型,盤算成果是double型;

例, byte b; b=3; b=(byte)(b*3);//必需聲明byte。

3)包裝類過渡類型轉換

普通情形下,我們起首聲明一個變量,然後生成一個對應的包裝類,便可以應用包裝類的各類辦法停止類型轉換了。例如:

①當願望把float型轉換為double型時:

float f1=100.00f;
Float F1=new Float(f1);
double d1=F1.doubleValue();//F1.doubleValue()為Float類的前往double值型的辦法

②當願望把double型轉換為int型時:

double d1=100.00;
Double D1=new Double(d1);
int i1=D1.intValue();

簡略類型的變量轉換為響應的包裝類,可以應用包裝類的結構函數。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)

而在各個包裝類中,總無形為××Value()的辦法,來獲得其對應的簡略類型數據。應用這類辦法,也能夠完成分歧數值型變量間的轉換,例如,關於一個雙精度實型類,intValue()可以獲得其對應的整型變量,而doubleValue()可以獲得其對應的雙精度實型變量。

4)字符串與其它類型間的轉換

其它類型向字符串的轉換

①挪用類的串轉換辦法:X.toString();

②主動轉換:X+"";

③應用String的辦法:String.volueOf(X);

字符串作為值,向其它類型的轉換

①先轉換成響應的封裝器實例,再挪用對應的辦法轉換成其它類型

例如,字符中"32.1"轉換double型的值的格局為:new Float("32.1").doubleValue()。也能夠用:Double.valueOf("32.1").doubleValue()

②靜態parseXXX辦法

String s = "1";
byte b = Byte.parseByte( s );
short t = Short.parseShort( s );
int i = Integer.parseInt( s );
long l = Long.parseLong( s );
Float f = Float.parseFloat( s );
Double d = Double.parseDouble( s );

③Character的getNumericValue(char ch)辦法

5)Date類與其它數據類型的互相轉換

整型和Date類之間其實不存在直接的對應關系,只是你可使用int型為分離表現年、月、日、時、分、秒,如許就在二者之間樹立了一個對應關系,在作這類轉換時,你可使用Date類結構函數的三種情勢:

①Date(int year, int month, int date):以int型表現年、月、日
②Date(int year, int month, int date, int hrs, int min):以int型表現年、月、日、時、分
③Date(int year, int month, int date, int hrs, int min, int sec):以int型表現年、月、日、時、分、秒

在長整型和Date類之間有一個很風趣的對應關系,就是將一個時光表現為間隔格林尼治本准時光1970年1月1日0時0分0秒的毫秒數。關於這類對應關系,Date類也有其響應的結構函數:Date(long date)。

獲得Date類中的年、月、日、時、分、秒和禮拜你可使用Date類的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()辦法,你也能夠將其懂得為將Date類轉換成int。

而Date類的getTime()辦法可以獲得我們後面所說的一個時光對應的長整型數,與包裝類一樣,Date類也有一個toString()辦法可以將其轉換為String類。

有時我們願望獲得Date的特定格局,例如20020324,我們可使用以下辦法,起首在文件開端引入,

import java.text.SimpleDateFormat;
import java.util.*;
java.util.Date date = new java.util.Date();
//假如願望獲得YYYYMMDD的格局
SimpleDateFormat sy1=new SimpleDateFormat("yyyyMMDD");
String dateFormat=sy1.format(date);
//假如願望離開獲得年,月,日
SimpleDateFormat sy=new SimpleDateFormat("yyyy");
SimpleDateFormat sm=new SimpleDateFormat("MM");
SimpleDateFormat sd=new SimpleDateFormat("dd");
String syear=sy.format(date);
String smon=sm.format(date);
String sday=sd.format(date);

總結:只要boolean不介入數據類型的轉換

(1).主動類型的轉換:

a.常數在表數規模內是可以或許主動類型轉換的

b.數據規模小的可以或許主動數據類型年夜的轉換(留意特例)

int到float,long到float,long到double 是不會主動轉換的,否則將會喪失精度

c.援用類型可以或許主動轉換為父類的

d.根本類型和它們包裝類型是可以或許相互轉換的

(2).強迫類型轉換:用圓括號括起來目的類型,置於變量前

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved