首页编程java编程java中long是什么意思(java中数据类型long和Long的区别)

java中long是什么意思(java中数据类型long和Long的区别)

编程之家2023-10-1192次浏览

今天给各位分享java中long是什么意思的知识,其中也会对java中数据类型long和Long的区别进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

java中long是什么意思(java中数据类型long和Long的区别)

java如何定义long类型的变量

我详细说说吧

java中直接输入整数则默认为int类型,带有小数点的实数默认为double类型

如果你直接声明 long a= 123;这是没有错的,因为123是int类型,可以赋值给范围更大的long类型,但是如果你的数字超过int范围那得告诉编译器,你的数字已经大于int范围,要换成更大范围的long类型表示,所以数字后面加上L(或小写l)。比如 long a= 2147483648;(这样写会报错,因为int类型最大表示范围是2147483647)得这样 long a= 2147483648L;

java中long是什么意思(java中数据类型long和Long的区别)

浮点数一样,后面加的是F/f(代表float类型)

java中数据类型long和Long的区别

long和Long的区别,可以从以下几点进行区分:

二者的定义是不同的,小写的long指的是基本类型,大写的Long指的是对象类型又称为包装类。

java中long是什么意思(java中数据类型long和Long的区别)

虽然二者均属于Java的一种数据类型,但是long这一基本数据类型是不能new一个对象的,为了弥补Java这方面的缺陷,因此就出现了Long包装类这一对象数据类型,可以说对象类型是对基本类型的一大补充。

小写的long有默认值(),object一般默认为null,所以大写的Long中出现的一些方法就是为了满足小写long的需求。

区分二者的方法:

牢记二者的定义,利用定义去区分;

多多运用这两个数据类型,在练习中熟练掌握两个数据类型;

多参与项目实战,在实战项目中积累经验,对二者进行区分。

备注:在使用这两个数据类型的时候会用到泛类,所以一定要掌握泛类的一些规定:

泛型的参数类型也可以是通配符类型;

同一种泛型可以对应多个版本,但是不同版本的泛型类之间是不能兼容的。

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中long和Long有什么区别

long是基本类型,Long是对象类型;Long又叫 long的包装类,

你的代码中,用到了泛型,关于泛型的规定:

1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。

2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。

3、泛型的类型参数可以有多个。

4、泛型的参数类型可以使用extends语句,例如<T extends superclass>。习惯上称为“有界类型”。

5、泛型的参数类型还可以是通配符类型。例如Class<?> classType= Class.forName(java.lang.String);

请看第一条关于泛型的要求,其参数必须是类类型的,意味着,LinkedHashMap<Object,Long> cache=new LinkedHashMap<Object,Long>();中的参数类型,必须采用表示类类型的Long.

文章到此结束,如果本次分享的java中long是什么意思和java中数据类型long和Long的区别的问题解决了您的问题,那么我们由衷的感到高兴!

java的nio是干什么用的?Java中nio与普通io有什么优势黄帝陵在哪(黄帝陵在哪个省哪个市个城市)