Java是一种强类型语言, 这就意味着必须为每一个变量声明一种类型.

Java中一共有8中基本类型:

  • 4种整型:

整型: 用于表示没有小数部分的数值, 允许为负数
  类型        存储需求        取值范围
  int:          4字节     -2 147 483 648 ~ 2 147 483 647 (正好超过20亿)
  short:          2字节     -32 768 ~ 32 767
  long:         8字节    -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807
  byte:         1字节    -128 ~ 127

  • 2种浮点类型:
  • 用于表示有小数部分的数值.

  类型      存储需求         取值范围
  float          4字节         大约 ±3.402 823 47E + 38F(有效位数为 6 ~ 7 位)
  double      8字节         大约 ±1.797 693 134 862 315 70E + 308(有效位数为15位)

  • double表示这种类型的数值精度是float类型的两倍(双精度数值), 大部分程序都采用double类型.
  • float类型的数值有一个后缀F, 没有后缀F的浮点数值默认为double类型.可以在浮点数值后面添加后缀D表示double.
  • 表示溢出和出错情况的三个特殊的浮点数值:

正无穷大
负无穷大
NaN

  • 一个正整数除以0: 正无穷大
  • 0/0, 负数的平方根结果为NaN
  • 浮点数值不适用于禁止出现摄入误差的金融计算中, System.out.pritln(2.0-1.1) 将打印出0.8999999999999999, 而不是0.9
  • 浮点数值采用二进制系统表示, 而在二进制系统中无法精确的表示分数1/10.
  • 如果需要在数值计算中不含有任何舍入误差,应使用BigDecimal类
  • 1种用于表示Unicode编码的字符单元的字符类型char

用于表示单个字符, 通常用来表示字符常量, 建议不要在程序中使用char类型

  • 1种用于表示真值的boolean类型

boolean类型由两个值: false, true, 用来判定逻辑条件.
整型值和布尔值之间不能进行相互转换. 不能使用if(x = 0), x=0不能转换为布尔值.

数值类型之间的转换

  • 合法转换:
  • 无信息丢失的转换:

byte -> short -> int -> long
char -> int
int -> double

  • 可能有精度损失的转换:

int -> float
long -> float
long -> double

  • 两个数值进行二元操作时, 先要将两个操作数转换为同一种类型, 然后再进行计算.

1. 如果两个操作数中有一个是double类型, 另一个操作数就会转换为double类型.
2. 否则, 如果其中一个操作数是float类型, 另一个操作数将会转换为float类型.
3. 否则, 如果其中一个操作数是long类型, 另一个操作数将会转换为long类型.
4. 否则, 两个操作数都将转换为int类型

  • 强制类型转换

圆括号中给出想要转换的目标类型, 后面紧跟待转换的变量名.
double x = 9.997;
int nx = (int) x;    // nx is 9

int nx = (int) Math.round(x); // 四舍五入, 再转为整型
Math.round() 返回的是long类型, 由于存在信息丢失的可能性, 所以只有使用显式的强制类型转换才能够将long类型转换成int类型.

注意: 将一个数值从一种类型强制转换为另一种类型, 而又超出了目标类型的表示范围, 会截断为一个完全不同的值.
不要在boolean类型与数值类型之间进行强制类型转换, 防止发生错误.

java笔记 -- java数据类型与类型转换的更多相关文章

  1. Java 笔记 —— java 和 javac

    Java 笔记 -- java 和 javac h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: ...

  2. Java笔记原生数据类型【二】

    1.Java中的数据类型分为: 1)原生类型(primitive Data type) 2.)引用类型(对象类型) (Reference Type) 1.变量和常量: 常量: 就是值不会变化的量: 变 ...

  3. java注释 命名 数据类型 基本类型转换 位运算符 逻辑运算符 三目运算符

    一.java注释 1.单行注释  //注释内容 2.多行注释 /*注释内容*/ 3.文档注释(可用javadoc工具生成api文档,不过我还没试过)/**文档注释*/,文档注释可以在使用的时候看见注释 ...

  4. JAVA的基本数据类型和类型转换

    一.数据类型 java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化. java数据类型分为基本数据类型和引用数据类型 基本数据类型有4类8种 第一类(有4种)整型: ...

  5. java笔记之数据类型

    java中一句连续的字符不能分开在两行中书写,如国太长可用“+”将这两个字符串连起来 文档注释是以“/**”开头,并在注释内容末尾以“*/”结束. 文档注释是对代码的解释说明,可以使用javadoc命 ...

  6. Java笔记--Java的List、Iterator用法

    1. List的使用 准备知识: List继承自Collection接口.List是一种有序集合,List中的元素可以根据索引(顺序号:元素在集合中处于的位置信息)进行取得/删除/插入操作. 跟Set ...

  7. java笔记 -- java字符串

    概念: Java字符串就是Unicode字符序列, Java没有内置的字符串类型, 而是在标准Java类库中提供了一个预定义类. 每个用双引号括起来的字符串都是String类的一个实例.String ...

  8. Think in Java笔记——Java与对象

    最近在重新学习Java,在阅读Java的经典著作——Java编程思想,因此每天记录阅读的心得. 当听到Java这个词时,大家一般想到的是面向对象,确实Java相对于C/C++这两门语言来说,Java最 ...

  9. 菜鸡的Java笔记 java基础类库 BaseClassLibrary

    java基础类库 BaseClassLibrary        StringBuffer 类的特点        StringBuffer,StringBuilder,String 类之间的关系   ...

随机推荐

  1. iview form 表单的怪异小BUG

    当同一个弹窗中的表单重复利用时: 我原先的代码逻辑是: <Form :label-width="100" class="mt20" ref="c ...

  2. 2018-2019-2 网络对抗技术 20165318 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165318 Exp2 后门原理与实践 后门的基本概念及基础问题回答 常用后门工具 netcat Win获得Linux Shell Linux获得Win Sh ...

  3. MySQL慢查询语句的定位

    使用以下语句可以查询相关的配置和日志所在位置: show variables like '%slow%'; 名词解释: log_slow_admin_statements: 打开后可以将一些比较慢的管 ...

  4. CFGym101138D Strange Queries 莫队/分块

    正解:莫队/分块 解题报告: 传送门 ummm这题耗了我一天差不多然后我到现在还没做完:D 而同机房的大佬用了一个小时没有就切了?大概这就是大佬和弱鸡的差距趴QAQ 然后只是大概写下思想好了因为代码我 ...

  5. ext 的controller中的refs的使用方法

    通过ext api 可以知道ext 的controller中有个refs的属性,对于这个属性 文档上是这么说的:配置数组构建页面上的视图的引用. 我并看不懂,接下来说的是我对这个refs的理解. 对这 ...

  6. svn 目录

    svn介绍 SVN与Git的区别 SVN服务的模式和多种访问方式 多种访问原理图解与优缺点 SVN安装部署 svn 部署 配置 配置svn用户及密码 配置svn用户及权限 svn 启动命令讲解 svn ...

  7. [LeetCode] 236. Lowest Common Ancestor of a Binary Tree_ Medium tag: DFS, Divide and conquer

    Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According ...

  8. nuxtjs中修改head及vuex的使用

    1.在之前vue项目中,我们如果需要改变每个页面的title,是需要在路由里配置meta然后通过路由守卫将每个页面的title替换掉,但是在nuxtjs中他提供了一个方法,直接在每个.vue的文件中使 ...

  9. dfs进阶

    当自己以为自己深搜(其实就是暴力啦)小成的时候,发现没有题目的积累还是很难写出程序,自己真的是太年轻了:总结一下就是做此类题看是否需要使用vis数组优化以及继续搜索的条件或者满足答案的条件.以下为2题 ...

  10. NOIP2017感想

    说实话,这次刚刚看到题目的时候真的有点懵.尤其是第一天的第一题,浪费了太多的时间,一开始天真的以为10的9次方,会爆long long.然后就特别傻的写一个高精度,总觉得自己有哪些细节方面处理的不到位 ...