Java基础知识回顾之一 ----- 基本数据类型
前言
在开始工作至今,学习各种各样的技术之中发现自己的很多Java的基础知识都忘了⊙﹏⊙b汗。。。 而且越是学习越是发现Java基础的重要性,所以准备单独抽一下时间进行Java基础的重新学习。在重新学习的时候,对这些又有了不同的感悟,于是准备将这些都记载下来,并整理成博客,希望能够帮助那些需要的人。
基本数据类型介绍
基本数据类型主要有这几个:
byte、short、int、long、float、double、char、boolean
可以分为三类:
- 数值类型:byte、short、int、long、float、double
- 字符类型:char
- 布尔型:boolean
byte
- byte是8位的数据类型,占用1个字节(8bit),默认值是0,它的取值范围是(-2^7) ~ (2^7-1),也就是 -128 ~ 127之间,所以最大存储数据量是255;
- byte一般在大型数组中使用,来代替整数,因为byte变量占用的空间只有int的1/4。
- byte使用示例: byte a = 10,byte=-10。在使用byte数据类型的时候需要注意取值范围!!!
short
- short是16位的数据类型,占用2个字节,默认值是0,它的取值范围是(-2^15) ~(2^15-1),也就是 -32768 ~ 32767之间,所以最大数据存储量是65536;
- short虽然是int型变量所占空间的1/2,但是在实际中却很少用到。在大型数组中也可以节省空间。
- short使用示例:short a=100,short b=-200;
int
- int是32位的数据类型,占用4个字节,默认值是0,它的取值范围是(-2^31) ~(2^31-1),也就是 -2147483648 ~ 2147483647之间,所以最大数据存储量是2^32-1;
- int是数据类型是整型,是我们在项目中用到最多的数据类型之一;
- int 使用示例:int a=1000,int b=-2000;
long
- long是64位的数据类型,占用8个字节,默认值是0L,它的取值范围是(-2^63) ~(2^63-1),也就是 -9223372036854775808 ~ 9223372036854775808之间,所以最大数据存储量是2^64;
- long是数据类型是长整型,是我们在项目中用到最多的数据类型之一。在使用long类型的数据时最好在数值末尾带上大写的L!
- long 使用示例:long a=1000L,long b=-2000L;
float
- float是32位的数据类型,占用4个字节,默认值是0,它的取值范围是3.4e-45 ~ 1.4e38 之间;
- float是数据类型是单精度,在直接赋值时必须在数字后加上f或F。
- float使用示例:float a=10.25f, float b=-20.35F;
double
- double是64位的数据类型,占用8个字节,默认值是0,它的取值范围是4.9e-324 ~ 1.8e308 之间;
- double是数据类型是双精度,在直接赋值的时候最好加上D或d。
- double使用示例:double a=10.123d, double b= -10.25644D;
boolean
- boolean是布尔类型,占用1个字节,只有两个值,false和true,默认值是 false。
- boolean只能用一种标志来记录 true或false,一般和 if 结合使用。
- boolean使用示例: boolean a=true,boolean b=false;
char
- char是字符类型,占用2个字节,默认值为空,取值范围 为 0~65535,也就是 \u0000 ~ \uffff。
- char数据类型可以储存任何字符。
- char 使用示例: char a=1,char b=’A’;
数值类型的级别从低到高分别为:
byte,char,short(这三个平级)——>int——>float——>long——>double
其中由低级别转到高级别,是属于自动类型转换,这点是由系统自动转换的。
例如将int类型的数据转为float类型的数据。
示例:
int i=10;
float j=i;
System.out.println("i:"+i+",j:"+j);
结果:
i:10,j:10.0
如果由高级别转为低级别,则需要强制转换,也就是强制类型转换。
例如将int类型的数据转换为byte类型的数据。
示例:
int i=127;
int j=128;
byte bye=(byte)i;
byte bye2=(byte)j;
System.out.println("i:"+i+",bye:"+bye);
System.out.println("j:"+j+",bye2:"+bye2);
结果:
i:127,bye:127
j:128,bye2:-128
说明:因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。所以在进行强制类型转换的时候,要注意取值范围!
在强制转换的时候需要注意数据的精确度,否则可能会出现数据精确丢失。
例如 double类型的数据转换为float类型数据。
示例:
double d=10.1111115;
float f=(float) d;
System.out.println("f:"+f+",d:"+d);
结果:
f:10.111112,d:10.1111115
了解了数据类型的级别之后,如果用不同的数据类型进行计算,那么最终的数据类型又是哪一种呢?
这里我们用这几种来测试:
1.byte 类型的数据 加 short 类型的数据;
2.short 类型的数据 加 int 类型的数据;
3.int 类型的数据 加 long 类型的数据;
这里我们使用这个方法来获取最终的数据类型
public static String getType(Object o){ return o.getClass().toString(); }
代码:
short a=1;
byte b=2;
int c = 3;
long d = 4;
System.out.println(getType(a));
System.out.println(getType(b));
System.out.println(getType(c));
System.out.println(getType(d));
System.out.println(getType(a+b));
System.out.println(getType(a+c));
System.out.println(getType(c+d));
结果:
class java.lang.Short
class java.lang.Byte
class java.lang.Integer
class java.lang.Long
class java.lang.Integer
class java.lang.Integer
class java.lang.Long
看到结果是不是有点吃惊呢?那么是为什么呢?
这里的不同的数值类型数据进行相加的时候,会自动转换为级别最高的那一个。
那么short 类型的数据加 byte 类型的数据为什么是int类型呢?
因为在java的世界里,如果比int类型小的类型做运算,java在编译的时候就会将它们统一强转成int类型。
如果上述不好理解的,那么这里我们来做个实验测试下,通过结果来进行验证。
示例:
short a=1,b=2;
byte c=3,d=4;
System.out.println(getType(a+b));
System.out.println(getType(c+d));
结果:
class java.lang.Integer
class java.lang.Integer
那么这里可以得出结论,在数值类型中,若级别小于int,进行计算的时候,最终的数据类型会自动转换为int,如果高于int,最终数据结果会取其中最高的一个!
Java基础知识回顾之一 ----- 基本数据类型相关推荐
- Java基础知识回顾之七 ----- 总结篇
前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...
- 【Java基础知识回顾篇】之打怪升级Day001
Java基础知识回顾篇之打怪升级Day001 目录 Java基础知识回顾篇之打怪升级Day001 简介 一.为什么现在主流的是Java8和Java11? 二.简单尝试编写java程序 1.编写一个He ...
- Java基础知识回顾之六 ----- IO流
前言 在上一篇文章中,回顾了Java的多线程.而在本篇文章中主要介绍Java IO的相关知识. IO的介绍 什么是IO? IO的名称又来是Input与Output的缩写,也就是输入流和输出流.输入流用 ...
- Java基础知识回顾之四 ----- 集合List、Map和Set
前言 在上一篇中回顾了Java的三大特性:封装.继承和多态.本篇则来介绍下集合. 集合介绍 我们在进行Java程序开发的时候,除了最常用的基础数据类型和String对象外,也经常会用到集合相关类. 集 ...
- Java基础知识回顾之三 ----- 封装、继承和多态
前言 在上一篇中回顾了java的修饰符和String类,这篇就来回顾下Java的三大特性:封装.继承.多态. 封装 什么是封装 在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部份包装 ...
- Java基础知识总结1(数据类型)
一 .Java数据类型 1.基本数据类型(8种) 整数类型:byte(1个字节) short(2个字节)int(4个字节)long(8个字节) 浮点类型:float(4个字节)double(8个字节) ...
- Java基础知识回顾
1.Java集合 (1).几种集合(List.Set和Map)的区别 JAVA中几种集合(List.Set和Map)的区别 java常用集合总结 Java集合类: Set.Lis ...
- java基础知识回顾之javaIO类总结
java IO体系图 IO流的操作规律总结: 1,明确体系: 数据源:InputStream ,Reader 数据汇:OutputStream,Writer 2,明确数据:因为数据分两种:字节,字符. ...
- java基础知识回顾之javaIO类---FileInputStream和FileOutputStream字节流复制图片
package com.lp.ecjtu;import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...
最新文章
- 六步使用ICallbackEventHandler实现无刷新回调
- Nature微生物多样性驱动了细菌以CRISPR系统抵御噬菌体
- Ural 1018 (树形DP+背包+优化)
- Java 8特性有望进入.Net/Mono
- FreeRTOS 之一 源码目录文件 及 移植详解
- linux的无密码登录,linux 无密码登录
- java控制cmd导出dmp文件_cmd的操作命令导出导入.dmp文件
- 支付宝当面付接口如何计算优惠
- es分片及source字段小结
- linux更改文件系统格式,只安装Linux系统,把硬盘全部格式化成Linux文件系统
- 数学三次危机(三)“希帕索斯悖论”或“毕达哥拉斯悖论”
- 【DLL的函数】关于DLL的函数|_declspec(dllimport)
- git Incorrect username or password (access token)问题解决
- java audioinputstream 读取音频文件_从原始文件中获取最多x个字节的AudioInputStream(剪切音频文件)...
- STM32F105 UART4 发送异常及解决
- 使用TexturePacker命令行的一个坑
- java实现端口映射_Java BIO实现TCP端口转发(端口映射)功能源码
- 初探BlockChain——哈希和电子签名
- 金融危机下的就业问题
- h3c linux驱动 wn612_H3C iNode智能客户端安装指导(Linux)-7.3-5PW102