Java语法基础之基本数据类型和引用数据类型

Java是强类型语言,每个变量都必须有它的数据类型,而且变量之间不能随便转换数据类型python

主流的语言大多都是强类型 C、C++、Java、python程序员

弱类型语言数组

PHPspa

什么是数据类型?code

  • 数据类型,表示的是一个数据集合和基于该数据集合的一组合法操做

数据类型怎么分类?接口

  • 基本数据类型:JDK默认提供
  • 引用数据类型
    • 接口
    • ....

基本数据类型(base date type)

有哪些基本数据类型?内存

四类八种ci

  • 整型
    • byte:字节型,占1个字节空间
    • short:短整型,占2个字节空间
    • int:整型,占4个字节空间
    • long:长整型,占8个字节空间
  • 浮点型
    • float:单精度浮点型,占4个字节
    • double:双精度浮点型,占8个字节
  • 字符类型
    • char:占4个字节,表示单个字符
  • 布尔类型
    • boolean:具体占多少内存,了解便可
      • 根据JVM规范,在内存中boolean看成int处理,占4个字节
      • boolean数组当成byte数组处理,一个boolean元素占1个字节

基本数值类型的取值范围

基本数据类型 字节长度 大小(位) 最小值 最大值 取值范围
byte 1字节 8bit -2^7 2^7-1 -128 ~ 127
short 2字节 16bit -2^15 2^15-1 -32768 ~ 32767
int 4字节 32bit -2^31 2^31-1 -2147483648 ~ 2147483647(21亿出头)
long 8字节 64bit -2^63 2^63-1 -9223372036854774808 ~ 9223372036854774807(大概922亿亿)
float 4字节 32bit - - -3.403E383.404E38(有效位数67位)
double 8字节 64bit - - -1.798E308~1.798E308(有效数字15位)

引用数据类型(reference)

碍于知识点的限制,目前只要知道字符串(String)是一种引用数据类型便可字符串

String属于引用数据类型中的类it

基本数据类型的数据类型转换(conversion)

什么是数据类型转换呢?

  • Java是强类型语言,变量一旦声明后,数据类型不会轻易改变,但也并不是彻底不可能改变
  • 咱们将Java中变量的数据类型由某一种转换为另外一种,这个过程叫作数据类型转换

数据类型转换的分类

  • 自动类型转换,也叫向上转型
  • 强制类型转换,也叫向下转型

基本数据类型的自动类型转换(automatic)

什么是自动类型转换?

  • 数据类型无需程序员操做,由系统自动转换

基本数据类型的自动类型转换的规则

  • byte、short、char之间不互相转换,一旦之间发生运算,一概自动转换为int进行运算,结果是int
  • byte、short、char任一数据类型与int进行计算,一概自动转换为int进行计算,结果是int
  • byte、short、char、int任一数据类型与long进行计算,一概自动转换为long进行计算,结果是long
  • byte、short、char、int、long任一数据类型与float进行计算,一概自动转换为float进行计算,结果是float
  • byte、short、char、int、long、float任一数据类型与double进行计算,一概自动转换为double进行计算,结果是double

精度问题

  • 当大变小时,有可能会出现新的数据类型没法容纳所有的数据,致使部分信息被截断丢失,数据失真

    • 这种现象,有一个专业名词叫”精度损失“
  • 当int、long(4字节,8字节)自动转换成float(4字节)时,可能会由精度损失

  • 当long自动转换成double(8字节)时,也可能产生精度损失

基本数据类型的强制类型转换(cast)

什么是强制类型转换

  • 数据类型的转换须要程序员显式操做,不然报错

何时须要强制类型转换

  • 在特别有必要的状况下,把一个占内存大的数据类型,转换成小的数据类型,好比int---->byte

语法

目标数据类型 变量名 = (目标数据类型)(被转换的变量变量名);

精度问题

  • 强制类型转换,大变小,精度损失是很常见的
  • 强烈建议,若是不是不进行强制类型转换,程序就GG,不要使用强制类型转换,稍有不慎会致使bug
  • 进行强制类型转换,要严格考量,数据类型的取值范围,像(byte)200这种行为是很滑稽的

补充

  • boolean类型和其余数据类型之间不能经过强制类型转换语法直接转换
相关文章
相关标签/搜索