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