java数据类型有8种基本类型,其中4种整型、2种浮点类型、1种字符类型和1种表示真值的布尔类型。

4种整型:int  short  long  byte

占用空间:4字节  2字节  8字节  1字节

取值范围都是固定的,且所占字节数与平台无关

整型用于表示没有小数部分的数值,允许是负数。 通常情况下,int类型最常用,byte 和 short 用于特定场合,long用于极大数据。

Java整型的取值范围都是固定的,与运行java代码的机器无关,这就给移植带来了便捷。

长整型数值有一个后缀L或l,如40000000L,十六进制数值有一个前缀0x或0X,如0xCAFE,八进制数值有一个前缀0,例如010对应十进制中的8(八进制容易混淆,不建议使用)。

java7以后加上前缀0B或0b就可以表示二进制数,0b1001就是9,此外,java7之后数字字面下可以加下划线来易于阅读,例如1_000_000表示一百万,编译器会自动去除下划线。

tips:java没有任何无符号形式的int short long byte 类型(什么叫无符号形式的整型?A:在二进制存储中,因为二进制中只有0和1,所以左边第一位数字代表数值符号正负,无符号形式的类型则左边第一位不代表符号,直接为数值)

2种浮点类型:float double

占用空间:4字节  8字节

double 类型表示的精度是float的两倍,也叫双精度数值。通常情况下,float满足不了需求。float类型的数值后有后缀F或f,例如3.14F,没有F后缀的数值通常认为是double类型的数值。当然也可以在数值后添加D或d标名为双精度数值。

tips:浮点数类型 不适用于无法接受舍入误差的金融计算。例如system.out.println(2.0-1.1)将输出0.89999999,而不是人们期望的0.9。这种舍入误差的主要原因是因为浮点数值采用二进制系统表示,而在二进制系统中,无法精确表示0.1,就像十进制无法精确表示1/3一样。如果在数值计算中不允许有任何舍入误差,则使用BigDecimal类(暂时不了解)。

1种字符类型:char

占用空间:2字节

char类型原本表示单个字符。但现在有些unicode字符可以用一个char值表示,但有些需要使用两个char值。java中char类型本质是一个整数,在输出时,是unicode码对应的字符。

例如:

char c1 = 97

system.out.println(c1);//输出的值为a,因为在Unicode码中,97对应的字符是a,a为字面量值

char c2 = ‘a’ /*字面量值要用单引号括起来,与“a”不同,后者为包含a的一个字符串,而‘a’为编码值为97的字符常量*/

system.out.println.(c2);// 输出的值为字面量值a

system.out.println.(int(c2)); //输出的值为97,不输出字面量值,此处int属于强转,将char转为了int

system.out.println(‘a’ + 10);//输出 107

对于char的本质探讨:

对于赋值为字面量值的char来说,存储时,找到该字面量值所对应的数值,然后转换为二进制进行存储,例如‘a’,在计算机内部是以其对应的数值97的二进制数进行存储的,而读取时是以二进制读取为97后,找到97对应的字面量值,然后显示。

而对于直接赋值为数值的char来说,存储时不需要找到对应字面量值,直接存储为该数值的二进制数即可,提取时与上面一样,读取97后找到对应字面量值。

综上所述,char类型的本质其实是一系列的数值,可以表示为十六进制数,范围为\u0000到\uFFFF,它可以进行运算。

Tips1:其实java中char类型描述了UTF-16编码中的一个代码单元,强烈建议不在程序中使用char类型,除非确实要处理UTF-16代码单元。最好将字符串作为抽象数据类型处理。

Tips2:其他的数据类型的字面常量,就是其对应的赋值数据,对应的存储结果为二进制码。

1种表示真值的布尔类型

布尔类型,占用1个字节。boolean类型有两个值:true与false,用来判定逻辑条件,整型值与布尔值之间不可以相互转换。

Tips:在c/c++中布尔值可以用0或非0表示,但java中不可以,因为整型值0与非0不能和布尔值相互转换。

数据类型之间的转换与提升

1 数据类型相同的整型进行数据计算结果仍然为整型,例如

int a = 10;

int b =20 ;

system.out.println(a/b); // 输出为0,舍弃了小数点后的数字

2 当数据类型不同的数值进行使用(运算也一样)时,小类型会自动转为大类型,但大类型要转为小类型需要装置转换。例如

int a = 10;

long b =100L;//100L不算强转,只算一个常量类型的标签而已,声明这是一个long数据

b = a; // 可以,因为a为int类型,赋值给long时会自动转为long类型

a = b;// 不可以,因为b为long类型,赋值给小的int类型需要强制转换,如下

a = (int)b;

3 计算机存储整型,默认为int类型,long类型要加L,比int类型小的,计算机自动转为int数据存储,但是范围不可以超过本身包含的范围,例如 byte = 10;是可以的,但是byte = 130; 不行,因为超过了byte的内存空间范围 。存储浮点数据默认为double,float类型要加F。

4 数据溢出问题  当存储的数据比本身类型所能存储的空间要大的时候会造成数据溢出,此时会动用第一位的符号码,造成数据溢出,例如byte = (byte)128;//输出结果为-128.多的一位进到了byte的符号码上。

5 精度损失问题 :①浮点数据计算的精度损失问题:详见本章浮点数据Tips。float一般认为小数点后六位正确,double为12位。

②强转导致的精度损失问题:浮点数转为整型,会丢失小数点后的所有数据,float与double转换也会导致精度损失,同时,超过数据类型本身的范围的数据,使用强转会导致数据变化变得不再准确,例如4中byte的128强转,就是典型的例子。

6 Boolean类型不参与类型转换

7 short byte和char之间不会相互转换

8 强转一般只对最近的操作数有效 int x = (int)10*3.5+6;//编译错误,int只强转了10,导致浮点数无法存入x。

9 char在存储别的数据类型数据时,不能保存其变量值,只能保存常量值,要是必须保存变量值则需要强转。例如:

int m = 99;

char c = m;// 错误

char c = (char)m;//正确

char c = 99; //正确

Tips:关于3,自己的理解为,当我们设立一个变量并赋值,首先应该是根据变量的数据类型在内存中划分一块区域,例如byte为1字节,int为4字节,然后进行赋值操作,若超过该区域大小,则会报错,若使用强转,则造成精度损失,而所谓的默认为int类型,仅仅只是把其他的数据当作int数据来处理,并非直接划分了一个int的区域给该数据,或者说并非使用int的范围给该数据做存储,这也是为什么说整型的数据类型默认为int,但是超过byte范围的数据会报错但没超过却可以使用的原因。

java 数据类型的基本类型相关推荐

  1. java数据类型之小数类型

    小数类型 数据类型 所占字节数 精度 float 4 7 double 8 15 class Demo {public static void main () {//1)小数字字面量默认double类 ...

  2. MySQL 数据类型和 Java 数据类型对照表

    文章目录 数据库类型和 Java 数据类型对照表 MySQL 的 int.bigint.mediumint.smallint.tinyint 的对比 关于 MySQL 整型显示位数的问题 关于 MyS ...

  3. java原生类型没有封装_Java基本数据类型与封装类型详解(int和Integer区别)

    Java基本数据类型与封装类型详解(int和Integer区别) 发布于 2020-4-19| 复制链接 摘记: int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Int ...

  4. Java中,一切皆是对象——java中的对象类型与基本数据类型的区别

    起因:取一个list给另一个list赋值,然后在另一个list中取出进行修改.list其中类型为对象时,String时,基本数据类型时. [java中的对象类型与基本数据类型的区别] #声明和实例化 ...

  5. java 封装表单数据类型_Java基本数据类型与封装类型详解(int和Integer区别)

    int是java提供的8种原始数据类型之一. Java为每个原始类型提供了封装类,Integer是java为int提供的封装类(即Integer是一个java对象,而int只是一个基本数据类型).in ...

  6. java 获取js变量类型_JavaScript 的数据类型及其检测

    原标题:JavaScript 的数据类型及其检测 作者:浪里行舟 Java 有几种类型的值? Java 有两种数据类型,分别是基本数据类型和引用数据类型.其中基本数据类型包括 Undefined.Nu ...

  7. Java基础(二):基本数据类型和变量类型

    一.java基本数据类型: 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间.内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. Java 的两 ...

  8. java布类型的常量,java数据类型;常量与变量;

    java数据类型:基本数据类型.引用数据类型: 基本数据类型(8个): 整型(4):byte short int long(64bit) 浮点型(2):float(32bit) double(64bi ...

  9. Java为什么要有基本数据类型和包装类型

    作为面向对象语言为代表的Java, 在很多任务场景中经常看到它的身影.那么,Java为什么要有基本数据类型和包装类型? 这个问题看似简单,其实也不好回答.毕竟这个问题不仅你我感觉到困惑,许多大佬也感觉 ...

最新文章

  1. php header 重定向 url不变_PHP实现页面跳转功能
  2. OpenCV遍历图像性能比较、利用查找表
  3. lstm需要优化的参数_使用PyTorch手写代码从头构建LSTM,更深入的理解其工作原理...
  4. 如果你跟夕小瑶恋爱了...(下)
  5. saltstack常用模块
  6. 如何安装最新的 XFCE 桌面?
  7. 最新桌面操作系统份额统计:Windows占比91.59%
  8. 生活是没有什么阳光的
  9. lt;SCRIPT src=quot;../scripts/LoadWebOffice.jsquot;gt;lt;/SCRIPTgt;
  10. 以盛唐气象,浇胸中块垒:熊逸《唐诗50讲》学习笔记汇总
  11. SEO如何辨别真假Baiduspider
  12. 模块化分析设计(简单的注册登录模块)
  13. 电子发票中数字签名的提取解析教程
  14. CH32F103与STM32F103在USB接口上的差异与使用
  15. 如何实现电脑快速开机
  16. package crypto/rand: unrecognized import path crypto/rand (import path does not begin with hostnam
  17. web用户中心设计_关于Web设计和用户体验的10个误解
  18. Ceph Calamari Server RPM编译
  19. pip 不使用本地缓存安装指定库
  20. 主板芯片组和内存映射

热门文章

  1. 【Python】逆向爬虫-----模拟微信公众平台登录(MD5)
  2. 海拔4000米计算机设备,普通笔记本海拔4000米以上就不灵了,西藏只能带固态硬盘笔记本!...
  3. 归并排序 (递归+非递归)
  4. 述计算机标点用途,顿号(标点符号)_百度百科
  5. 数据库,表数据的插入
  6. 华为eNSP路由器报错误代码:40,41的问题解决办法。路由器启动无限###。eNSP安装。
  7. python之json格式数据的提取
  8. Vanish搭建CDN的节点集群
  9. 三星530换固态硬盘_imac换固态硬盘,提升运行速度
  10. libsvm安装使用及网格搜索法参数寻优