精华内容
下载资源
问答
  • Java关于long和int型整数相加的问题

    千次阅读 2020-07-03 15:29:50
    两个int相加是会先转换成int型然后再赋值,所以再相加前要先转换成long型。 示例: int m = 2147483647; //输出-2147483648 long l = m + 1; System.out.println(l); //输出21474836

    int有最大长度

    最小值是 -2,147,483,648(-2^31)
    最大值是 2,147,483,647(2^31 - 1)

    当两个int型相加超出int范围时,即使接受的参数是long型也会造成精度损失,原因是:
    两个int型相加是会先转换成int型然后再赋值,所以再相加前要先转换成long型。

    示例:

    		int m = 2147483647;
    		//输出-2147483648
    		long l = m + 1;
    		System.out.println(l);
    		
    		//输出2147483648
    		l = m + 1L;
    		System.out.println(l);
    
    展开全文
  • javaint型数据在运算中如果超出有效范围造成精度损失如何解决 long a=123456789*123456789;//不加L会被视为int型,当两个int相乘的结果大于int范围时,就会却值 long b=123456789L*123456789L;//正常运行结果 ...

    java中int型数据在运算中如果超出有效范围造成精度损失如何解决

    long a=123456789*123456789;//不加L会被视为int型,当两个int相乘的结果大于int范围时,就会却值
    		long b=123456789L*123456789L;//正常运行结果
    		System.out.println(a);//结果-1757895751
    		System.out.println(b);//结果15241578750190521
    

    这里要生命两个long相加,在后面加L, 否则, 会损失精度, 变成一个负数。

    展开全文
  • 变量相加和常量相加

    2017-06-10 11:13:05
    Java–变量相加和常量相加(类型转换) 混合运算的时候,byte,short,char不会相互转换,都会自动将类型提升为int类型,其他类型进行混合运算时都是将小的数据类型提升为大的 byte,short,char —- int —- long —...

    混合运算的时候,byte,short,char不会相互转换,都会自动将类型提升为int类型,其他类型进行混合运算时都是将小的数据类型提升为大的

    byte,short,char —- int —- long —- float —- double

    float的取值范围比long的取值范围要大

         long:2^63-1

         float:3.4*10^38 > 2*10^38 > 2*8^38 =  2*2^3^38 = 2*2^114 > 2^63-1

    1. //比较float和long类型取值范围大小  
    2.         float f = 12.0F;  
    3.         long l = 88897382L;  
    4.   
    5.         f = l;  
    6.         System.out.println(f);  
    7.   
    8.         l = f ;  
    9.         System.out.println(l);  
    //比较float和long类型取值范围大小
            float f = 12.0F;
            long l = 88897382L;
    
            f = l;
            System.out.println(f);
    
            l = f ;
            System.out.println(l);
    如下:float类型转换为long类型就会报错

     

    将long类型转换为float类型就会输出正确的值


    (1)变量相加时报错

           b1b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值

           byte类型的变量在进行运算的时候,会自动类型提升为int类型

    (2)常量相加没有问题

    1. class DataTypeConversion{  
    2.     public static void main(String[] agrs){  
    3.         byte b1 = 1;  
    4.         byte b2 = 2;  
    5.         byte b3 = b1 + b2;  
    6.         System.out.println(b3);  
    7.         /* 
    8.           1、byte与byte(或者short、char)进行运算的时候会提升为int 
    9.           2、b1和b2是两个变量,变量存储的值是变化的,在编译时候无法判断里面具体的值,相加有可能超出byte的值范围 
    10.         */  
    11.         byte b4 = 1 + 2;     //java编译器常量优化机制  
    12.         byte b5 = 3;  
    13.         System.out.println(b4);  
    14.         System.out.println(b5);  
    15.     }  
    16. }  
    class DataTypeConversion{
        public static void main(String[] agrs){
            byte b1 = 1;
            byte b2 = 2;
            byte b3 = b1 + b2;
            System.out.println(b3);
            /*
              1、byte与byte(或者short、char)进行运算的时候会提升为int
              2、b1和b2是两个变量,变量存储的值是变化的,在编译时候无法判断里面具体的值,相加有可能超出byte的值范围
            */
            byte b4 = 1 + 2;     //java编译器常量优化机制
            byte b5 = 3;
            System.out.println(b4);
            System.out.println(b5);
        }
    }
    这时byte b3 = b1 + b2;会报错如下:

      

    同理如下:

    short s = 1;s = s + 1;(报错)   //short与int进行运算,提升为int类型
    short s = 1;s += 1; (正常)     //s = (short)(s + 1);




    展开全文
  • IPv4(4*8)32位的int整数刚好可以11映射,但由于int整数是有符号的,所以不能直接通过划分为四个整数,然后乘以权值(256^(0-3)),再相加来实现互转,该过程会出现int整数溢出。如果是IPv4转换为long型倒不用考虑...

    点分十进制字符串IP和32位int整数互转Java实现

    比较简单基础的题,可记录和回顾基础。
    IPv4(4*8)和32位的int整数刚好可以11映射,但由于int整数是有符号的,所以不能直接通过划分为四个整数,然后乘以权值(256^(0-3)),再相加来实现互转,该过程会出现int整数溢出。如果是IPv4转换为long型倒不用考虑这个问题。
    这里直接通过简单的位运算来实现,首先再mark下java里的进制表示法(引自java进制表示):

    System.out.println(0b101);//二进制:5  (0b开头的)
    System.out.println(0e1011);//0.0
    System.out.println(011);//八进制:9   (0开头的)
    System.out.println(11);//十进制:11
    System.out.println(0x11C);//十六进制:284   (0x开头的)
    
    System.out.printf("%010x\n",7);//0000000007   按10位十六进制输出,向右靠齐,左边用0补齐
    System.out.printf("%010o\n",13);//0000000015    按10位八进制输出,向右靠齐,左边用0补齐
    
    System.out.printf("%x\n",7);//7   按16进制输出
    System.out.printf("%o\n",13);//15   按8进制输出
    
    System.out.println(Integer.toBinaryString(11));//1011 二进制
    

    代码实现为:

    public class TransIPtoInt
    {
        private int iPToInt(String ip) throws Exception
        {
            ip = ip.trim();
            String regular = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}";
            String[] iparray = ip.split("\\.");
            if (!ip.matches(regular) || iparray.length != 4)
            {
                throw new Exception("Wrong IP.");
            }
            return Integer.parseInt(iparray[0]) << 24 | Integer.parseInt(iparray[1]) << 16
                | Integer.parseInt(iparray[2]) << 8 | Integer.parseInt(iparray[3]);
        }
        
        private String intToIP(int ipnum)
        {
            return (int) ((ipnum & 0xff000000L) >> 24) + "." + (int) ((ipnum & 0xff0000L) >> 16) + "."
                + (int) ((ipnum & 0xff00L) >> 8) + "." + (int) (ipnum & 0xffL);
        }
        
        public static void main(String[] args) throws Exception
        {
            TransIPtoInt tp = new TransIPtoInt();
            String ip = "232.132.72.255";
            int ipnum = tp.iPToInt(ip);
            System.out.println(ipnum);
            System.out.println(tp.intToIP(ipnum));
        }
    }
    
    展开全文
  • 当两个数num1, num2特别大的时候,也就是超级大数,用intlong 明显不足。 在num1 num2 的长度都小于 5100,不包含任何前导零并且不使用任何內建 BigInteger 库时,可以转换成字符串,逐个字符处理。 Java语言...
  • CoreJava和Web知识点复习 CoreJava Java中数据类型以及数据相加自动类型提升规则 byte 1Byte -128到127 short 2B -32768到32767 int 4B -2^31到2^31-1 long 8B -2^63到2^63-1 float 4B 单...
  • 由于java允许自动拆装箱,所以基本类型装箱类型用起来的差别就比较模糊,但是这其中是有一些差别的,比如性能方面,例子场景:求出所有int正值的相加的总和public static void main(String[] args) { //这条语句将...
  • 可以通过以下方法:将该数的十进制表从右端开始,每两位一组构成一个整数,然后将这些数相加,判断其能否被1整除。例如,将562843748分割成5,62,84,37,48,然后判断(5+62+84+37+48)能否被11整除 package ...
  • Java基本知识点

    2020-12-31 20:52:57
    1、Java不会自动地将int数值转换成布尔值 2、将float或double转型为整型值时,总是对该数字执行...例:如果将int和long相加,结果为long 4、在C/C++中,sizeof()求字节数。但是,在Java中所有数据类型在所有机器中
  • java编程技巧

    2017-09-05 12:06:28
    long类型进行相加减乘除的时候会转化为int型进行操作 为了避免进行自动转化应该在long类型后面加上大写的L 小写的l1会产生歧义(程序员会误判) 3.十六进制八进制的趣事 十六进制八进制本身是可以
  • 今天遇到题面试题“ip地址字符串和long类型的相互转换”,想了下,Javaint 类型占用 4 字节,而 IPv4 地址(32位)也是 4 字节的,所以完全可以使用 javaint 来映射 IPv4 地址,为什么还要使用占用更大空间long...
  • 题目描述 正整数的各位数字之被Tom称为Tom数。求输入数(<...注意:输入的数值类型为long,为int错误! 循环内容: 1.将数取余得到个位的数值 2.个位的数值相加。 3.再对数除10得到新值。 imp...
  • JAVA里面提供的整数运算都基于int和long类型的运算。当小于int类型的类型参与计算的时候,会将他们转化为int类型。 1.数值之间相加 操作码 操作数 备注 iadd 无 从栈中弹出两个int类型数,相加之后将所得int...
  • 我们先来回顾一下,Java拥有的几种基本类型,byte,short,intlong,char,float,double。其中整数类型的有byte,short,intlong这四种。那么,他们的范围是多少呢?byte是1个字节,8位,范围当然是负的2的7...
  • java基础问题汇总

    2017-11-02 09:11:49
    short型char型将被提升到int型(例外: final修饰的short, char变量相加后不会被自动提升。) 2)如果一个操作数是long形 计算结果就是long型; 3)如果一个操作数是float型,计算结果就是float型; 4)如果一个...
  • 文章目录题目描述方法一:整数相加法方法二:链表相加法算法性能分析 题目描述 ...这种方法的优点是计算简单,缺点是:当链表所代表的数很大时(超出了long int的表示范围),就无法使用这种方法了。
  • JAVA学习之基础学习(一) ...i b 相加结果为int类型 转换规则 范围小的类型向范围大的类型提升, byte、short、char 运算时直接提升为 int 。 byte、short、char‐‐>int‐‐>long‐‐>float‐...
  • JAVA学习笔记

    2017-09-05 21:19:40
    Int 整型 Long 长整型 Double 双精度型 String 字符串 例:string name="mike"; //用双引号 Char 字符型 例:char word='a'; //用单引号 Boolean 布尔类型(只有truefalse) /*字符串相加例子: string ...
  • 编写一个方法,计算一个整数各位数字之:public static int sumDigits(long n) 例如: sumDigits(234),返回9; 我自己编写了一段代码如下: package myownJava; import java.util.Scanner; public class SumDigits...
  • Java数据类型自动提升

    2019-03-13 19:54:53
    short型char型将被提升到int型(例外: final修饰的short, char变量相加后不会被自动提升。) 2)如果一个操作数是long形 计算结果就是long型; 3)如果一个操作数是float型,计算结果就是float型; 4)如果一个操作数...
  • java-2-25

    2020-02-25 22:03:11
    基本类型转换 自动类型转换:容量小的类型自动转换为容量大的数据类型 byte, short, char -> int-> long-> float->...字面量 1 是 int 类型,在计算时s会自动转换为int,与1相加后,得到 in...
  • Java程序语言提供了一些可以作用在整数值上的操作数:  *比较运算子,得到boolean型别的值:  *数值比较运算子<... *数值运算子,得到intlong型别的值:  *单元加减运算子+-(§15.15.3,§15.15....
  • JAVA中的自动类型提升

    千次阅读 2017-05-09 07:00:42
    short型char型将被提升到int型(例外: final修饰的short, char变量相加后不会被自动提升。) 2.如果一个操作数是long形 计算结果就是long型; 3.如果一个操作数是float型,计算结果就是float型; 4.如果一个操作数是...
  • Java学习第三天笔记

    2020-04-01 12:52:41
    1.数据类型的隐式转换byte, int, long, float, double。层层转换,由小字节到大字节的转换。 2.数据类型的强制转换 byte a=10/byte b=20/byte c=(byte) (a+b) 3.变量相加与常量相加区别 变量相加,字节变大,需要更...
  • 1.int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。 2.在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。到 Python3 中,把 True False 定义成关键字了,...
  • 今天继续讲解方法 完成一个有参数有返回值的方法 /* 需求: 计算两个int类型数据之,通过返回值返回到方法外 1. 可以从需求中获取到当前方法需要两个参数 ...long 可以满足如果出现两个int类型数据相加之后,结...
  • 常用构造方法:可以将String类型的数字,int,double,long作为构造方法的参数传入进行构造一个BigDecimal对象。 常用方法: 加减乘除 add(BigDecimal) BigDecimal对象中的值相加,然后返回这个对象。 subtract
  • 任何数据字符串相加都是字符串 2.基本数据类型与包装类的转换 基本数据类型 包装类 byte Byte short Short int Integer long Long boolean Boolean float Float double D
  • java 经典程序50道

    2013-04-08 15:46:57
    import java.util.*; public class lianxi08 { public static void main(String[] args) { long a , b = 0, sum = 0; Scanner s = new Scanner(System.in); System.out.print("输入数字a的值: "); a = s....

空空如也

空空如也

1 2 3
收藏数 59
精华内容 23
关键字:

javalong和int相加

java 订阅