第24章 Java 数据类型转换
每日一句
井底点灯深烛伊,共郎长行莫围棋。
每日一句
What we call "failure" is not falling down, but the staying down.
所谓“失败”不是跌倒,而是就此躺平。
概述
数据类型的转换,分为自动转换和强制转换。自动转换是程序在执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转换顺序不受限制。
自动数据类型转换
自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下:
低--------------------------------------------->高
byte,short,char-> int -> long -> float -> double
运算中,不同类型的数据先转化为同一类型,然后进行运算,转换规则如下:
| 操作数1类型 | 操作数2类型 | 转换后的类型 |
| byte、short、char | int | int |
| byte、short、char、int | long | long |
| byte、short、char、int、long | float | float |
| byte、short、char、int、long、float | double | double |
强制数据类型转换
强制转换的格式是在需要转型的数据前加上“( )”,然后在括号内加入需要转化的数据类型。有的数据经过转型运算后,精度会丢失,而有的会更加精确,下面的例子可以说明这个问题。
publicclassDemo{
publicstaticvoidmain(String[] args){
int x;
double y;
x = (int)34.56 + (int)11.2; *// 丢失精度*
y = (double)x + (double)10 + 1; *// 提高精度*
System.out.println("x=" + x);
System.out.println("y=" + y);
}
}
运行结果:
x=45
y=56.0
仔细分析上面程序段:由于在 34.56 前有一个 int 的强制类型转化,所以 34.56 就变成了 34。同样 11.2 就变成了 11 了,所以 x 的结果就是 45。在 x 前有一个 double 类型的强制转换,所以 x 的值变为 45.0,而 10 的前面也被强制成 double 类型,所以也变成 10.0,所以最后 y 的值变为 56。
美文佳句
很多时候,事情的困境,常常是因为我们自己钻了牛角尖,此时,你需要做的就是改变。
完美主义者可以放下执念,允许自己有普通人都会犯的小迷糊;职场妈妈可以直面现实,一个人永远做不到家庭和事业的双百分;承担了过多工作任务的员工,可以尝试向上级反映,寻求资源或调整目标……这些,都是我们应当并可以作出的改变。
正如这句话所说:世界上从来都没有所谓的奇迹,命运一直都掌握在我们自己手里。想要改变自己的命运,最重要的就是改变自己。当你开始改变自己的时候,很多东西就跟着改变了。
下一次,当烦恼降临时,不妨试试从自身找找问题。调整努力的方向和节奏,学会给心灵松绑,你会发现:很多事,其实没什么大不了。
面试题
SpringMVC 框架有什么用?
Spring Web MVC 框架提供”模型-视图-控制器”( Model-View-Controller )架构和随时可用的组件,用于开发灵活且松散耦合的 Web 应用程序。
MVC 模式有助于分离应用程序的不同方面,如输入逻辑,业务逻辑和 UI 逻辑,同时在所有这些元素之间提供松散耦合。
SpringMVC 框架有什么用?
Spring Web MVC 框架提供”模型-视图-控制器”( Model-View-Controller )架构和随时可用的组件,用于开发灵活且松散耦合的 Web 应用程序。
MVC 模式有助于分离应用程序的不同方面,如输入逻辑,业务逻辑和 UI 逻辑,同时在所有这些元素之间提供松散耦合。
HashMap、ConcurrentHashMap 和Hashtable有什么区别?
| HashMap | ConcurrentHashMap | Hashtable | |
| 线程是否安全,以及实现线程安全的方式 | HashMap不安全 | 线程安全,ConcurrentHashMap JDK1.7底层采用分段锁,对整个桶数进行了分割分段(segment), 每一把锁只锁容器其中一部分数据,提高并发访问率。 JDK 1.8 底层采用 Node数组 + 链表 + 红黑树的结构实现, 并发控制使用了 synchronized 和 CAS 操作。 |
线程安全,底层采用synchronized 来保证线程安全, 直接是方法级别的加锁, ConcurrentHashMap 虽然也是 synchronized 但它是对链表或者红黑树的头节点进行加锁,锁的粒度更小 |
| 底层工作原理 | 底层采用的是 数组 + 链表 | ConcurrentHashMap JDK 1.7 底层采用 分段的数组 + 链表实现。 JDK 1.8 采用的是 数组 + 链表/红黑树 |
底层采用的是 数组 + 链表 |
| 空值问题 | HashMap允许使用null值(key和value)都可以。 但是这样的键只有一个,可以有一个或多个键所对应的值为null |
HashTable不允许null值(key和value都不可以) | |
| 初始容量、扩容与默认负载因子 | HashMap 默认初始大小 16,每次扩容 2n,默认负载因子是0。75 | HashTable 默认初始大小为11,每次扩容 2n+1 |
你好,我是yltrcc,日常分享技术点滴,欢迎关注我:ylcoder
第24章 Java 数据类型转换的更多相关文章
- Java数据类型转换浅析
Java数据类型转换分为两种:自动类型转换和强制类型转换. 数据类型转换的关键是数据类型相应的表数范围大小 1.自动类型转换: 概念:小范围数据类型会自动转化成大范围数据类型 实例: int a=10 ...
- Java数据类型转换1
1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([ ...
- java数据类型转换那点事
public class kkk { /** * 先看看eclipse对于数值型转换会有哪些报错,但是有一点必须明确,eclipse不报错的,不一定就是说这种思维逻辑是对的 * 可以直接将代码复制过去 ...
- Java数据类型转换(自动转换和强制转换)
数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转换顺序不受限制. 自 ...
- 2、java数据类型转换
当数据类型不一样时,将会发生数据类型转换. 1.自动类型转换(隐式) 1. 特点:代码不需要进行特殊处理,自动完成. 2. 规则:数据范围从小到大. System.out.println(1024); ...
- 《Java大学教程》—第24章 Java的背景
本章主要介绍的是Java的背景知识,通过了解历史知道Java与其他语言的区别,以便更好选择在什么场景下使用Java. 24.2 语言的尺寸Java语言短小.紧凑,以C++为基础,放弃了一些特定的 ...
- Java 数据类型转换(转换成字节型)
package com.mystudypro.byteutil; import java.io.UnsupportedEncodingException; public class ConToByte ...
- Java数据类型转换问题
基本数据类型 整数型 byte --- 字节型 --- 1个字节 --- -27~27-1 -> -128~127 byte b1 = 25; byte b2 = 127; short --- ...
- 第24章 java线程(3)-线程的生命周期
java线程(3)-线程的生命周期 1.两种生命周期流转图 ** 生命周期:**一个事物冲从出生的那一刻开始到最终死亡中间的过程 在事物的漫长的生命周期过程中,总会经历不同的状态(婴儿状态/青少年状态 ...
随机推荐
- APICloud重磅支持Atom编辑器,并建立开发工具核心库
APICloud技术再次升级,不仅支持Atom编辑器开发工具,并推出核心开发工具库,使开发者进行App开发更便捷高效. APICloud支持Atom编辑器开发工具 APICloud始终坚持多开发工具支 ...
- 使用Dropbox搭建静态网站详细教程
DropBox是一款非常好用的免费网络文件同步工具,是Dropbox公司运行的在线存储服务,通过云计算实现因特网上的文件同步,用户可以存储并共享文件和文件夹.今天小z和大家分享一下如何使用dropbo ...
- Emscripten教程之代码可移植性与限制(一)
Emscripten教程之代码可移植性与限制(一) 翻译:云荒杯倾本文是Emscripten-WebAssembly专栏系列文章之一,更多文章请查看专栏.也可以去作者的博客阅读文章.欢迎加入Wasm和 ...
- JavaScript实现简单轮播图动画
运行效果: 源代码: <!DOCTYPE html> <html lang="zh"> <head> <meta charset=&quo ...
- 使用localStorage缓存消息(聊天页面)
可以在聊天页面的created生命周期里面写如下代码,使得刷新后的页面和之前的是一样的 created(){ alert(11) //在页面加载时读取localStorage里的状态 ...
- 帝国cms一键排版删除段落前两个空格和换行符
打开网站根目录下e\class\function.php文件:一.删除两个空格: 搜索:$nbsp=' '; 改为:$nbsp=''; 二.删除<br>换行符 搜索: $ok='<b ...
- FastDFS分布式的文件系统从小白入门到企业实践打怪之路系列笔记 【运维实践】
描述: FastDFS 是阿里的余庆大佬用 C 语言编写的一款开源的分布式文件系统(个人项目),它对文件进行管理.功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,适合中小文件(4KB ...
- Zookeeper启动问题记录——ZooKeeper audit is enabled.
问题原因是Zookeeper的日志服务默认关闭,在zoo.cfg文件中添加 audit.enable=true 保存后重启服务就能够正常启动. 另外,这个只影响Zookeeper的日志记录,不影响其他 ...
- Fastjsonfan反序列链学习前置知识
Fastjson前置知识 Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象. Fastjson 可以操作任何 ...
- ES 文档与索引介绍
在之前的文章中,介绍了 ES 整体的架构和内容,这篇主要针对 ES 最小的存储单位 - 文档以及由文档组成的索引进行详细介绍. 会涉及到如下的内容: 文档的 CURD 操作. Dynamic Mapp ...