Java的八种基本类型、隐式转换、强制转换以及特殊转换

简介: Java的八种基本类型、隐式转换、强制转换以及特殊转换

(1)常用基本类型汇总

  八种基本类型汇总


  八种基本类型的字节空间和应用场景


  (2)byte类型

  基本介绍:

  byte数据类型是8位、有符号的,以二进制补码表示的整数;

  最小值是-128(-2^7);

  最大值是127(2^7-1);

  默认值是0;

  例如:byte bt = 120;

  (3)short类型

  基本介绍:

  short数据类型是16位、有符号的以二进制补码表示的整数

  最小值是-32768(-2^15);

  最大值是32767(2^15 - 1);

  默认值是0;

  例如: short st = 32700;

  (4)Int类型

  基本介绍:

  Int是最常用的整数类型。一个int类型的变量占用4个字节(32位),最大表示范围为:-2^31~2^31-1,即-2147483648~2147483647。

  默认值是0;

  整型变量的注意事项:

  整数的直接量的类型默认为int类型,如果直接写出的整数超过了int的表达范围,编译报错;

  int one = 80000000000000000000000;//超出范围,编译错误

  除了通常的十进制书写形式,整数的直接量也经常写16进制的相识(0X或0x开头)或者8进制形式(O开头);

  int two=529; //10进制

  int three=0x347a; //16进制

  int four=030; //8进制

  两个整数相除,会舍弃小数的部分(不是四舍五入),结果也是整数;

  int data1 = 49;

  int data2 = 79;

  int dataT = data1/data2;//dataT结果为0,因为49除以79的整数部分为0

  整数运算的溢出:两个整数进行运算时,其结果可能会超过整数的范围而溢出。正数过大而产生的溢出,结果为负值;负整数过大而产生的溢出,结果为正数

  int number=2147483647;

  int score=-2147483648;

  number= number+1;//结果为-2147483648

  score = score -1; //结果为2147483647

  (5)Long类型

  基本介绍:

  一般如果int类型的范围不够,可以使用long类型,一个long类型的变量占用8个字节(64位),最大表示范围为:-2^63~2^63-1,即-9223372036854775808~223372036854775807

  默认值是0L;

  注意:如果用long类型,则需要以L或l结尾

  long gg = 44;//错误

  long gg = 44L;//正确

  long类型变量的典型应用场景:

  超过int类型范围的数据,可以用long类型;

  比如:long yy = 3147483647L;

  (6)浮点数类型

  基本介绍:

  浮点数,就是小数,包括float和double;

  float默认值是0.0f;

  double默认值是0.0d;

  double类型的精度值是float类型的两倍,一般场合使用double类型。

  例如:double tt = 4.7;

  浮点数的写法:

  通常写法,如:3.68、.3

  科学计数法,如:2.17E2

  默认的浮点为double类型,如果需要表示float类型的直接量,需要加”f”或”F”后缀。例如:

  float ff=6.29; //编译错误,应该写成6.29f

  (7)char类型

  基本介绍:

  char类型事实上是一个16位无符号整数,这个值是对应字符的编码;

  Java字符串类型采用Unicode字符集编码。Unicode是世界通用的长度字符集,所有的字符串都是16位;

  Char类型变量赋值,可以采用如下三种形式:

  字符:形如’A’,变量中实际存储的是该字符的Unicode编码(无符号整数值),一个char型变量只能存储一个字符。

  整型数据:范围在0~65535之间的整数,变量中实际存储的即该整数值,但表示的是该整数值所对应的Unicode字符。

  Unicode形式:形如’\u0041’,Unicode字符的16进制形式。

  例如:char cr1= 705;

  char cr2=’N’;

  char cr3=’\u0031’;

  特殊的字符:转义字符


  (8)boolean类型

  基本介绍:

  boolean类型适用于逻辑运算,表示某个条件是否成立。一般用于程序的流程控制;

  boolean类型只允许取值true或false,true表示条件成立而false表示条件不成立。

  boolean默认值是false;

  例如:int a = 9;

  int b = 10;

  Boolean isBig = b>a;//输出为true

  (9)类型之间的转换

  基本介绍:

  不同的基本类型直接可以相互转换

  自动类型转换(隐式类型转换):从小类型到大类型可以自动完成。类型的大小关系如下:


  强制转换:从大类型到小类型需要强制转换符,但这样转换有可能会造成精度损失或溢出。

  int onef=654;

  int twof=957;

  long threef= onef + twof; //自动将int转换为long

  long numberf=9967L;

  int af=(int) numberf; //需要强制转换符,由于9967在int范围内,没有产生溢出

  long scoref=5147483647L;

  int bf=(int) scoref; //会产生溢出,结果为0

  double ttf=7.55684954444444444;

  float rrf=(float) ttf;//会造成精度的损失,结果为7.5568495

  几种特殊转换:

  多种基本类型参与的表达式运算中,运算结果会自动的向较大的类型进行转换;比如:

  int a = 4;

  double c = a/b;//结果为0.4,自动转换为double类型

  byte、char、short三种类型实际存储的数据都是整数,在实际使用中遵循如下规则:

  Int直接量可以直接赋值给byte、char和short,只要不超过其表示范围。

  byte、char、short三种类型参与运算时,先一律转换成int类型再进行运算。

  (10)代码实例

  package com.example.var;

  public class DataType {

  public static void main(String[] args) {

  byte bt = 120;

  System.out.println(bt);

  short st = 32700;

  System.out.println(st);

  System.out.println(two);

  System.out.println(three);

  System.out.println(four);

  int dataT = data1/data2;

  System.out.println(dataT);

  System.out.println(number);

  System.out.println(score);

  long gg= 44L;//正确

  long yy = 3147483647L;

  System.out.println(yy);

  double tt = 4.7;

  System.out.println(tt);

  char cr1= 705;

  char cr2='N';

  char cr3='\u0031';

  System.out.println(cr3);

  int a = 9;

  Boolean isBig = b>a;

  System.out.println(isBig);

  long scoref = 5147483647L;

  System.out.println(scoref);

  float rrf=(float) ttf; //会造成精度的损失,结果为7.5568495

  System.out.println(rrf);

  }

  }

相关文章
|
1月前
|
Java 编译器
【一步一步了解Java系列】:探索Java基本类型转换的秘密
【一步一步了解Java系列】:探索Java基本类型转换的秘密
34 3
|
1月前
|
Java 编译器 C语言
【一步一步了解Java系列】:探索Java基本类型与C语言的区别
【一步一步了解Java系列】:探索Java基本类型与C语言的区别
37 2
|
3月前
|
安全 Java 测试技术
Java零基础(10) - 基本类型转换
【8月更文挑战第10天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
32 3
|
4月前
|
存储 安全 Java
day17:Java零基础 - 基本类型转换
【7月更文挑战第17天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
32 2
|
5月前
|
存储 Java 程序员
【Java】Java的基本类型解读
【Java】Java的基本类型解读
80 1
|
6月前
|
Java C语言
java中8种基本类型与运算符
java中8种基本类型与运算符
41 3
|
6月前
|
存储 安全 Java
Java一分钟之Java数据类型概览:基本类型与引用类型
【5月更文挑战第7天】本文概述了Java中的基本和引用数据类型,强调了理解它们对高效编程的重要性。基本类型包括数值、布尔和字符类型,而引用类型涉及类、接口、数组等。注意基本类型的精度损失和溢出问题,以及引用类型的空指针异常和内存泄漏。通过明确类型范围、使用包装类、空值检查和及时释放资源来避免这些问题。代码示例展示了基本类型和引用类型的使用。理解这些核心概念有助于编写更健壮的Java代码。
45 1
|
6月前
|
存储 Java C语言
【Java探索之旅】基本类型与引用类型 数组的应用 二维数组
【Java探索之旅】基本类型与引用类型 数组的应用 二维数组
39 0
|
存储 Java 对象存储
Java中的基本类型与非基本类型
本文目录 1. 概述 2. 基本类型 3. 非基本类型 4. 内存的不同位置
139 0
|
11天前
|
安全 Java
java 中 i++ 到底是否线程安全?
本文通过实例探讨了 `i++` 在多线程环境下的线程安全性问题。首先,使用 100 个线程分别执行 10000 次 `i++` 操作,发现最终结果小于预期的 1000000,证明 `i++` 是线程不安全的。接着,介绍了两种解决方法:使用 `synchronized` 关键字加锁和使用 `AtomicInteger` 类。其中,`AtomicInteger` 通过 `CAS` 操作实现了高效的线程安全。最后,通过分析字节码和源码,解释了 `i++` 为何线程不安全以及 `AtomicInteger` 如何保证线程安全。
java 中 i++ 到底是否线程安全?
下一篇
无影云桌面