java中long类型问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中long类型问题相关的知识,希望对你有一定的参考价值。

long l=1024*1024*1024*4;//这里输出是0
System.out.println(Long.toBinaryString(l));
long old2=1024*1024*1024*4L;//为什么这里不是零,求教
System.out.println(Long.toBinaryString(old2));
long oldl=1024*1024*1024*4*2L;//这里输出是0
System.out.println(Long.toBinaryString(oldl));

第一个是因为你的右边没有带L,系统认为1024和4都是int类型。java中系统如果你给int范围的最大值再加1,那么你会得到int类型的最小值。而1024*1024*1024*4结果按照上面的规则计算,你会得到0。
第二个因为是1024*1024*1024还未达到int类型最大值,这时给它乘一个4L(注意,这个是long类型),所以结果是long类型,不存在上面那个情况。
第三个,由第一个知道,1024*1024*1024*4结果是int类型0,0乘任何数必然还是0

纯手打,望采纳
参考技术A 乘法的过程中int类型溢出了,注意是在最后的结果才会自动转换成long型,1024*1024*1024*4 刚好是2的32次方,所以结果为0

第二个因为最后一个4L表示Long型,所以在最后一次乘的时候已经转换成long,结果不会出现溢出
第三个与第一个一样也是int型溢出导致,最后乘以2L等于0*2L,结果自然为0

将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。

参考技术A 多看点JDK API。
常用的时间转换形式:long <==>Date <==>String
long =>Date :new Date(longValue);
Date =>String:new SimpleDateFormat("yyyy-MM-dd").format(date);
参考技术B

    其实就是将毫秒数转换为日期

    具体方法

        /**

         * 把毫秒转化成日期

         * @param dateFormat(日期格式,例如:MM/ dd/yyyy HH:mm:ss)

         * @param millSec(毫秒数)

         * @return

         */

        pubic static  String transferLongToDate(String dateFormat,Long millSec)

         SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);

        Date date= new Date(millSec);

                return sdf.format(date);

       

参考技术C import java.util.Calendar;
import java.util.Formatter;
import java.util.Locale;

public class Bdzd

/**
* @param args
*/
public static void main(String[] args)
String datestr = getDateStr(System.currentTimeMillis());
System.out.println(datestr);


private static String getDateStr(long millis)
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(millis);
Formatter ft=new Formatter(Locale.CHINA);
return ft.format("%1$tY年%1$tm月%1$td日%1$tA,%1$tT %1$tp", cal).toString();

参考技术D SimpleDateFormat 楼上有回答的

以上是关于java中long类型问题的主要内容,如果未能解决你的问题,请参考以下文章

Java中判断两个Long类型是否相等

java中long型怎么比较大小

Java中两个Long对象如何比较是否相等

Java Long类型处理精度丢失问题

Java Long类型处理精度丢失问题

Java Long类型处理精度丢失问题