大楼的基石 数据类型 变量与常量


java零基础入门-核心语法篇(四) 数据类型,变量与常量

从本章开始,我们要开始最激动人心的学习啦,敲代码,没有准备好的同学快去看以前的教程(老规矩 从HelloWorld开始吧),把环境搭好,老司机要开车咯~滴~滴滴~

说变量之前,我们先来看看刀...有同学肯定会问,整这些没关系的干啥,快上干货!别急别急,请听我慢慢道来。


刀具套装

作为一个吃货,我深深的了解到 做菜 与 做料理 之间的区别,做菜就是做的能吃,好吃就够了,仅仅为了解决饥饿的问题而存在。而料理却有所不同,他是一种带有匠人精神的做菜,想要做出高级的料理,工具必不可少。比如我心心念念,至今没有吃过的河豚刺身,切出来的效果就是晶莹剔透,薄如蝉翼,所以必须用专门的刀具去处理。还有专门切三文鱼的,专门切肉的,各种刀都有自己独特的使用场景。


河豚

除了做菜的刀,我们来看看下面这种工具刀。

瑞士军刀

工具刀功能强大,他可以适应我们的各种需求,如果我需要制作一个手工艺品,可能一把这样的工具刀就搞定了,非常的方便。

其实我们的编程思想,和现实中很多事物都很像,他们在设计上,都有共通的地方。所以从现在开始,同学们要锻炼自己的思维能力,这个对你后面接受编程的思维大有裨益。

数据类型

1.强类型和弱类型

2.占用空间

强类型和弱类型

JAVA就是强类型语言,一个有强迫症的患者,切三文鱼必须用三文鱼的刀,切河豚就必须用河豚刀,换过来用直接报错。这就是强类型语言。弱类型语言就像工具刀,啥都可以干,不管是切东西,还是锯东西样样在行,我不关心变量类型,告诉我你要定义变量就够了。这样解释各位清楚吗?看看我们上面刀的分类,再看看数据类型的分类,是不是有点像?不同的数据用不同的数据类型来处理。(其实在最新的JAVA 10中,我们看到JAVA已经将他的强迫症改掉了,可以用弱类型了,这个有兴趣可以去看看)

数据类型


占用空间

我们小学的时候,老师就教过,1+1=2,后来慢慢的又学习了小数,比如买菜的时候,会有3.2元,4.5元的情况,但是我们从来没有考虑过数字的类型。那么我们写代码为啥要整个数据类型出来呢。这个就跟内存空间有关了。内存是啥?不知道的赶紧去复习(想入行软件 你必须先了解这些硬件)。因为有的数据存起来,需要大一点的空间,有的只需要很小的空间,计算机是个傻子,你不告诉它你要多大的空间,他不会存,甚至乱存。所以我们必须告诉他,这个数据,你给我用X个空间存起来!我在每个类型后面都有标注,他们占多大的空间。

浪费空间

啥?听不懂?看上面这个图,指头大的东西给了这个大个箱子装,不是浪费么?内存也一样,内存空间是有限,必须节约使用,如果所有的类型都一样大,你还没装多少东西,内存就满了。

肯定有同学问了,字节是个啥玩意?内存的空间现在都是按照G来算,那字节和G是个啥关系?看一下换算关系。

1 Byte = 8 Bits            翻译=>          1 字节 = 8 

1 KB = 1024 Bytes                           1 KB = 1024 字节    

1 MB = 1024 KB                               1 兆 = 1024 KB

1 GB = 1024 MB                               1 G = 1024 兆

我们来看看上面的整数类型,整数类型分为了4种,byte,short,int,long

整数也分了4种?为啥?我们看看他们的取值范围就知道了

取值范围

我们看到每种类型可以使用的取值范围是不一样的,byte占8位,所以他的取值范围最小,long占64位,他的取值范围最大,空间越大装的数据就越大,假设我们只有一种类型,我们存数据都要使用空间最大的类型,就会浪费内存空间。下面我们来看代码。

超出范围会报错

我这里设置的值全部是大于范围上限,同学们可以自己照着写一遍,然后把值改成超出取值下限,看看是不是会报错。眼神好的同学可能发现最后一行,long d = 8999999999999999999L;为什么后面有一个L?因为不写L,会把这个数当成int,这样就会报错,超出取值范围,加一个L,告诉他我这个是long类型,我给了64位空间了,就不会报错了。

下面来说说各种类型的使用场景。

byte:一般用于处理IO流用的比较多,这个后面会有详细讲述。

short:其实这个在实际应用中,用的比较少,知道即可。

int:使用最多的类型,因为我们常规生活中,接触的到的数字都不会超过它的范围。比如我们计算一个商品的库存量,一辆车上的人数等,这个使用int完全没有问题。但是有些数据,我们一定要想清楚场景,因为int的上限是20亿,有些数据是完全可以超过他的,如果用int类型就会产生错误,比如说淘宝几年来的订单数量,超过20亿很轻松,再就是一个服务器集群的日志数量,每天上十亿都有可能,存几个月就千亿了,用int计算数量,觉对完蛋。所以我们就需要用long来计算。

long:用于计算超出常规的数据量,比如我们上面说的淘宝订单数量,日志数量等。


我们继续看浮点类型

浮点型就是我们常说的小数,就是带有小数点的数,如果不带小数点,傻子计算机会认为是整数类型。再就是一个精度问题,精度就是可以表示小数点后多少位,double 的精度要比 float 的高,具体我们往下看。

浮点型

啊!!!这个取值范围是什么鬼,这个是科学记数法,看不懂没关系,我们看下面的例子就知道了。


浮点类型

我们如果处理2,3位小数使用float没有问题,但是如果需要精确到5,6位甚至更多,请使用double类型。

在我们的日常工作中,大多情况是会规定保留2位小数的,比如处理与钱有关的业务,所以会有一套专门的方法来处理,这里只需要了解2种浮点类型的特征即可。


字符类型

中文unicode表 截取

每个国家都有不同的语言和不同的符号,都可以使用unicode编码来表示,每个符号都有对应的编码。(了解即可)

char: 占16位 空间,用单引号表示。

字符类型了解即可,实际运用不多。

布尔类型 boolean

布尔类型很简单,只有true 和 false 两种取值,但是他的作用是非常大的,我们后面会经常与他打交道的。

布尔类型

变量和常量

变量

其实我们上面已经使用了很多变量了,因为没有变量,我一句代码都写不出来...变量是非常重要的知识点,我们来看看

变量的名称与赋值

其实我开始的时候犯了一个很大的错误,就是使用a,b,c来作为变量名称,这是绝对不允许的,请使用有意义的名字。再就是驼峰命名,如果你的变量使用多个单词组成,第一个单词第一个字母请小写,后面每一个单词开头请大写,这样方便阅读。我们来比较下,floatTest1 和 floattest1 有没有觉得驼峰命名可以很快的一眼就认出单词,而后一种需要花时间去看,降低编码效率。

再来体验下  filterRegistrationBean  如果不用驼峰   filterregistrationbean  是不是感觉要瞎了,实际工作中比这长的命名比比皆是,养成好的习惯很重要。

变量值不能重复,我在变量最后面写了 1,2,3这样的数字,就是为了防止重复的变量名称。

java中的关键字不可以用来命名变量,比如       int int = 5    int是关键字,只能用于标识变量类型 ,不能用来作为变量名称。 

上面的图就是我们声明变量的方法,首先确定类型,然后起名字,最后通过 = 号来给变量一个值。


常量

变量是可以变的,我可以将任何类型允许的值赋值给变量。常量就是不变的,不可随意更改的。

比如我们的系统要使用年,月,日这样的概念,我们可以将他们定义为常量

常量不可修改

我们用 final 来修饰常量,因为我们的系统可能会很复杂,我们需要定义一些不可变的量,但是万一不小心将常量改了,会导致严重的问题。比如 你发工资发13个月?每周上班8天?能忍么?


本文出现的代码,请照着多敲几遍,然后改一下上下限,精度等,体会一下取值范围的作用,对的改错,错的改对,了解为什么错,为什么对,这样你才能进步。

学习代码一定要动手!一定要动手!一定要动手!不动手就是没学,切记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值