写给初学者-_01_JAVA的数据类型
初学者需要明白程序是来做什么的,它来自哪里,它去往何处。
所有人都知道不论是计算机还是程序语言都是人想出来的,而这些伟大的事务的产生几乎都是来源于生活,又服务于生活。电话,电脑,汽车等等都是如此。程序也不例外,生活当中我们经常回去处理各种有关数字,文字的事情,这些东西我们可以统称为数据,程序无非是将其综合起来进行处理,免去我们日常工作中让人头大的各种数据整理,计算等。由此看来程序是源于生活,又服务于生活的,所以一定要能够类比过来。
明白程序是用来处理数据的,数据自然是会有分类的,比如小数、整数、文字等等,了解过JAVA的人都知道,JAVA特性中有一个强类型,关于这一点,就是告诉JAVA的使用者,JAVA对数据的管理有严格的类型划分,需要我们使用时候去注意。比如你要在JAVA中使用小数,那么你就告诉编译器,你用的就是小数类型(float、double)。所以明白了强类型,也就意味着我们必须对JAVA的数据类型了如指掌。
JAVA的数据类型分类其实非常简单,一种基本,一种引用。基本的是JAVA固定的一些数据类型,它就只能是这样,但是仅仅只是靠固定的这些类型来表示生活中能遇见的肯定是远远不够的。所以才有了引用,当然当你了解了一定的面向对象的时候你才能够很好的理解它。它无非是多个基本数据类型的结合,多个基本数据类型构成一个引用数据类型,或者说引用数据类型是我们自己定义的一种类型,它具体是什么样子,其实是由我们决定的。当然一个引用类型当中也可能包含着另一个或者多个其他的引用类型(了解完整的面向对象后就能懂)。Java这么做完全是为了我们程序员能够很好的描述现实生活中可能遇见或者遇不见的数据。
可以得到这样的一个分类图
固定的没有办法,你得需要一个合理的框架图来消化它,方便记忆一下。可以得到这样的分类
想要自定义的前提,是你对基本数据类型了如指掌。Java已经做的非常聪明了,日常数据无非数字或者非数字,这里很多人不能理解既然是数字,为什么要分成整数和小数,既然是整数,为什么还要分成这么多种小数?这个问题不难理解,首先计算机不是那么聪明,稍微有点了解的人都知道计算机能识别的是二进制,其次程序的运行时需要内存的支持的。比如整数,人笼统来看就是整数,没有丝毫问题。但是计算机不一样了,首先它就得问这个整数-“你有多大?”。所以确实都是整数,那么有大的整数,有小的整数,大的呢就选择占用内存一点的,比如long,小一点的就选择byte、short。当然系统默认的一般是int,一般情况我们就是直接选择int就可以了。小数也是一个道理。随意每一个类型所咱有的内存大小不一样,能表示的范围也就不一样。
特别需要说明的是非数字类型,一个是boolean,它只有两个值:一个是true,代表着真;一个是false,代表着假。一般用于方法的返回和相应判断中,可以通过条件语句获得其值 比如 3>=5 得到一个false。再则是char,char特别的地方是它咱有的是两个字节,所以能够存入汉字的。
掌握了基本数据类型后随之而来便是数据转换问题
什么是数据转换呢?无非是整数转整数,整数转小数,小数转整数。有趣的是这里你会发现int和char之间也可以转换。在弄清楚数据转换前首先要明白什么叫精度。
精度就是表示数据的精准度。long的精准度是整数类型中精准度最高的,因为它占有的字节数最大,能表示的数范围也就最大,long能表示的,int不一定能表示。一次类推便可以知晓整数类型中精度顺序就是其占有的字节顺序:long>int>short>byte。小数中double自然是比float更高的。也很容易知道,小数的精准度肯定是比整数高的。所以数字类型中精度大小表示为:double>float>long>int>short>byte
。关于这点也可以从每种内型的取值范围去做一定的解析,如果有兴趣可以去研究一下关于float和double的取值和精度问题。这里我就不赘述了。
有了精度概念的支撑,我就可以很好的来描述类型转换问题了。数据转换分为两种一种是自动转换,一种是强制转换。两者都是建立在数据类型的精度上面的。
自动转换
低精度向高精度转换。
double a = 10;// 10默认是int类型,而double的精度是高于int的,所以自动转换换。
强制转换
高精度向低精度转换,很容易理解,高精度的能表示的准确度高,低精度则低,这样高精度转化为低精度时,精度会有所丢失,是一种风险性操作。
int number = (int)10.9;//10.9默认是double类型,int精度比其低,而且int也不能表示出小数,那么出来以后number就是10了,而0.9则是我们丢失的那一部分。
可以看出数据的转换问题本质上是不难得,是根据进度来的,强制转换的语法也是很简单的,只需要在被转换的类型前方用小括号将需要转换后的类型括起来。
int和char类型之间的转换
char a = 4;
char b = (char) 4.0;
int c = 'a';
上述代码,初学者都会有一个疑问。字符和数字间怎么去做转换的。这里Java中所有的字符,都会对应着一个数字码来表示,简单来理解便是一个字符对应着一个数字,比如‘a’所对应的是97,当然每个字符所对应的不一样,有兴趣可以去看看Unicode编码,就会一幕了然了。
引用数据类型
关于引用数据类型,我们需要建立在面向对象的知识点上才能引出,当然一般的Java教程会在面向对象之前拿出String和数组来,这里String和数组其实就是引用数据类型了,特别是String,它代表着字符串,很多人会错误的将String归纳为基本数据类型,String是JDK为我们提供的一种用于表示字符串的引用类型!
一定要对基本数据类型了如指掌!