JAVA基础-基础类型
学习JAVA的同学都知道,数据类型是基础中的基础,而JAVA本身是强类型语言,他对变量的类型有这魔一般的执著,所以学好JAVA的重心就是要学好数据类型.既然有强类型语言,就会有弱类型语言如PHP、Javascript,顾名思义弱类型语言,就是你想把这个变量当做什么类型来用,就会当什么类型来用,语言解析器会自动转换。
那么既然弱类型语言不需要我们费心的去考虑数据类型,又为什么要学习强类型语言。这里就要说一下强类型语言和弱类型语言的区别?
弱类型语言开发省力,一些数据类型不是很复杂的情况下,可以让开发者更加关注于业务处理,提升逻辑开发的效率。但同样,弱类型也因为它的特性,使开发者在开发过程中对变量类型的检测力度不够大,由此提高数据类型方面问题出现的可能性。
另外,弱类型语言的运行效率,内存利用率显然也比不上强类型语言。因为弱类型语言在运行过程中,存在变量类型的隐式转换,多了一些需要执行的操作,并且,分配内存时,会考虑通用而多分配一些,而强类型则专门为各种类型的变量量身定做地分配内存,内存利用率显然比弱类型会高。
每个语言都有自己的优缺点,一个项目会根据成本、阶段、预期等一些因素去选择开发语言。作为一个JAVA语言学习者,数据类型是是我们不可缺少的一环。
数据类型存在的意义是什么?
所谓变量就是申请内存而保存数据的,而在创建变量的时候,需要在内存中申请空间,而这个时候如何给这个变量分配空间才能达到内存利用率更高,自然要有一个标识,而数据类型就是一个标识,内存管理系统会根据这个标识,为变量分配合适的存储空间,分配的空间只能用来存储该类型的数据。
JAVA的两个数据类型:1、内置数据类型(基础类型) 2、引用数据类型
内置数据类型:简单数据类型是不能简化、内置的数据类型、由编程语言本身定义,它表示了真实的数字和整数。
引用数据类型:Java中,引用类型的变量类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型。变量一旦声明后,类型就不能被改变了。对象、数组都是引用数据类型。所有引用类型的默认值都是null。一个引用变量可以用来引用任何与之兼容的类型。
内置数据类型:
共八种基础类型,即六种数字类型(四个整数型,两个浮点数型),一种字符类型,一种布尔类型。
整数型;
byte: Java中最小的数据类型, 数据类型是8位有符号的数据类型,数据域为-128(-2^7) ——— 127(2^7-1)(256个数字)占1字节默认值是0;byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一;
short: 短整型,数据类型是16位、有符号的以二进制补码表示的整数,占2字节,-32768(-2^15)——32767(2^15 - 1),Short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一;默认值是0
int:整型,用于存储整数,数据类型占32位、有符号的以二进制补码表示的整数,占4字节,-2147483648(-2^31)——2147483647(2^31-1),默认值是0
long: 长整形,数据类型是64位,数据域(-2^63)——(2^63-1)
备注:
A:通常情况下,直接给一下整数值默认就是int类型。
B:如果直接将一个较小的整数值(byte或者short类型的表数范围内)赋给一个byte或short变量,系统会自动把这个整数值当成byte或者short类型来处理。
C:如果使用一个巨大的整数值(超出了int类型的表数范围)时,JAVA不会自动把这个整数值当成long类型来处理。如果希望系统把一个整数值当成long类型来处理,应在这个整数值后增加l或者L,最好使用L,容易区分。
字符型:
char:用于存储单个字符占用16位内存空间,以引号。用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符,0~2^16-1(65535) 。Java使用Unicode字符集表示字符,Unicode是完全国际化的字符集,可以表示全部人类语言中的字符。Unicode需要16位宽,所以Java中的char类型也使用16 bit表示。
测试1:char是属于什么类型的数据?
char是整型,之所以把char归入整型,是因为Java为char提供算术运算支持,例如可以ch2++;之后ch2就变成Y。当char进行加减乘除运算的时候,也被转换成int类型,必须显式转化回来。
浮点类型:
浮点类型表示有小数点部分的数字,java语言中又分为单精度和双精度浮点型。在默认情况下小数都被看作double型。如果要使用float型小数,则需要在后面添加F或者f。
float:32位 -232~232-1 后缀 F 或 f,1 位符号位,8 位指数,23 位有效尾数。
Double:64位 -2~2164-1 最常用,后缀 D 或 d,1 位符号位,11 位指数,52 位有效尾数
float:使用32 bit表示,对应单精度浮点数,运行速度相比double更快,占内存更小,但是当数值非常大或者非常小的时候会变得不精确。精度要求不高的时候可以使用float类型可以将byte、short、int、long、char赋给float类型,java自动完成转换。
double:64位表示,将浮点子面子赋给某个变量时,如果不显示在字面值后面加f或者F,则默认为double类型。java.lang.Math中的函数都采用double类型。
如果double和float都无法达到想要的精度,可以使用BigDecimal类。
布尔类型:
boolean类型只有两个值true和false,默认为false。boolean与是否为0没有任何关系,但是可以根据想要的逻辑进行转换。许多地方都需要用到boolean类型。
引用类型:
了解过基础类型之后,我们就要学习一下引用类型。
顾名思义,引用类型就是对一个对象的引用,对象报过了实例和数组两种。引用类型包含类、接口和数组类型,还有一种特殊的null类型。
虽然JAVA语言里不在使用指针的说法,但是实际上 ,引用类型变量就是一个指针。
空类型就是null值的类型,这种类型没有名称,因为null类型没有名称,所以不可能声明一个null类型的变量或者转换到null类型。空引用是null类型量的惟一的值。空引用可以转换为任何引用类型。在实际开发中,程序员可以忽略null类型,假定null只是引用类型的一个特殊直接量。
注意:空引用只能被转换成引用类型,不能够转换成基本类型,因此不要把一个null值赋给基本数据类型的变量。