一、注意点

1.大容量不能直接赋值给小容量;大容量转化为小容量需要进行,强制类型转换,强制类型转换需要加上“强制类型转换符”,加上强制类型转换符之后编译通过了但是精度会有有可能损失。所以强制类型转换要谨慎使用。因为损失精度之后可能损失很严重。

例子:

底层原理:long是八个字节,现在要转为四个字节的int类型,那么把前面四个字节给删了

        long i5 = 100L;

        //int i6 = i5;

        int i6 = (int)i5;

        System.out.println(i6);

2.特殊例子1

原始数据:00000000 00000000 00000000 00000000 10000000 00000000 00000000 00000000

我们强制转换为int四个字节:(也就是删掉了前面四个字节)

10000000 00000000 00000000 00000000

        long i7 = 2147483648L;

        int i8 = (int)i7;

        System.out.println(i8);

由计算机底层原理,内部存储数据都是以补码的形式存储,因此数字会变。

3.特殊例子2

        byte i11 = 50;

        byte i9 = 127;

        byte i10 = 128;

(1)按理来说字面值数字,那么Java会默认赋予这个字面值4个字节,但是我们看到第一行,我们赋予50以byte类型却可以编译通过,这是因为在java语言中,当一个整数型字面值没有超出byte类型的取值范围的话,该字面值可以直接赋值给byte类型的变量,你看第三行,他超出了范围。因此就是报错。

4.原码,补码的计算方式:自行百度

二、源码:

d13_int_type_specific_example.java

地址:https://github.com/ruigege66/Java/blob/master/d13_int_type_specific_example.java

2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,后台回复”礼包“,获取大数据学习资料

Java连载13-整数型字面值的强制转换的更多相关文章

  1. java变量的自动提升与强制转换

    所有的byte型.short型和char的值将被提升到int型 一个字节可以提升为4个字节 4个字节不可以降为一个字节 强制转换4个字节转换为一个字节 [丢失精度] byte b = 3; b = ( ...

  2. Java连载11-转义字符&整数型

    一.转义符 1.\'代表单引号:\\代表\; 二.native2ascii.exe JDK中自带的native2ascii.exe命令,可以将文字转换成unicode编码形式 我们使用这个程序尝试一下 ...

  3. java 强制转换

    在java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换. 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需 ...

  4. 关于java中强制转换

    在百度上遇到一个问题,描述如下: 在java中,定义两个变量 byte x = (byte) 128; byte y = (byte)-129; 输出后,为什么结果是-128和128? 借此机会,自己 ...

  5. 简述Java变量和强制转换类型

    简述Java变量和强制转换类型 java变量 1. java变量 变量:顾名思义,就是在java执行程序过程中可以发生改变的量,就好比方程式中的未知数X一样. 变量的内存分配过程 int a ; // ...

  6. Java数据类型的转换:隐式(自动)转换与强制转换

    原文链接:http://java.chinaitlab.com/base/725590.html 一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double ...

  7. Java连载5-标识符、关键字和字面值

    一.标识符 1.标识符定义:在java源程序中凡是可以自己命名的单词 2.标识符可以标识什么元素? (1)类名(2)方法名(3)变量名(4)接口名(5)常量名 等等 3.标识符的命名要求 (1)一个合 ...

  8. Java父类强制转换子类原则

    最近,微信群友在讨论子类父类的转换问题,其实不难,给大家用实例来说明一下就很明了了. 我们知道Java中子类转换成父类是没有任何问题的,那父类可以转换成子类吗? 来看下面这段程序: public cl ...

  9. java的异常体系 及强制转换

    一,异常 1.常见的几种异常: StackOverFlow  栈溢出错误:写递归函数的时候,没有定义递归结束的条件. ArrayIndexOutofBounds   数组越界:如新new一个数组,in ...

随机推荐

  1. mysql的sql调优: slow_query_log_file

    mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysql启动的时候加入一些参数.如果在my.cnf里面修改,需增加如 ...

  2. 如何使用gitlab自建golang基础库

    这里以go mod方式建立golang基础库 一.gitlab创建项目golib 地址为gitlab.xxx.com/base/golib 示例如下 go mod初始化命令 go mod init g ...

  3. 使用VisualStudio或VisualStudio Code作为代码比较工具

    最近改了了几个还是用SVN托管的老项目,用的客户端是TortoiseSVN,本身这个工具比较好用,就是那个内置的比较文件差异的Diff工具太简陋了,由于TortoiseSVN支持第三方Diff查看器的 ...

  4. Python - 数据结构 - 第十五天

    Python 数据结构 本章节我们主要结合前面所学的知识点来介绍Python数据结构. 列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和 ...

  5. J2EE的13种规范

    1.JDBC(Java Databaes Connectivity):JDBC API为访问不同的数据库提供了一种统一的途径,就像ODBC一样,JDBC对开发者屏蔽了一些细节问题,同时,JDBC对数据 ...

  6. Lucene搜索核心代码TermInfosReader

    TermInfosReader类是Lucene搜索的核心代码,所有的搜索最终都是落到通过term查询,TermInfosReader里定义了支持的基础的term查询功能. 前置知识: 词元字典文件(t ...

  7. 基于记忆性的中值滤波O(r)与O(1)复杂度的算法实现

    本文参考博客:https://www.cnblogs.com/Imageshop/archive/2013/04/26/3045672.html 原生的中值滤波是基于排序算法的,这样的算法复杂度基本在 ...

  8. Spring Cloud Bus介绍--Spring Cloud学习第七天(非原创)

    一.什么是Spring Cloud Bus二.Spring Cloud Bus之RabbitMQ介绍三.Spring Cloud Bus整合RabbitMQ四.Spring Cloud Bus整合Ka ...

  9. shell脚本按当前日期输出日志

    shell脚本基本技能是设置变量,输出信息.如下: sh脚本输出到控制台 将以上脚本保存到test.sh脚本文件中,并赋予可执行权限:sudo chmod +x test.sh 执行脚本:bash t ...

  10. 转:oracle笔记

    oracle笔记1 卸载oracle developer server的方法: 1-1 oracle卸载工具中卸载对应的oracleds项目:在注册表中搜索ORACLEDS HOME对应的别名,删除对 ...