编程嘛,一定会和数据产生一定的情感,我的老师跟我们讲,编程,其实就是玩儿数据,那么,数据类型肯定是要熟知的。
Java呢,有八种基本数据类型。
与数字有关的
byte:字节型,在Java中,byte的取值范围在-128~127;
shout:短整型,最大值为32767;
float:单精度浮点数,变量值后必须加F,如float i = 3.14f;
double:双精度浮点数,变量后可以加d,如double i = 3.14d;
这里给大家一个思考,双精度浮点数与单精度浮点数有什么区别呢?
咱们先放放,接着说其他基本数据类型。
与字符有关的
char:存储单个字符,在Java中对char类型变量赋值要用单引号,如char i = 'a';
用于进行判断的
boolean:布尔类型,它只有两个值,即:true、false;
这是基本数据类型,但这远远无法满足我们的开发需要,于是有了复杂数据类型。
Object:我们知道,Java是面向对象的编程语言,这个,就是对象类型,这个以后用到再细讲。
String:字符串,本质呢,就是一个char类型数组,所以它是有长度的。数组,又是一个知识点,我们下次再说。下边我们在说一下这个String类型的常用方法。
String类型,刚刚说了,本质是一个数组封装为的一个类,与其说是String类型变量,不如说是String类型对象,现在,我们来讲一下这个类里的一些常用的方法。
equals()方法,String类型用来比较其值是否相等的方法。我们刚刚讲了,String类型变量应该理解为对象,也就是说它在内存中的情况应该是两个不同变量指向不同的内存地址,那么,当我们用==来判断这两个字符串是否相等时,就没办法判断了,因为==判断的是两个对象在内存中的地址是否是相同的。
那么,这里又引出来了其他问题,难道那些基本数据类型就不是对象吗?
这个我们下边再讲,现在先拉回来,我们接着讲String类型的方法。
刚刚说到equals()方法是来比较两个String类型对象值是否相等的。使用方法是这样。例:我们有两个String类型对象str1和str2,要比较它俩的值是否相等,我们可以这样写——str1.equals(str2)
length()方法,获取字符串长度的方法。例:str1.length();
charAt(int index)方法,获取指定索引位置的字符,例:获取str1第一个位置的字符——str1.charAt(0);(索引是从0开始的)
getBytes()方法,将字符串转化为byte数组。这个方法以后用到再细讲,一定会用到,所以请放心。
方法有很多常用方法也就是那几个,最常用的还是equals(),这个一定要记住。
回到之前的问题,基本数据类型就不是对象了吗?
对,基本数据类型不是对象。它们在JVM的内存中是一块独立的存在,JVM是什么?Java虚拟机,这种东西我就不在这儿细讲了,感兴趣的朋友可以去网上查一下。
既然基本数据类型都已经被独立出来了,也就是说,只要它们的值相等,那么所指向的内存地址就是相同的,所以它们可以直接使用==判断是否值相等。
有人又有顾虑了,我们想要用基本数据类型的变量去做对象的操作咋办?
没关系,sun公司也想到了,jdk有提供相应的包装类,使得基本数据类型的变量也可以拥有对象的方法,可以当做对象来处理。
如int相应的包装类为Integer
long相应的包装类为Long
等等……
数据类型呢,基本就是这些,回到我们之前的问题,双精度浮点数与单精度浮点数有什么区别呢?
单精度浮点数在内存中占4个存储空间,有效位数为8位,而双精度浮点数在内存中占有8个存储空间,有效位数为16位,也就是说,双精度浮点数的精准度更高,由双精度浮点数转化为单精度浮点数会损失精度的。
这个问题大家想对了吗?
明天我们将会讲一下类和对象的概念,来帮助家来理解包装类和对象的问题。
领取专属 10元无门槛券
私享最新 技术干货