00:00
好,那么咱们这一章呢,叫做变量运算符,那前一节课的话呢,我们讲了讲关键字标识符,这是两个补充的内容啊,重要吧,也很重要啊,但是呢,难度不大,OK,下边的话呢,我们来看一个重点,也是一个难点,叫做变量,在我们整个编程的开发过程当中啊,变量是反连复击要用的啊,非常的重要,首先我们提一提说为什么需要变量啊,这儿呢,你看我放了一这个一幅图啊,那这幅图当中,我们凡是能够看到的这样的一些。呃,实体的这样一些东西,实际上呢,在我们编程的这个世界的话呢,都可以用变量呢来进行刻画。可见的话呢,你像一幅画里边肯定有这样的一些实体了,那就意味着我们程序当中一定会有变量啊,变量的话呢,可以看作是咱们程序当中不可或缺的组成部分,也可以看作是呢,叫最基本的存储单元。这个呢,是内存层面的存储数据的这样的一个单元,好,那比如说呢,我们现在看到一个这呢是我截的京东的一个手机的一个页面了啊,就我现在用的这个手机哈,啊,那么这个界面的话呢,你能看到有很多的这个数据的信息,包括呢,还有一些选项。
01:09
那么这些信息我们都可以在代码层面呢,使用相关类型的变量呢,进行刻画,你比如说像前面的这些呢,都可以看成是这个叫字串了。啊,咱就比较文本了啊,就看成是叫字符串信息了,然后呢,像这个呢,显然呢,就是属于这个数值类型的了,那准确的讲呢,它可能还带小数点,我们把这种带小数点呢,称为呢叫浮点类型。诶,这个我们下边也会讲啊,叫浮电类型好,那你这块呢,比如说赠品也好,包括呢,你想你想买几个也好,这个呢都也是数值,但是呢,它属于整形的。整数类型的这样的一个场景,这个重量啊,这也是浮点类型的等等,这里边儿呢,就有很多的变量,那你想想,要想实现这样一个界面,这样的一些功能的展示,我们就一定会去定义变量,可见变量呢是非常重要的。
02:01
好,这个呢,我们就知道为什么需要使用变量了,那下一个问题,那我们应该如何去定义变量呢?哎,变量是什么呢。上面我们讲了一个Y,下面我们来看这个what和how,好,首先呢,关于变量的一个概念,说内存当中的一个存储区域。注意,这时候咱们这个变量是在内存当中来进行存储的。是内存中的一个存储区域,该区域的数据可以在同一类型的范围内不断的进行变化。这里边儿呢,提到一个词,叫同一类型。那也就是说呢,我们这个变量啊,它会有它具体的类型,像咱们刚才提到了,你这叫整形,这个呢叫浮点型,这个呢叫字符串类型。这呢,就是不同的类型。好,那既然提到类型了,我们再接着要说一说,那变量到底它有几个要素啊。这里边儿提到了有三个要素,我们在Java当中定义变量的话呢,每一个变量都需要有具体的数据类型。
03:01
啊,从这个角度出发呢,我们可以把这个变量呢,分成叫强类型的和弱类型的。什么意思啊,就是如果你在定义一个变量的时候呢,必须要指明这个变量是哪一个类型,这种叫强类型,Java呢,就是强类型的语言。那么有一些编程语言呢,在定义变量名的时候呢,不需要指明具体的类型啊,那就是弱类型的语言。像GS呢,我们叫类型的。那就是弱类型的,就弱化它的类型了,这样啊,好,Java呢,非常的严谨,是强类型的,每一个变量都需要指明它的类型,那变量呢,有它具体的名字。啊,那有名还不行,我们关键的是要拿着它去存储具体的数据了,所以呢,它还有具体存储的这个值,这个值呢,一定得符合这个类型。OK,好,那么具体来讲,我们Java中的变量该如何去定义呢?下边就是它的一个具体的格式了,数据类型,空格变量名啊,这个后边呢,是一个负值的符号,注意这个不是等号啊,这叫负值符号,诶在后边呢,就是你对应的这个变量的一个值。
04:04
说白了啊,在内存当中,我们有一个具体的数值,这个数值呢,我们需要用两个东西去刻画,第一个呢,就是你这个值,诶有没有一个名啊,这就是咱们所谓的叫变量名。然后呢,你这个值是一个什么类型的呀,Java呢是强类型的语言,需要指明你是什么类型的,所以呢有三要素。好,那么刚才咱们说的这三个事儿呢,很重要,那咱们把它呢,放在咱对应的这个代码当中,行,那咱们就找到对应的咱们这个代码的这个位置,那我们去新建一个啊Java程序这呢,我们就称它叫variable。哎,他的一个测试。啊,VI呢,就是变量的意思了啊,它的一个测试,好把刚才的这个说明咱们写到这个上边。哎,这呢,我们是测试变量的。啊,基本使用。好把它呢粘过来,这呢是咱们说的这个,呃,第一个啊,关于变量的一个理解啊,下边是变量的三要素,这个呢,我一边说大家一边的去记啊,然后第三个点呢,凡是在Java中定义变量,它的格式呢,就是长这个样子的。
05:11
哎,我把这个呢,就给它去了啊。行,然后呢,这个我们CTRLCCTRLSCTRLV保存在当前的这个代码当中啊。好保存一下行,那既然提到我们说这个变量的定义的格式是长这个样子的,那不妨呢,我们就来定义一下,那这个定义的话呢,那首先呢,就涉及到说这个数据类型了,数据类型咱们等一下专门去讲这个事儿,咱们先呢。举个例子,比如呢,我们在讲这个标识符的时候呢,提到我们定一个年龄,这个年龄呢,就是一个整数,整数呢我们先用一个int来表示,这呢,你看颜色也是个关键字,然后后边呢,哎,我们就起了个名字叫做age了,然后再后边呢,我们就给它赋个值,比如说他十岁。那这呢,就构成了我们说的这样的一个结构。哎,这是一方面哈,诶你呢也可以这样来写,比如说我们刚才提到说这个性别,我定一个char类型的叫做gender。
06:04
哎,我呢,这样啊。我后边呢,直接就写了一个分号了。然后呢,再换一行,我这个真的那赋了一个值叫难。这样行不行?诶对,这样也可以啊,呃,或者换句话说呢,我们可以理解呢,就是先有这样的一种结构,后有这种结构,把这个呢称为呢叫变量的声明。诶啊,声明了这个变量这个值呢,还没写啊,下边这个呢,你可以列成叫变量的负值。哎,变量的赋值,那很多时候呢,我们也把变量第一次赋值的情况呢,称为呢,叫初始化。呃,你要是这个真的呢,复制为一个难,这就相当于它叫初始化了,那你也可以接着呢,是不是它既然是变量嘛,是不是我还可以呢,再去改它的值啊。诶像这个呢,也可以理解成叫变量的赋值了,但是这个呢,我们就不叫初始化了啊,初始化呢,就是你第一次赋值的时候呢,叫初始化行,诶这个呢,你可以,呃,如果说我们定一个变量的话呢,要是细的去说的话呢,其实有两个过程啊,这个过程一。
07:11
哎,叫变量的声明这个过程二。来叫变量的赋值,那你也可以呢,把它呢合并在一起。啊,这个我们可以这样说啊。那这个叫定义变量。哎的这个,哎方式一这个呢,咱们叫。定义变量的方式二啊,相当于是做了一个合并。初始化。嗯,合并啊,那么平时大家怎么去写呢,其实都可以。那你要说直接定义完这个变量就知道是哪个值,你就直接这样写就完了,还省事啊,当然有的时候呢,我们生源这变量以后呢,这个值呢,可能不是马上就负了,它有可能会经过一些判断,比如说你如果这样的话呢,诶我就是哪个值,如果是那样的话呢,就是哪个值,后边我们会讲分值结构嘛,诶然后呢,你不同的情况负的值不一样,诶我们这个赋值呢,可能会稍微的晚一些,那你就用我们诶第一种这个方式呢就可以了。
08:11
好,这个呢,就是咱们定义变量,那定义完这个变量以后呢,下边我们就可以使用这个变量了。哎,使用这边呢,比如说这块有个输出语句,输出语句里边呢,我这块把它删掉,我就直接呢写一下咱们的这个叫age。那就可以打印这个A的这个值来看一下啊。哎,加C。test.java编译。Variable test,哎,一回撤好,这个十呢,你看就出来了。这个呢,就直接打印它的这个值啊,然后呢,我们在这儿呢,也稍微的再说一下啊,后边我们再打印的时候呢,也会出现这样的这个场景啊,比如说这块呢,我们打印这个十,其实你也不知道说这个十,呃,这是什么,是十啊哎,我们还可以这样去处理一下,前面呢,我写个字号,这呢我写个叫age,哎,值是多少是吧?然后在这个位置的话呢,这样写是不对的啊,需要呢写一个符号。
09:01
这个符号呢,叫做连接符。诶说这不是加号吗?哎,这个呢,就不是加号的意思叫连接,就相当于我们把这个字符串呢和这个值呢,就给大家连在一起了,看一下这个效果。应该就是这个样子。啊,这个呢,我们讲到这个变量讲到这个,呃,运算规则的时候呢,会讲这样一个情况先呢,大家先用着。那就可以了,好,这呢,就我们说定义的这个变量情况,这个真的呢,同样道理,你也可以呢,仿照这样一个写法呢,给它打印一下就行,OK,这呢,就我们说的变量呢,这样的一个情况,然后下一个问题啊,我写一个四啊。这里边儿呢,我们提到了说变量呢,在定义的时候呢,有三个要素,整体格式呢长这个样子的,然后接下来我们重点呢,放到这个位置。说变量的话呢,在Java当中是一个强类型的,意味着每一个变量都要明确指明它的类型,那我们下个问题就是Java中的变量都有哪些类型呢?哎,这呢,就我们要说这个事儿啊,那就是张瓦中。的变量。
10:01
按照数据类型来分类。啊,那么这个分类的话呢,有这样的这个情况,这个呢,我一边写,咱们大家呢,一边去记忆啊,大方向上来讲,我们分成两大类啊,第一大类呢,叫做基本数据类型。啊,基本数据类型的变量是吧,诶第二大类呢,叫做引用数据类型的变量。啊,这个你别先去深究啊,什么叫基本,什么叫引用啊,先不用去关注这么多啊,主要呢,我们看具体的一个细节,基本数据类型的变量都有哪些呢?在Java当中一共是有八种。哪八种呢,这个我们再细分一下,分成了叫整型,就是整数类型的啊,哎,小数类型呢,叫浮电型。还有。字符型。哎,布尔型。好,那么具体的这里边来看一看啊,整形呢又分成了四类。哎,这个对应的范围从小到大依次是bad类型。
11:04
Short类型。Int类型。浪类型。这些都是关键字,所以都是小写。铺垫类型。Float。Double发音得准一点啊,Float double啊。这个你可千万不要念成float啊。这就有点low了,就哈行。这个也不是bit啊,这是bit。OK。这个字符类型。哎,它是那个字符呢,叫character的这个缩写是吧,叫差你也别写成全全写啊,你说我这个单词我会写,我写成全称不行,它这个关键词就叫做差啊,然后这个布尔类型呢,是一个音译的。Bullying。啊,Bully啊,这个音译过来呢,就是布尔的意思。所以你要光看这个这个这个汉字这个名的话,感觉莫名其妙的啊,它其实是个音译的,好,这儿呢,一共是有八种,大家需要记住它。面试的话呢,可能都懒得问你啊,说数据类型,基本数据类型有几种啊,没有人会去问,为啥呢。
12:06
因为特别low是吧。啊,你他问完之后的话呢,你请你轻松的答出来了,你可能会鄙视面试官,这都啥问题啊,什么都问,这也太简单了是吧。但是你想想,如果你要是还说不出来的话呢,那就彻底尴尬了,是吧?哎,这个呢,必须脱口而出啊。好,那咱们一会儿呢,专门呢去讲这些细节的情况,刚才呢,咱定义变量的时候呢,这个叉这不用的是这个吗?这个年龄int呢,用的是这个,其他的这些呢,我们都可以去使用,一会儿咱们详细的去看一下这里边儿的细节,好那么引用数据类型呢,啊也有好多种。那Java当中咱们最先接触到的,你要说最先接触到的应该是这个是吧?像这个string呢,像这个system呢,咱们昨天也说了,这都是类,只不过这一类呢,跟咱们这个不太一样,这是咱自己写的类,这个呢是人家提前都定义好的API,所以呢,诶类呢就属于引用数据类型。
13:00
所以首先是这个类啊,这个类呢,用这个英文呢,就是class。好,那我们在第五章的时候呢,会引用叫数组,数组呢诶叫做arra,它呢也属于引用数据类型,哎,后边呢,在讲面向对象的时候呢,我们还会讲到叫接口。对,这个咋念呢。Interface啊interface这叫接口的意思,好,那么这个JDK5.0的时候呢,引入了一些新的结构,比如说这个叫枚举。啊,枚举类是吧,这个枚举的话呢,我们用的叫inu。或者这个有时候这个英语跟美语不太一样啊,也可以念成叫an。啊都可以啊,还有呢,又引入了这个叫注解。注解呢,叫annotation。啊,这呢,都属于这个新特性里边的啊,然后呢,在我们这个GDK呃,是十级以后。啊,具体是十几呢,这个咱们还得翻看一下,因为它后边更新的太快了,那半年一次是吧,诶十几以后呢,它又引入了一个概念叫做记录。
14:01
啊,叫record。OK啊行,那么从传统意义上来讲呢,主要是这仨。然后呢,从JDK5.0的时候呢,是引入了这俩,然后后来呢,JDK10级以后呢,又引入了个它,咱们讲JDK17那肯定是包含了这个了,这些呢都属于引用数据类型。大家呢,目前呢,你有个印象就行。啊,这个呢,现阶段呢,你要非要说我我也想记一记,你要记的话,你把这仨先记一下。这这啥呢,你就后边我们讲的时候呢,再说就行啊,这三个呢,比较传统比较重要一些,然后基本数据型呢,这八个都需要大家记住。OK啊行,这呢是我们说这个类型啊,具体的细节的话呢,咱们一会儿再说啊,这个呢就说完了,然后下边呢,这涉及到叫变量名,变量名的话呢,咱们说了它属于标识符。那么这个标识符的话呢,我们说呢,你要遵循标识符的命名的规则和规范。啊,这个我写一下啊,说定义变量时。啊,这个变量名要遵循。
15:00
啊,标识符啊,命名的啊,规则和规范。行,这个呢,我们就说这两个事儿就行,那这里边儿有个小细节点呢,注意点就是咱们在这个may方法里边,你看我这块定义的是变量了哈,那么我们在这个定义这个变量的呃过程当中,能不能定义这个叫同名的变量。哎,能不能定义同名的变量呢?这里边儿又涉及到另外一个概念啊,这个概念叫做作用域。咱们先说一下这个作用域的问题,什么叫作用域呢?比如说这个真的吧,这个真的这个变量呢,咱们是定义在这一对大括号内的。啊,那么把定义这个变量包裹它的最近的这一层大括号。这叫最近的,这是外层的了啊,把这一对大括号就看作是我们这个真的这个变量的一个作用域。那么你这个变量只在这个作用域内是有效的,出了这个作用域呢,就失效了。言外之意,比如说我就咱们现在也没讲方法啊,咱就泛泛的我这样写一下,这个呢,我就叫媚一了。
16:06
哎,大家应该能明白这意思啊,这这不是一个了啊,好,那么在这一个方法当中。或者你感觉跟他长得太像了,有时候分不出来,我整个MA123吧啊,然后在这样的一个方法当中问你说我们能不能去打印一下这个针呢。哎,这个就不行了是吧。哎,这个我们要放在这儿呢,肯定放在上边这块呢,肯定是没有问题的。来保存一下啊,现在呢,我们去做一个编译。诶,你看编译这时候呢,我们就报错了,说51行,哎在这块不行说呢,找不到这个符号呢叫真。那人家这块呢是OK的,那就相当于呢,你这个针的作用域呢,出了出了以后呢就失效了。同样的道理啊,你要在这个里边呢,我们要定一个变量,然后你想在里边想去用也用不了。好,那这块呢,我们要说的是这个,呃,咱算是这个第六个点啊,说一个说明。
17:07
啊,这个我们写个一啊说变量呢都有。啊,其作用域。这个路由器中域,然后变量呢,只在。诶,作用域内是有效的。出了作用。玉。哎,就失效了。啊,这个呢,大家要注意一下,好,那么有了这样一个概念之后呢,诶咱们再说刚才说的那个事儿啊,诶我们能不能也定一个变量也叫真的呢?那时候你得看这个针对你是定义在哪儿了,如果说这个真的呢,我是定义在。下面的。比如我在这定义的,咱们也写一个叉类型的,一个叫gender。这个呢,我就写个叫女。哎,你说这时候我们要编译的话呢,会过吗。说你这是个真的,这也是个真的冲突吗?不冲突,诶因为呢,你这个针的作用欲在这儿,我的这个作用域呢,在这儿就没有问题。
18:05
就好比是啥呢?诶比如说咱们班吧,咱们班呢,就好比是这个没方法,诶咱们班有个同学呢,比如说诶这个何静是吧?诶咱班有个同学叫何静了,呃,如果咱班还有一个同学也叫何静。实际情况呢,是可以是吧,但是如果在编程当中就比较麻烦啊,你比如说我说何静那两个同学呢,就懵了,到底是调的是谁呀,是吧。呃,在我们程序当中,你同一个作用域内呢,咱们实际上是不能定义同名的变量的,但是如果咱们旁边这个班还有一个程序叫合镜,其实就没事。因为这时候不冲突。他们来自于不同的作用域,诶就可以了,行,所以说这块我们定义完以后呢,我们这块呢,做一个编译。你看就可以通过了,诶但是呢,这个如果CTRLC我放在这儿。保存就不行了。诶,你看这块呢,51行在这儿呢,说不行,已在方法中定义了变量,真的。
19:02
不行。哎,这个注意一下啊。好,这个呢,我们就把它除掉。哎,这呢,我们说呢,在同一个作用域内啊,不能声明,哎,两个同名的变量。啊,这个大家要注意。好,把它CTRLC一下。啊,这呢是咱们这个第二个点啊。行,那么这个事儿呢,大家一定要注意啊,哎,那么你说我这样写行不行。价钱吗?那跟这个的区别是什么?哎,对啊,你看这儿呢,我相当于是不是重新给变量赋值啊。诶,这叫我把它改一下吧,改成这个男吧,要不本来上面好像也是女在改,好像没什么意义似的是吧?诶这个呢,你注意哈,咱们在这个大家可能刚开始学,可能还没这个感觉呢哈,就是你这样去看有个小技巧,如果这个变量呢,你前面有类型。
20:04
那就说明你现在在定义一个新的变量。如果呢,要前面没有类型的,那说明你在使用已有的变量。啊,那行,你看我们上面这个真的,你前面没有这个类型,说明这个变量前面定义过,因为前面去找,这不就找着了吗。哎,那你这块相当于给他又重新做一个赋值是可以的,好,那如果说我要这样写啊,我写个number。我写个十,这样行不行?不行,因为呢,你这前面没有类型说明呢,就是你前面应该定义过,但事实情况呢,前面没有定义过。那么这种编译器呢,它就搞错了。啊,你看这是我们再去编译,所以呢,你这个57行这也不行,诶所以这个呢是哎编译不通过啊,哎,这我们写一下说,哎,由于number前。哎,没有声明类型。啊,那么这个即。哎,当前这个number变量。啊,没有提前定义,诶,所以诶编译不通过。
21:07
OK行,那这呢,我们就把这个事儿呢,就说清楚了啊好,那这个说清楚之后呢,诶,我们关于这个类型这块啊,这么多种类型说了,然后变量名这块呢,注意点包括它的作用域啊,这块提到了,好下边这个叫变量值。这个变量值。诶,你看啊,我说这么个事儿,这呢是三个要素啊,实际上都很重要,那如果说呢,这三个里边你只能挑一个最重要的。大家觉得一个变量这仨里边谁最重要?数据类型啊。还是变量名啊。啊,有同学说类型重要啊,类型挺重要的是吧?啊,因为呢,Java中的所有变量都得指明它的类型是吧?变量名重不重要呢?也重要啊,那一说到这儿,咱可以再写一个点,怎么着呢,咱们定义好变量以后啊,咱们就可以通过变量名的方式呢,去使用这个变量是吧。
22:01
啊,真的也写一下吧。就好比是呢,我们这定义好真的以后,定义好A值以后,诶,你就可以通过这个名去使用这个实使用这个难,哎这样一个变量值了啊。这个在这写啊,定义好变量以后啊。就可以通过变量名的方式。啊,对变量啊进行调用啊和啊或者叫货啊运算。好,这个完事了啊,哎,那你说这个变量值重不重要呢。有人说变量值最不重要了,因为它老变嘛。你说这个男重要吧,他一会儿变成女了是吧?那恰好相反,我说呀,这三个里边啊,其实它最重要。啊,你说这咋理解呢,你看啊,咱们这个课件里边,你上面这不就是咱们这个界面吗?这个界面你现在看到的其实全是值吧。当然值最重要了,只不过呢说呢,就是这个位置这个值啊,为了我方便的去调用它,我起了个名,然后我用这个名去调它。
23:03
最核心的还是值我们啊,按这个也行啊,我们这个名字叫变量名,还有这个类型只是用来修饰它的,它才是核心。哎,这个大家要注意啊,行,这个呢,有这样一个概念,一个意识就行,好,那么关于这个值这块我们要说明什么问题呢?这个你注意啊,这个值你不能乱来,必须呢满足这个类型的情况下呢,你去付这个值,而且呢不能超出它的范围。啊,这个呢,是我们要说的第四个点。好,变量值必须。哎,变量值在负值时啊。哎,必须。来满足变量的数据类型。啊,并且呢,在呃,数据类型。呃,有效的范围内。的变化。哎,毕竟是个变量嘛,你可以变化,当然你不能超出我这个范围。简单的先举一个例子,这个咱们一会儿呢展开来说的,比如说咱们定义这个BAT的变量,我这儿呢,就假假设我就先叫B1了啊,这个BAT的话呢,它存储的范围呢特别小,它最大的这个整数呢是127。
24:13
啊,如果大家呢,提前有预习过的话呢,就知道了啊,那么这时候我定义完以后呢,我们去做一个编译呢,是可以通过的啊,但是如果呢,你要把这个B1呢复制为128了,这个事儿就不靠谱了。这块说你错了。啊,这个呢,因为128已经超出了它的范围,这就不对。啊行,这个小细节呢,我们去关注一下啊,在这我写一下。呃,这个B1呢。超出了BAT的范围。啊,这个叫,诶编译不通过。好就完事了啊行,那么关于变量的基本的使用呢,咱们就说到这儿,那接下来的话呢,我们来具体讲一下这些基本数据型的变量之间的差别是什么,为什么要定义这么多种,OK。
我来说两句