Java 常用数据类型(总结)

  • 本文表格数据主要来源 《Java核心技术第10版(套装共2册)》-- 作者:[美]凯S.霍斯特曼,霍斯特曼,科内尔 -- 译者:陈昊鹏等

  • 写法:-32_768 即:-32768,其它同理。

8 大基本数据类型

在 Java 中,一共有 8 种基本类型。
其中有 4 种整型、2 种浮点类型、char 字符类型和 boolean 类型。
基本数据类型进行 加减乘除 时,会自动转换到 范围大的数据类型,如 double/int = double。
两个相同类型的数据计算,得到 另一种数据类呢 ?
如 double d = 1/2,结果是 0.0,不是 0.5,而 double d = (double)1/2,结果才是 0.5。

自动类型转换(不丢失精度,隐式类型转换):低精度转换到高精度,int -> long; float -> double。

强制类型转换(丢失精度,显式类型转换):在 变量 或 表达式 前加上 ([类型])即可。

类型转换规则:

  • byte、short、char 之间不会自动相互转换。
  • boolean 不参与计算。
  • 自动提升,表达式结果自动转换为操作数中最大的类型。

整型

没有小数,允许是负数

类型 大小 取值范围 是否有符号
byte 1 字节 -128 ~ 127 true
short 2 字节 -32_768 ~ 32_767 true
int 4 字节 -2_147_483_648 ~ 2_147_483_647(-21 亿+ ~ 21 亿+) true
long 8 字节 -9_223_372_036_854_775_808 ~ 9_223_372_036_854_775_807 true

注意了:long 类型的数据在赋值时,需要加上后缀 L/l,选一个,不然会默认是 int 类型。
int 的 范围在 -2_147_483_648 ~ 2_147_483_647,下面的代码中给 num4 赋值大于 int 范围时便报错。
下文中的 32_767 和 32767 是同一个意思,编译器在编译时会去除 下划线 的。

@Test
public void aVoid1 () {byte num1 = 127;short num2 = 32_767;int num3 = 2147483647;long num4 = 9_223_372_036_854_775_807L;System.out.println("num1 = " + num1);System.out.println("num2 = " + num2);System.out.println("num3 = " + num3);System.out.println("num4 = " + num4);
}

浮点型

类型 大小 取值范围 是否有符号
float 4 字节 +/- 3.402_823_47E+38F (有效位数为 6~7 位) true
double 8 字节 +/- 1.797_693_134_862_315_70E+308 (有效位数为 15 位) true

注意,赋值 double、float 时,默认都是将 double 数据赋予指定 变量的。
要指定是 float 类型需要在数据后加 F/f,那加上 D/d 就是指定为 double 类型了(默认就是了,基本不加)。
float 的精度难以满足实际需求,故很少使用。

几个特殊的浮点数值:

不能用 == 来判断变量是否等于 Double.NaN,认为是不相等的,但可以使用对应的 Double.isNaN 方法来校验。
而其他的两个 特殊浮点数可以用 == 来判断。因为所有非数值的数都是不相等的。

  • 正无穷大,Double.POSITIVE_INFINITY,1.0/0.0 时得到该值。(溢出)

  • 负无穷大,Double.NEGATIVE_INFINITY,-1.0/0.0 时得到该值。(溢出)

  • NaN,Double.NaN,计算 0.0、0.0 时得到该值。不是一个数。(出错)

@Test
public void aVoid2 () {float num1 = 56F;double num2 = 56;System.out.println("num1 = " + num1);System.out.println("num2 = " + num2);double nan = Double.NaN;double positive_infinity = Double.POSITIVE_INFINITY;double negative_infinity = Double.NEGATIVE_INFINITY;boolean n1 = Double.isNaN(nan);System.out.println("nan =  Double.NaN ? " + n1);System.out.print("nan =  Double.NaN ? ");System.out.println(nan == Double.NaN);System.out.print("positive_infinity = Double.POSITIVE_INFINITY ? ");System.out.println(positive_infinity == Double.POSITIVE_INFINITY);System.out.print("negative_infinity = Double.NEGATIVE_INFINITY ? ");System.out.println(negative_infinity == Double.NEGATIVE_INFINITY);}

char 类型

用来表示 Unicode 字符,用一个或两个 char 值来表示 一个 Unicode 字符。
char类型的字面量值要用单引号括起来,内容只能为一个字符,字符也可以换成 Unicode 编码,下面代码的结果是一样的。
强烈建议,不要用

@Test
public void aVoid3 () {char c1 = 'u';char c2 = '\u0075';System.out.println("c1 = " + c1);System.out.println("c2 = " + c2);
}

boolean 类型

只有两个值 true、false。用来判定逻辑条件。
注意,整型值和布尔值之间不能进行相互转换,即 x=0 不能转换为布尔值。

@Test
public void aVoid4 () {boolean x1 = true;boolean x2 = false;boolean x3 = 0 == 1;System.out.println("x1 = " + x1);System.out.println("x2 = " + x2);System.out.println("x3 = " + x3);
}

其他的 ‘数据类型’

这些 ‘数据类型’ 是一个 Java 对象,并不是一种新的 Java 类型。

String 类

也可以说是 字符串 类型。
String 是一个类,没有 加减乘除,只有 +(拼接),即 “123” + 7 = “1237”,其他的同理。
对应的,不能比较,也不能更改,有对应的 工具类用来操作 String 类。
StringBuilder、StringBuffer 就是常用的工具类。

@Test
public void aVoid5 () {String str = "hhhhhh";String str1 = "ggggg";String str2 = "123";int str3 = 5;StringBuilder str6 = new StringBuilder(str1).append(str);StringBuffer str7 = new StringBuffer(str2).append(str3);System.out.println("str = " + str);System.out.println("str.getClass() = " + str.getClass());System.out.println("str1 + str = " + str1 + str);System.out.println("str2 + str3 = " + str2 + str3);System.out.println("str6 = " + str6);System.out.println("str7 = " + str7);
}

大数值

这个我用的比较少,介绍短

有两个对象 BigInteger(大整数)、BigDecimal(大小数),同时 它们的父类 Number 也是 基本数据类型的父类。
是 double 的扩展,当一个大于 double 的数据要 算术运算 时,double 已经不能处理了,对每一个字符进行操作又太复杂。

java.math 包提供的 BigInteger 就是为了实现 大数字(大于 Double)运算的。
BigInteger 类除了基本的四则运算,还有模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作,功能十分丰富。

BigInteger

@Test
public void aVoid6 () {BigInteger bigInteger = new BigInteger("77");System.out.println("bigInteger = " + bigInteger);BigInteger bigA = new BigInteger("2435545434422445623443");BigInteger bigB = new BigInteger("2435522445623443");// +System.out.println(bigA.add(bigB));// -System.out.println(bigA.subtract(bigB));// *System.out.println(bigA.multiply(bigB));// /System.out.println(bigA.divide(bigB));
}

BigDecimal 类的四则操作与 BigInteger 类基本相同的,也提供有基本的数学计算。
最重要的是,BigDecimal 类的除法有一个非常重要的功能,可以自定义 要保留的小数位数 和 进位模式。
而 Math 类之中的 round()方法进行四舍五入操作过程之中,采用的是所有小数点全部进位,没有小数位,这样的做法是不可取的。

BigDecimal

@Testpublic void aVoid7 () {BigDecimal bigDecimal = new BigDecimal("88.8");System.out.println("bigDecimal = " + bigDecimal);BigDecimal big1 = new BigDecimal("09.65329888");System.out.println(Math.round(09.65329888));System.out.println(big1.divide(new BigDecimal(1), 2, BigDecimal.ROUND_UP));System.out.println(big1.divide(new BigDecimal(1), 1, BigDecimal.ROUND_UP));System.out.println(big1.divide(new BigDecimal(1), 5, BigDecimal.ROUND_UP));}

总的来说,大数值就是用来 运算大数据精密计算小数 的。

(二发)如果对你有帮助,点赞可好!!

Java 常用数据类型(总结)相关推荐

  1. Java 常用数据类型的输入输出

    C语言学习完转到Java后,第一个感觉就是Java的写法很复杂,同时,在常用的数据类型的输入输出上也没有C语言那么方便.在C语言上面,用 scanf 函数可以很方便的输入大多数格式,在Java上却不行 ...

  2. Java常用数据类型

    数值:byte.short.int.long.float.double: 非数值:char.boolean 基本数据类型,操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值.引用数据类型(类 ...

  3. java常用数据类型之间转换

    String和Integer Integer 转 String //使用toString(),必须保证Integer对象不是null,否则会抛出NullPointerException异常 Integ ...

  4. Java常见数据类型举例及总结

    一.Java常见数据类型举例 1.整型 运行结果如下: 2.长整型 运行结果如下: 3.短整型 运行结果如下: 4.双精度型 运行结果如下: 注: 在电脑中,小数没有一个最精确的值,它只能精确到小数点 ...

  5. Python 知识点笔记一常用数据类型

    知识点主要范围:常用数据类型. 介绍 诞生:1985年 圣诞节 由龟叔无聊编写出来: python的3大特点:优雅.明确.简单: 不适合游戏开发,游戏需要高速的渲染,要c/c++来编写: 当代程序运行 ...

  6. openresty开发系列12--lua介绍及常用数据类型简介

    openresty开发系列12--lua介绍及常用数据类型简介 lua介绍   1993 年在巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de ...

  7. 简单介绍一下Java常用的五大框架!

    Java框架在Java开发中的作用是毋庸置疑的.那么Java常用框架有哪些?大概包括:Hibernate.Spring.Struts.jQuery.Redis五种.这些框架有什么用呢?Java常用框架 ...

  8. Java常用的5大框架介绍!

    作为常年霸榜的头牌编程语言,Java的火热程序已经毋庸置疑,Java框架在Java开发中的作用也是不可忽视.下面,小千给大家具体介绍一下Java常用的5大框架,希望对正在学习Java的人有所帮助. 1 ...

  9. java 扩展数据类型_005Java学习--数据类型及拓展

    数据类型 强类型语言(安全性高,速度慢) ​ 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用. 弱类型语言 Java的数据类型分为两大类 基本类型(primitive type)---- ...

  10. java 常用类库_JAVA(三)JAVA常用类库/JAVA IO

    成鹏致远 |lcw.cnblog.com|2014-02-01 JAVA常用类库 1.StringBuffer StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同, ...

最新文章

  1. Sharepoint Caml查询中时间格式
  2. SAStruts リンク記述におけるs:linkとhtml:linkの比較
  3. BugkuCTF-MISC题妹子的陌陌
  4. 新俊飞六合一口红机完整源码
  5. Elasticsearch整理笔记(二)
  6. 动态数组的各种操作 0104 c#
  7. netty ssl 服务器
  8. 计算机操作系统》第06章在线测试,《计算机操作系统》第01章在线测试
  9. 基于JAVA教师业绩考核和职称评审系统计算机毕业设计源码+数据库+lw文档+系统+部署
  10. 指数函数、对数函数、双曲函数
  11. linux启动supervisord服务,supervisord进程管理服务
  12. 思维导图带你学习二层VLAN隔离技术
  13. 9 个 yyds Java项目,可应对各种私活!
  14. 两个ip linux,教你ipconfig有两个ip地址的解决方法
  15. Mac微信更新 可备份手机聊天记录
  16. [审核]审核被拒(陌生社交应用)
  17. 全国计算机等级考试四级考试大纲,全国计算机等级考试四级考试大纲
  18. Java—飞花的糖果
  19. Linux防火墙iptables禁IP与解封IP常用命令
  20. html回弹效果,CSS 实现移动设备滚动回弹效果_html/css_WEB-ITnose

热门文章

  1. 矩阵乘法计算量估算/华为机试(C/C++)
  2. lisp代码合并_CAD 同名文件合并(不开图)
  3. P2114 起床困难综合症
  4. 5.14 创建基于图层的切片并输出网页 [原创Ps教程]
  5. w10恢复出厂设置_w10电脑恢复出厂设置 w10电脑恢复出厂设置的方法
  6. 申论该怎么学?申论作文如何提高
  7. 【iOS篇】在iPhone上安装描述文件
  8. 创建新环境出现报错Collecting package metadata (current_repodata.json): failed.问题成功解决。
  9. linux pack文件镜像,使用buildpack-deps 构建自己的入容器镜像
  10. 互联网日报 | 1月10日 星期日 | 小米之家千店同开;蔚来发布首款旗舰轿车ET7;LVMH完成收购Tiffany...