java的数据类型2

简介: java的数据类型

2.6双精度浮点型

       这里的小数得不到精确值与数据在内存中的存放是有关系的,整型的数据和浮点型的数据在内存中的存放方式是不一样的。比如某pxx的砍一刀,你眼中的99.9其实不一定是真的99.99。




       对这部分比较感兴趣的小伙伴可以参考我写的另外一篇博客,这里面详细的介绍了整数与浮点数在内存中是如何存取的:数据类型在内存中的存储

注意事项:

  1. double在任何系统下都占8个字节
  2. 浮点数与整数在内存中的存储方式不同,不能单纯使用 的形式来计算
  3. double的包装类型为Double
  4. double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。

2.7单精度浮点型

        float 类型在 Java 中占四个字节, 同样遵守 IEEE 754 标准. 由于表示的数据精度范围较小, 一般在工程上用到浮点数都优先考虑 double, 不太推荐使用 float. float的包装类型为Float。

2.8字符型变量

注意事项:

  1. Java 中使用 单引号 + 单个字母 的形式表示字符字面值.
  2. 计算机中的字符本质上是一个整数. 在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此一个字符占用两个字节, 表示的字符种类更多, 包括中文
  3. char的包装类型为Character

特殊情况:

执行 javac 的时候可能出现以下错误:

那么你的java很有可能是GBK的编码格式,就需要切换你的IDEA的编码格式为UTF-8

关于字符编码方式的讨论, 参见:https://zhuanlan.zhihu.com/p/35172335

2.9布尔类型变量

       布尔类型常用来表示真假,在现实生活中也是经常出现的,比如:听说xxx同学和校花交往,听到后估计大部分人第一反应就是:我x,真的假的?

注意事项:

  1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.
  2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法
  3. Java虚拟机规范中,并没有明确规定boolean占几个字节,也没有专门用来处理boolean的字节码指令,在Oracle公司的虚拟机实现中,boolean占1个字节。
  4. boolean的包装类型为Boolean

3.类型转换

Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验

       在Java中,当参与运算数据类型不一致时,就会进行类型转换。Java中类型转换主要分为两类:自动类型转换(隐式) 和 强制类型转换(显式)。

3.1自动类型转换(隐式)

       代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转为数据范围大的时会自动进行。

3.2强制类型转换(显式)

注意事项:

  1. 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型
  2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失
  3. 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查
  1. 强制类型转换不一定能成功,不相干的类型不能互相转换

3.3类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。

1. int与long之间:int会被提升为long

int a = 10;

long b = 20;

int c = a + b; // 编译出错: a + b==》int + long--> long + long 赋值给int时会丢失数据

long d = a + b; // 编译成功:a + b==>int + long--->long + long 赋值给long


2. byte与byte的运算


byte a = 10;

byte b = 20;

byte c = a + b;

System.out.println(c);



// 编译报错

Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失

byte c = a + b;


结论:


       byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误.

由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short这种低于 4 个字节的类型, 会先提升成 int, 再参与计算。


正确写法是:


byte a = 10;

byte b = 20;

byte c = (byte)(a + b);

System.out.println(c);


【类型提升小结:】

  1. 不同类型的数据混合运算, 范围小的会提升成范围大的.
  2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算

4.字符串类型

       在Java中使用String类定义字符串类型,比如:

String是可以进行字符串的拼接的

在有些情况下,需要将字符串和整形数字之间进行转换:

1. int 转成 String

      字符串+其他数据类型会变成一个新的字符串,num是整型,""双引号内无数据,拼接在一起显示的还是num的值,但是数据的类型发生了改变。

       String.valueof是类方法,可以将括号内的数据转换为字符串类型。

下方是java输出时的字符拼接情况:

2. String 转成 int

       以上就是本期的全部内容啦,希望看完后能够对你有所帮助。希望小伙伴们可以点赞收藏加关注,学习知识不迷路,hhh~。

目录
相关文章
|
1月前
|
存储 Java
Java中的基本数据类型有哪些?它们的大小和取值范围是多少?
Java基础数据类型:4种整型(byte[-128,127],short[-32,768,32,767]),2种浮点(float,double),1种字符(char,Unicode),1种布尔(true,false)。
20 0
|
2天前
|
存储 Java
【JAVA基础篇教学】第一篇:Java基础数据类型
【JAVA基础篇教学】第一篇:Java基础数据类型
|
2天前
|
小程序 Java 容器
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
7 0
|
2天前
|
Java
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
5 0
|
2天前
|
存储 Java 定位技术
轻松理解Java中的数据类型和变量
轻松理解Java中的数据类型和变量
5 0
|
5天前
|
存储 安全 Java
Java一分钟之Java数据类型概览:基本类型与引用类型
【5月更文挑战第7天】本文概述了Java中的基本和引用数据类型,强调了理解它们对高效编程的重要性。基本类型包括数值、布尔和字符类型,而引用类型涉及类、接口、数组等。注意基本类型的精度损失和溢出问题,以及引用类型的空指针异常和内存泄漏。通过明确类型范围、使用包装类、空值检查和及时释放资源来避免这些问题。代码示例展示了基本类型和引用类型的使用。理解这些核心概念有助于编写更健壮的Java代码。
14 1
|
12天前
|
存储 Java 程序员
Java中的基本数据类型有哪些?
【4月更文挑战第30天】Java中的基本数据类型有哪些?
16 1
|
13天前
|
Java
【Java探索之旅】数据类型与变量 字面常量 整型变量
【Java探索之旅】数据类型与变量 字面常量 整型变量
23 0
|
13天前
|
存储 Java C语言
【Java探索之旅】数据类型与变量 浮点型,字符型,布尔型,字符串型
【Java探索之旅】数据类型与变量 浮点型,字符型,布尔型,字符串型
20 0
|
13天前
|
存储 Java 开发者
JAVA基本数据类型
JAVA基本数据类型
18 1