[Java学习笔记]-Java的基本数据类型

Java是一种强类型语言,每个变量只能声明为一种类型。但是,Java和C/C++一样提供了“自动类型提升”和“强制类型转换”来适应一些不同数据类型的“混合运算”。在Java中,共有8种基本数据类型和4种引用数据类型。

一、8种基本数据类型

1.1 整型

1.1.1 long长整型

long长整形是用于表示比较大的数量使用的类型。比方说,人类的数量,64亿,是一个整数且在计算机中需要8个字节才能存放下。这个在普通的场合下基本很少用到。

1.1.2 int整型

相比long长整型,int类型就常用多了。在以后的编程中,遇到最多的类型就是int类型。Java中的int类型有一个非常好的特性,就是其长度与平台无关,就是4个字节,这给程序的移植带来了极大的方便。

1.1.3 short短整型

short型,相比较int型数据要节约一倍的内存开销。但是,即使short类型能够表达的数据,我们仍然使用int型来表示。这是因为,short类型在“自动类型提升”时往往会导致编译报错:可能会丢失精度。还有一点很重要的原因是,常数,比方说5,在Java中如果直接出现在表达式中,系统会认为它是一个int型的数据。

1.1.4 byte字节型

byte字节型数据,适用范围很小。

1.1.5 4种整型的取值范围


类型


存储空间(字节)


取值范围


long


8


-2^64~+2^64-1(-922亿亿-+922亿亿)


int


4


-2^32~+2^32-1(-21亿-+21亿)


short


2


-32768~+32767


byte


1


-128~+127

PS:注意,所有的Java的数据类型都是有符号型,不存在无符号型数据类型

1.2 浮点型

1.2.1 双精度double

double类型,用于表示小数,其小数点后的有效数字达到15位,能基本满足现实中大部分对数据精度的要求。Java中如果使用小数,如3.14,则默认是double类型,如果你想区分float和double,你应该在声明的小数后面加上后缀F(float)、D(double)。

1.2.2 单精度float

float类型,同样用于表示小数,但是小数后的有效数字仅为7位,类似int和long一样,在实际开发过程中很少用到float,而选择使用double类型,这样虽然牺牲了一点内存开销,但是会避免很多编译错误。

1.2.3 Java中十六进制表示的浮点型数据的格式

在Java中除了使用10进制来表示3.14,同样可以使用16进制表示。

10进制 0.125D

16进制 0x1.0p-3(尾数采用16进制,指数采用10进制,指数的基数是2)

PS:在C/C++中浮点数可以采用也指数来表示,如314.15D==3.1415E2/3.1415e2(尾数使用10进制表示,是该小数的有效数字部分,E/e表示以10为底的指数)。另外,有一点很重要,那就是所有的浮点型数据都比整型数据大,这里的“大”不是指所占用的内存空间大小,而是自动类型提升时的方向问题。比方说,运算式中出现float类型数据和long长整型数据,则系统会自动把long类型转变为float类型再进行运算。

1.3 字符型

1.3.1 Unicode编码字符型char

Java的char类型和C/C++的char类型不同之处在于,俩者对应的编码方式不同。C/C++对应的是ASCII码,Java对应的是Unicode码。ASCII码只占用1个字节,而Unicode码却占用2个字节。Java中的char可以是汉字和其它地区使用ASCII码不能表示的字符,很显然Java中的char类型功能要更强大。

1.4 二值型

1.4.1 布尔型boolean

布尔值很简单,只有二个值:false和true,用于判断逻辑条件。这里,尤其注意在Java中整型值不能和布尔值进行互换。

1.5 取值范围


类型


内存空间


取值范围


默认初始化值


double


8个字节


无需记住


0.0D


float


4个字节


无需记住


0.0F


char


2个字节


\u0000~\uFFFF


\u0000


boolean


1个字节


true/false


false

1.6 自动类型提升示意图

图中,6个实心箭头表示该种转换不会导致数据信息的丢失,而3个虚心的箭头表示可能有精度损失的转换。

计算机在进行算术运算前,都要先把操作数变成同一种数据类型,然后进行计算,对应混合数据类型运算,Java的运算规则是:

  • 如果两个操作数中有一个是double类型,另一个操作数就会自动转换为double类型;
  • 否则,如果其中一个是float类型,另一个操作数就会自动转换为float类型;
  • 否则,如果其中一个是long类型,另一个操作数就会自动转换为long类型;
  • 否则,两个操作数都将会被转换为int类型。

二、4种引用类型

2.1 字符串String

Java没有内建的字符串类型。字符串是通过Java在基础类库中提供一个预定义的String类来实现的。

2.2 数组Array

数组,是同一种数据类型数据的一个集合。

2.3 类Class

类class,是对象的共性的抽象的描述。

2.4 接口Interface

接口Interface是对功能进行拓展的接口。

三、数据类型总结

每种语言都有自己的数据类型,数据类型是对现实的数据进行分析而抽象出的各类数据的共性。在计算机中,每一个数据必须对应一种数据类型,才可以被计算机处理。这些数据类型被称为“内建数据类型”。

时间: 2024-10-05 21:18:45

[Java学习笔记]-Java的基本数据类型的相关文章

Java学习笔记----Java基础11 对象引用

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们之前一直在使用“对象”这个概念,但没有探讨对象在内存中的具体存储方式.这方面的讨论将引出“对象引用”(object reference)这一重要概念. 对象引用 我们沿用之前定义的Human类,并有一个Test类: public class Test { public static void main(String[] args) { Human aPerson = new

[Java学习笔记] Java核心技术 卷1 第四章

第4章 对象与类 4.1 类和对象的基本概念 描述了类和对象的基本概念,以及类之间的关系介绍. 程序中的很多对象来自于标准库,还有一些自定义的. 结构化程序设计:通过设计一系列的过程(算法),选择合适的存储方式来解决问题. 算法+数据结构 4.1.1 类/封装/继承 类是构造对象的模板,由类构造对象的过程称为创建类的实例. 封装:也称为数据隐藏.从形式上看,封装不过是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式.优点4.2.3 实例域:对象中的数据. 方法:操纵数据的过程.

[Java学习笔记]-Java对象和类

Java是完全面向对象的高级语言,其基本的操作基本都是针对相应的对象和类.面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分.对应面向对象的语言,还有一种面向过程的语言,如C语言.面向对象的语言是在面向过程语言的基础上发展而来的.面向对象(OOP,全称为Object-Oriented-Programer,下文简称为OOP)相对于面向过程的语言而言,其优势在于很多问题的解决方法被封装在对象里,有时只需要创建这样的对象就可以解决我们的问题,而不必关心其具体实现细节,这

[java学习笔记]java语言基础概述之内存的划分&堆和栈

1.内存的划分 1.寄存器         cpu处理 2.本地方法区        和所在系统相关 3.方法区 4.栈内存 5.堆内存 2.栈和堆 1.栈:      存储的都是局部变量.而且变量所属的作用域一旦结束,就释放该变量.      栈中的变量生命周期都很短,更新速度会很快. 局部代码块:限定局部变量的生命周期.局部代码块一旦执行结束,里面的变量就会被释放. 2.堆      存储的是数组和对象.凡是new建立的,都会存在堆里.      特点: 每一个实体都有首地址值. 堆内存中的

[java学习笔记]java语言基础概述之函数的定义和使用&函数传值问题

1.函数 1.什么是函数? 定义在类中的具有特定功能的一段独立小程序. 函数也叫做方法 2.函数的格式 修饰符   返回值类型    函数名(参数类型  形式参数1, 参数类型  形式参数2-) {           执行语句(函数体);           return 返回值;       } 返回值类型:函数运行完成后输出的数据类型. 参数类型:是形式参数的数据类型. 形式参数:是一个变量,用于储存调用函数时传递给函数的实际参数. 实际参数:传递给形参的实际数据. return:结束函数

[java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组

1.数组基础 1.什么是数组:           同一类型数据的集合,就是一个容器. 2.数组的好处:           可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式:  (一旦创建,必须明确长度)          格式1:              元素类型   [ ]  数组名  =  new  元素类型  [元素个数即数组的长度]:              示例:int[] array = new int[5];          格式2:           

java学习笔记——Java中HashMap和TreeMap的区别深入理解

本文转载自Java中HashMap和TreeMap的区别深入理解 首先介绍一下什么是Map.在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value.这就是我们平时说的键值对. HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的). HashMap 非线程安全 

[Java学习笔记] Java核心技术 卷1 第六章 接口与内部类

第6章 接口与内部类 6.1 接口 一个类可以实现一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象. 在接口声明中,方法自动public,可以不写修饰符.在实现接口时必须把方法声明为public. 一个接口中可以包含多个方法,还可以定义常量,自动设置public static final 声明在接口中的内部类自动成为static和public类. 接口中不能含有实例域,也不能在接口中实现方法.提供实例域和方法实现的任务应该由实现接口的那个类来完成. 可以将接口看成是没有实例域的抽

[Java学习笔记] Java核心技术 卷1 第五章 继承

第5章 继承 利用继承,可以基于已存在的类构造一个新类.继承已存在的类就是复用(继承)这些类的方法和域.还可以在此基础上添加新的方法和域. 反射. 5.1 超类子类 使用extends构造一个派生类 class Manager extends Employee { 添加方法和域 覆盖:重写一些基类中不适合派生类的方法 } 所有的继承都是公有继承.即所有的公有成员和保护成员都保持原来的状态,基类的私有成员仍然是私有的.不能被派生类的成员访问. (C++中私有继承或保护继承会将 公有成员和保护成员都