【编程基础】Java的八种基本数据类型

程序=数据+算法,也就是说程序就是你编写算法操作数据。Java是一种强类型语言,也就是说每一个变量都必须是某种类型的变量。在Java中数据类型分为基本数据类型和自定义的数据类型(也就是大家常说的类),但是所有的自定义数据类型都是由基本数据类型组成的。

Java的基本数据类型有8种,4个整型、2个浮点型、1个字符型、1个布尔型。

一、4个整型:

整型大家在数学中应该都知道,没有小数点后的部分,但是有负数。

1、byte: 0000 0000

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

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

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

默认值是0;

主要用在考虑到节约空间的时候替代int类型,因为byte变量占用的空间只有int类型的四分之一;

2、short:0000 0000 0000 0000

short数据类型是16位(2个字节)、有符号,以二进制补码表示的整数 ;

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

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

默认值是0;

short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一;

在Java中以上两个整型用的很少,除非是考虑空间问题才会使用它们来代替int。

3、int: 0000 0000 0000 0000 0000 0000 0000 0000

int数据类型是32位(4个字节)、有符号,以二进制补码表示的整数;

最小值是-2,147,483,648(-2^31);

最大值是2,147,485,647(2^31 - 1);

默认值是0;

在Java中,一般地整型变量默认为int类型;

4、long:0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

long数据类型是64位(8个字节)、有符号,以二进制补码表示的整数;

最小值是-9,223,372,036,854,775,808(-2^63);

最大值是9,223,372,036,854,775,807(2^63 -1);

默认值是0L;

这种类型主要使用在需要比较大整数的系统上,比如系统的时间、世界的人数;

二、2个浮点型:

浮点型用于表示有小数部分的数值。

1、单精度的float:0000 0000 0000 0000 0000 0000 0000 0000

float数据类型是单精度32位(4个字节)的浮点数;

float在储存大型浮点数组的时候可节省内存空间;

默认值是0.0f;

2、双精度的double:0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

double数据类型是双精度64位(8个字节)的浮点数;

默认值是0.0;

浮点数的默认类型为double类型;

默认的浮点型是double型,123.4就是一个double型,123.4f就是一个float型;

三、1个字符型:

char类型是一个单一的16位Unicode字符(2个字节) 0000 0000 0000 0000;

最小值是’\u0000’(即为0);

最大值是’\uffff’(即为65,535);

char数据类型可以储存任何字符;

例子:

char ch1 = 88;

char ch2 = 'A';

字符型可以说是一种特殊的整型。

四、一个布尔类型:

boolean数据类型表示一位的信息,只有两个取值:true和false,用来判定逻辑条件

这种类型只作为一种标志来记录true/false情况;

默认值是false;

例子:boolean one = true。

上面介绍了8中基本类型,在Java中每一种基本数据类型都对应一个对象版本:

byte -》Byte;

short -》Short;

int -》Integer;

long -》Long;

float -》Float;

double -》Double;

char -》Character;

boolean -》Boolean;

对于每一种数据类型的范围和占用位数不用死记,可以利用对应对象获取,比如:

Integer.SIZE是int型占用的位数,Integer.MIN_VALUE、Integer.MAX_VALUE分别表示int型的最小、最大值。注意boolean型没有最大最小值,它只有true或者false两个值。

说了这么多基本知识你可能看的有点烦,下面来点实战的。在有些面试题和实际编程中经常会遇到不同数据类型数据之间的计算。例如:

float f=3.4; 是否正确?short s1 = 1; s1 = s1 + 1;有错吗?

答案我先不说,先看下图:

在进行数学计算的时候如果运算符两侧的数据类型不同就会进行数据类型转换,在转换时有可能出现数据丢失。上图中实箭头表示在进行转换时无数据丢失,虚箭头表示在转换后有数据丢失。

两个不同数据类型进行计算时有哪些转换的标准?例如n和m 进行数学运算(+、-、*、/)

1、如果运算符两侧n、m有一个是double类型的,那么另一个将会转换为double类型,如果不满足则按下面的规则;

2、如果运算符两侧n、m有一个是float类型的,那么另一个将会转换为float类型,如果不满足则按下面的规则;

3、如果运算符两侧n、m有一个是long类型的,那么另一个将会转换为long类型,如果不满足则按下面的规则;

4、n和m都转换为int类型进行计算;

知道了规则后上面的面试题答案知道了吗?

float f = 3.4;是错误的,因为默认浮点型是double的,float f = 3.4f或者float f = (float)3.4才正确;

s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型;

再次强调一下,比int小的数据类型(byte、char、short)在进行运算前都会自动转为int,所以计算结果是int型,如果要把结果赋值给比int小的数据类型时要进行强制类型转换。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-05-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

java.util.Arrays类详解

为实现数组的排序和查找、数组的比较和对数组填充元素,java.util.Arrays类包括各种各样的静态方法。这些方法都有对所有基本类型的重载方法。

433
来自专栏机器学习算法与Python学习

python: sort, sorted, reverse

python语言中的列表排序方法有三个:reverse反转/倒序排序、sort正序排序、sorted可以获取排序后的列表。在更高级列表排序中,后两中方法还可以加...

3368
来自专栏Python小屋

Python内置函数使用说明

函数功能简要说明abs(x)返回数字x的绝对值或复数x的模all(iterable)如果对于可迭代对象iterable中所有元素x都有bool(x)为True,...

2524
来自专栏个人随笔

房上的猫:数组

一.数组:  1.定义:   (1)数组就是一个变量,用于将相同数据类型的数据储存在内存中   (2)数组中的每一个数据元素都属于统一数据类型  2.基本要素:...

3389
来自专栏Python

数据类型总结(一)(数字,字符串)

数据类型总结 数字 字符串 列表 元组 字典 按照存值个数: 1个:数字,字符串 多个:列表,元组,字典...

1777
来自专栏尾尾部落

[剑指offer] 把数组排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字...

702
来自专栏小白的技术客栈

Python之解析式您知多少?

解析式 解析式 今天给大家介绍Python中的解析式。 ? 解析式简单介绍 解析式, 列表解析 # Python2只有列表解析 生成器解析 # Python...

2935
来自专栏赵俊的Java专栏

判断字符串是否没有重复元素

1012
来自专栏GreenLeaves

Javascript之in操作符的用法

in操作符是js里面常用的一个操作符,下面是其几个常用的功能: 1、配合for语句循环遍历/迭代数组中的元素 2、配合for语句循环遍历/迭代集合中的属性 3、...

1795
来自专栏Python小屋

详解Python中的浅复制与深复制

列表对象的copy()方法返回列表的浅复制。所谓浅复制,是指生产一个新的列表,并且把原列表中所有元素的引用都复制到新列表中。如果原列表中只包含整数、实数、复数等...

3146

扫描关注云+社区