javalongtolong
❶ java中如何把Integer轉換成Long
可以使用Long包裝類的方法來進行轉換,代碼如下:
Integerfloatee;//定義一個Integer類
floatee=Long.valueOf(floatstr);//valueof方法可以在內部把Integer轉換成Long類型。
Long型的表示數據范圍比int類型打,所以可以進行轉換。
❷ Java中的Long和Double類型
Java中的原子操作包括:
1)除long和double之外的基本類型的賦值操作
2)所有引用reference的賦值操作
3)java.concurrent.Atomic.* 包中所有類的一切操作。
但是java對long和double的賦值操作是非原子操作!!long和double佔用的位元組數都是8,也就是64bits。在32位操作系統上對64位的數據的讀寫要分兩步完成,每一步取32位數據。這樣對double和long的賦值操作就會有問題:如果有兩個線程同時寫一個變數內存,一個進程寫低32位,而另一個寫高32位,這樣將導致獲取的64位數據是失效的數據。因此需要使用volatile關鍵字來防止此類現象。volatile本身不保證獲取和設置操作的原子性,僅僅保持修改的可見性。但是java的內存模型保證聲明為volatile的long和double變數的get和set操作是原子的。(from
http://www.iteye.com/topic/213794)
舉個例子來說:(example is from
http://stackoverflow.com/questions/17481153/long-and-double-assignments-are-not-atomic-how-does-it-matter)
public class UnatomicLong implements Runnable {
private static long test = 0;
private final long val;
public UnatomicLong(long val) {
this.val = val;
}
@Override
public void run() {
while (!Thread.interrupted()) {
test = val;
//兩個線程都試圖將自己的私有變數val賦值給類私有靜態變數test
}
}
public static void main(String[] args) {
Thread t1 = new Thread(new
UnatomicLong(-1));
Thread t2 = new Thread(new
UnatomicLong(0));
System.out.println(Long.toBinaryString(-1));
System.out.println(pad(Long.toBinaryString(0),
64));
t1.start();
t2.start();
long val;
while ((val = test) == -1
|| val == 0) {
//如果靜態成員test的值是-1或0,說明兩個線程操作沒有交叉
}
System.out.println(pad(Long.toBinaryString(val), 64));
System.out.println(val);
t1.interrupt();
t2.interrupt();
}
// prepend 0s to the string to make it the target
length
private static String pad(String s, int targetLength) {
int n = targetLength - s.length();
for (int x = 0; x < n; x++) {
s = "0" + s;
}
return s;
}
}
❸ Java中的強制類型轉換是如何轉換的
java中數據類型的強制轉換是通過強制轉換語句完成的,強制轉換語句的格式為「目標數據類型 變數 = (目標數據類型) 數據;」。下面給出例子:
1、定義兩個位元組數據類型a、b、c,分別賦予1和2和a+b的值,進行加法運算的式子a+b=3,得出的結果「3」將會被編譯環境判定為整形數據,把這個整形數據賦值給c,系統將會報錯,這樣就需要用到格式為「目標數據類型 變數 = (目標數據類型) 數據;」的強制轉換語句。
2、根據強制轉換語句的格式,易得「byte c = (byte)(a+b);」;
3、這樣就把整形數據的「3」賦值給位元組數據類型的c了,其中完成數據的強制類型轉換。
(3)javalongtolong擴展閱讀:
基本類型 轉換原則:
1、類型轉換主要在在賦值、方法調用、算術運算三種情況下發生。
a、賦值和方法調用 轉換規則:從低位類型到高位類型自動轉換;從高位類型到低位類型需要強制類型轉換:
(1)布爾型和其它基本數據類型之間不能相互轉換;
(2)byte型可以轉換為short、int、、long、float和double;
(3)short可轉換為int、long、float和double;
(4)char可轉換為int、long、float和double;
(5)int可轉換為long、float和double;
(6)long可轉換為float和double;
(7)float可轉換為double;
b、算術運算 中的類型轉換:
1、基本就是先轉換為高位數據類型,再參加運算,結果也是最高位的數據類型;
2、byte short char運算會轉換為Int;
(1)如操作數之一為double,則另一個操作數先被轉化為double,再參與算術運算。
(2)如兩操作數均不為double,當操作數之一為float,則另一操作數先被轉換為float,再參與運算。
(3)如兩操作數均不為double或float,當操作數之一為long,、則另一操作數先被轉換為long,再參與算術運算。
(4)如兩操作數均不為double、float或long,則兩操作數先被轉換為int,再參與運算。
特殊:
(1)如採用+=、*=等縮略形式的運算符,系統會自動強制將運算結果轉換為目標變數的類型。
(2) 當運算符為自動遞增運算符(++)或自動遞減運算符(--)時,如果操作數為byte,short或char類型不發生改變;
❹ java中怎樣把long類型轉換成Long類型最好給一個程序 long l = 8l; Long ll = new Long(l);
public class LongToLong {
public static void print(Long l) {
System.out.println(l);
}
public static void main(String[] args) {
print(213L);
}
}
❺ java 中怎樣將 bytes 轉換為 long 類型
方法有以下三種:
1、不藉助其他任何已經有的類,直接進行轉換。
2、藉助java.nio.ByteBuffer實現,只要將byte[]轉換為ByteBuffer就可以實現所有primitive類型的數據讀取。
3、藉助java.io.DataInputStream實現,只要將byte[]轉換為DataInputStream就可以實現所有primitive類型的數據讀取。
❻ 在JAVA中把double類型轉換成long類型,丟失數據位是什麼,為什麼
double是浮點型,long是整數型,以上語句轉換時小數部分沒有了,這就是丟失。javadouble轉long型是取整運算,用Double封裝下基本類型double,再調用longValue方法。Double(doublevalue)
longlongValue(),將此Double值作為long類型返回(通過強制轉換為long類型),詳細步驟:
1、首先在visualstudio中用c#語言進行類型轉換,新建項目命名"longdouble",項目結構圖如下。
❼ 將java怎麼將long類型的時間轉換成年月日的形式
用java代碼實現:
public static String longToDate(long lo){
Date date = new Date(lo);
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sd.format(date);
}
資料拓展:
長整型(long)是計算機程序語言,是程序設計中數據類型的一種表現方式,一般情況下用long 表示長整型。 long 有符號64位整數,范圍是-2^63-2^63 -1 Int64。
❽ java中 求一個把Long型IP 轉換成String的方法
//ip long to String
public String iplongToIp(long ipaddress) {
StringBuffer sb = new StringBuffer("");
sb.append(String.valueOf((ipaddress >>> 24)));
sb.append(".");
sb.append(String.valueOf((ipaddress & 0x00FFFFFF) >>> 16));
sb.append(".");
sb.append(String.valueOf((ipaddress & 0x0000FFFF) >>> 8));
sb.append(".");
sb.append(String.valueOf((ipaddress & 0x000000FF)));
return sb.toString();
}
//string ip to long
public long ipStrToLong(String ipaddress) {
long[] ip = new long[4];
int position1 = ipaddress.indexOf(".");
int position2 = ipaddress.indexOf(".", position1 + 1);
int position3 = ipaddress.indexOf(".", position2 + 1);
ip[0] = Long.parseLong(ipaddress.substring(0, position1));
ip[1] = Long.parseLong(ipaddress.substring(position1+1, position2));
ip[2] = Long.parseLong(ipaddress.substring(position2+1, position3));
ip[3] = Long.parseLong(ipaddress.substring(position3+1));
return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3];
}
//希望能幫助你
❾ java中長整型定義
java整型有四種分貝是:byte(1位元組)、short(2位元組)、int(4位元組)、long(8位元組)
0x100080000000超出范圍,其實不是long不能保存這么大,而是這個數是個int型數。它超出的其實是int的范圍(The literal 0x100080000000 of type int is out of range),在整數賦值時。
可以將賦值語言修改如下,指定它的類型為long型就可以了:
long y=0x100080000000l;//
(9)javalongtolong擴展閱讀
java整形與長整型之間的轉換可以藉助Long類或字串
1、藉助Long類:
int new_a = new Long(a).intValue();
2、藉助字串:
int new_a = Integer.parseInt(String.valueOf(y));
java整形、長整型、浮點型 邊界值:
int型邊界最大值:Integer.MAX_VALUE
int型邊界最小值:Integer.MIN_VALUE
long型邊界最大值:Long.MAX_VALUE
long型邊界最小值:Long.MIN_VALUE
float型邊界最大值:Float.MAX_VALUE
float型邊界最小值:Float.MIN_VALUE