00:00
好,那么接着话呢,我们再来看看啊,另外一个知识点,这个知识点的话呢,其实也不算新的啊,为啥呢?因为咱们刚才写代码啊,我说呀,都已经用过了啊,这个呢,咱们是第一天写hello word的时候呢,就已经在使用了,用双引号引起来的,实际上呢,是一个字符串了。啊,那这呢是一个,哎,咱们讲的number这个int类型的一个变量,那磁符串呢,和这个int类型的变量呢,其实做了一个连接的运算。啊,那这呢,其实咱们都已经用过了,只不过现在呢,我们来啊明确一下这个运算的事儿,这就成为呢叫基本数据类型的变量与此顿之间的一个运算,诶这个讲完之后呢,以后大家再这样去写,你就知道呢知点对应的是哪了啊好,这块我们再去新建一个Java文件,咱们称为它叫关于string的一个测试。那今天这个代码量呢,咱们就哎比昨天呢就要多一些了,哎,咱们复习的时候呢,到时候把这个呢再捋一下啊好,CTRLCCTRLS啊CTRLV啊保存。
01:04
好了,我们看一看这个基本数据类型变量与string之间的一个运算,首先第一个问题,我们先针对这个string啊进行一个说明。首先此类呢,它是一个类啊,既然是类,就属于引用数据类型。啊明数据类型啊,这块大家要明确啊,这个因为我们经常呢会去用string,导致呢,有很多同学呢,总是误认为,或者这个感官上呢,总觉得它好像是基本数据类型,注意它不是啊,它是属于引用数据类型啊,这是我们说的第一个点,然后第二点的话呢,这个死顿类型的这个变量呢,诶我们呢说可以使用一对双引号的方式呢进行定义啊。哎死string类型的变量,哎可以使用哎一对哎双引号啊这样的一个方式呢,进行啊赋值。好,那下边我们就来举例子了,比如这个咱们写这个hello word,这呢相当于是一个常量了。那我也可以呢,不这样写,比如说我就在这个位置呢,写个string,我叫ST21吧。
02:02
哎,它呢,哎,负一个值,咱们说用一对双引号吗。哎,然后呢,我就把这个呢,我就放到这里了。然后呢,在这个位置注意,我这样写能出来hard word吗?那出来的是啥呀?对,就成了HR1了啊,这个你这个字符串的这个值叫HR1了,或者我们这个也称为呢,叫字面量。啊,咱们讲关键字的时候呢,提过这个词啊,好,那你要想出来H1,你得把这个去了啊,这才是个变量的意思。OK,行,保存一下,哎,看一下这个结果啊,然后C。哎,编译通过了,说明语法上没问题。哎,这你看这个呢,就是纯是it re,这个呢,就是我们的hello word。OK啊,这个呢,就是咱们关于这个字符串的一个基本的定义的一个格式。啊,这个大家注意一下啊好,这呢是说的一个事儿,然后的话呢,我们再来看啊,现在呢,我叫HR2,我双引号里边什么也不写行不行。
03:04
哎,这个呢,咱们就要想到上午讲的时候这个差是吧。差呢,这个单引号里边呢,我们说它是表示字符,字符字符就一个啊。这个哥们儿呢,叫字符串。啊,属于数据类型,这个我们再加一个啊俗称。字符串。哎,字符串,字符串就是字符构成的串。就这意思,哎,大家呢,你像这个夏天的时候是吧。啊,一出去的话呢,尤其是在这种老家啊,现在在这个北京啊上海啊,这个城市管理的都比较严格哈,去老家的时候呢,经常这个夏天的深夜是吧,也不一定非得深夜了是吧,傍晚出去的时候呢,就是好多街上不是飘着这样的一个符号是吧。啊,烤羊肉串的啊,啊羊肉串,羊肉串这里边儿呢,一块羊肉啊,这就是串啊,那现在字符串呢。这里边儿可能有好多的字符,每一个位置呢,就是一个叉。
04:02
一个叉呢,就是一个单引号里边只能有一个啊。那字符串呢,里边可能有多个。那么问,能是一个也没有吗?可不可以,咱们一运行就知道了是吧,哎,你看编译可以。哎,说明呢,是没有问题的啊,所以说这里边儿啊,我们可以强调一下啊,说这个string。他呢,声明的字符串。啊,内部啊,可以包含啊,零个啊一个啊或多个字符。哎,就这个意思啊,这个呢是一种场景,那比如再去写说呢STR3啊,比如说这个双引号里边,我就写个小A。哎,就这样。啊,那么有同学可能会想说,诶,那他跟我们这样写的一个单引号里边一个小A有区别吗?有啥区别?哎,这个区别太大了,或者换句话说呢,哎,我就要反问一句了,他俩有相同点吗?
05:05
是吧,你问有没有区别,我就问你说有相同点吗?是吧,应该说呢,没有任何的相同的地方啊,你这是一个基本数据类型。是吧,然后你这个小A的话呢,就是单个的字符了,我这是个字符串,只不过我这个字符串里行里边呢,恰好也只有一个字符。这个字符呢,恰好呢,跟你这个A是一样的,没了。我是一个引用数据类型的,类型都有很大的区别啊。啊,这个注意一下啊,只不过恰好呢,他们都是这个小A这个字符而已,别的都没有相同点啊。好,这个呢,就是我们说的这个字符串啊,先对它呢有一个了解了。那基本情况呢,就是这样子的。OK啊,这个咱们在这呢,可以再去写一个大写的这个一啊,关于string的理解。啊,这是第一个问题,然后第二个问题,我们来看一看这个string,它与基本属于菱形变量间的运算。
06:03
OK啊,这个呢,是我们现在要讲的这个事情了。行,那么首先的话呢,我们明确第一个问题,这里边呢,提到了基本数据类型。啊,有几种。八种对的啊,说这里的基本数据类型呢,呃,包括啊布尔在内的。呃,在内的这个八种。那就是相当于全都有啊,前面呢,我们讲这个诶自动类型提升。哎,讲到这儿啊,自动类型提升啊,讲这个强制类型转化这块呢,都没有带着人家布尔玩。啊,因为呢,他是一个处一个forces也没啥可玩的是吧,就说不到一块去啊,也玩不到一块儿去哈,所以呢,就没有带着他,当然呢,我们现在这个string的话呢,诶是可以包含他在内的。啊,那你这时候就想说这块就没有问题吗?诶确实没问题,那紧接着就说这个运算的事儿了啊,诶我们提到说string。前面说这里的是吧。
07:02
此对呢与啊,基本数据类型变量呢。啊间只能做连接运算。啊只能做啊叫连接运算啊,使用这样的一个。哎,加号呢表示。哎,就它所以说这个符号的话呢,在咱们Java里边实际上呢,有好几个意思啊呃,首先呢,它可以表示正数。只不过呢,一边正一般正数的时候呢,我们就省略这个加了啊呃,然后呢,可以表示加法就纯粹的一加二这个加的意思,哎,另外一个呢,就表示连接啊,就在我们这块呢去用。啊,说这个string啊,只能跟基本数据定性变量之间做这个连接运算,好我们看一下。比如说啊,现在呢,我们来测试这个连接啊。哎,连接这个运算,哎,我现在呢有个int型的,我叫NUMBER1,这个值呢是个十,哎,我有个波类型的,我叫BE1啊,这个呢是一个false啊,是个true。啊,然后现在呢,我有个string。
08:00
哎,我这个ITR1啊,这的来一个叫哈。可以了啊哎,接下来的话呢,我说呢,我这个HR1它呢,诶跟我们这个B1呢,就可以做运算了,这个呢就称为那叫连接运算,这个运算的话呢,你可以直接呢去打印它的结果。那如果要不打印结果,我想把它附一个变量呢。诶,咱们可以先打印一下啊。先让大家先感受一下。我这么着,把它包起来。首先呢,我们看一看跟布尔类型能不能做运算。愿意。啊错了,哎,说明我们前面呢,这个有重名的了,你看是吧,不是因为不能做运算啊,已经定义过了啊填二。二有三有四是吧。保存。编译诶过了啊运行你看这个结果呢,叫hello true。啊,这个时候呢,这个连接运算呢,就纯粹的是把它俩呢拼在一起就可以了。啊,所以这样说的话呢,你这呃是处啊是十啊,其实都无所谓了啊,所以说呢,这个八种呢,都可以做运算,那既然呢,它是一个叫hello处,那如果说呃这个呢,我们付给一个变量的话,你说这个变量是什么类型啊。
09:14
对,也只能是一个字符串类型对吧?诶所以说这块呢,如果我们把它呢,声明给一个变量的话呢,也只能声明给声明给一个string。IR5这样来做一个接收。哎,就这样。保存来,我们测试一下这个类型对不对啊。编译啊,没问题。可以啊,哎,那么把这个number这个值呢,也加上来也是OK的。啊,你比如我们再接着来啊,我写一个STRING6。啊是四加上B1,再加上一个一。哎,这个呢也是可以的,那么这个结果呢。六是吧,这个结果是多少?哈喽。处。
10:00
十。哎,就这个结果。编译运行,诶,你看没有问题啊。好,这个呢,就是我们说的这样的一个结果,哎,那上面呢,也写一下啊说哎使用这个来表示,然后第三个点说呢,运算的,哎,结果。啊是词缀类型。啊,注意这个结果呢,哎,只能是死砖类型的啊。好了,这是我们说的这个事儿,那么我再写一个,大家你看这个对不对啊说呢这呢是string呢,跟他们做运算,这个结果呢是个string类型,呃,这里边儿呢,是我这样写的,我颠倒一下顺序。什么意思啊,我想把这个B1写这儿,然后呢,先写个NUMBER1,再写一个ITR4。还是他们仨啊,但是呢,我把这俩顺序呢,它俩放在前面了。然后呢,也付给一个string行不行。也就是说,这有啥区别呢?你想一想。
11:01
思考一下。呃,如下的这个声明编译能通过吗?不能,为什么?哎,他俩是吧。对啊,诶大家说的是对的,你看我们首先呢,整个来讲,右边是一个运算的结果,把这个结果呢,赋值给我们前面这个死string形的变量,当然右边这块呢,我们预算那就按照咱们说的这个从左往右的顺序来了,上来呢就来了一个布尔类型的变量和。In的类型变量做运算,咱们已经说过了。是不是不能做运算啊。哎,所以说呢,这个时候呢,这个加号啊,你看似是一个连接符,其实不是。其实你是想表达的是加法的意思啦。啊,因为呢,这个要想表示连接只能是string。啊,跟别的类型做运算的时候,这个呢才叫连接运算。啊,只要string不参与这个呢,就不是连接的意思,好,所以这块呢,你要想做加法显然是不行的,所以这块报错了。
12:06
啊,来你看一下。编译啊就挂了。啊,操作这个类型呢,是有误的。是吧,这是波尔,这是个英特尔不行。诶,那为什么这块就行呢。啊。对你看啊,这个的话呢,咱这是string,这是一个部门,只要有string参与了,它是连接。而且运算的结果呢,还是string。指定的话呢,跟它做运算,这又是连接。哎,只要呢,你一开头这个位置有个死顿,你想你往后做运算是不是全都是连接了。对,而且全是连接的话呢,呃,就是全是字符串的话呢,你也只能做连接啊,你不能在后边说我这块我再减一个三。这这这这能行吗?不行啊,因为你从今往后这已经是字符串了,字符串跟别的呃,变量做运算,不能做这种减法,只能做连接啊。
13:01
OK,诶,所以这个事儿的话呢,它编译就不通过啊。哎,不能。哎,注意这个不能通过编译啊,行,嗯,这呢是我们说的这个事儿啊,呃,那么稍微的总结一下,我们string的话呢,和他们只能做这个连接运算结果呢,还是string。哎,不管你这个基本数类型是哪几种,呃是不是不是呢,可能会让大家有一种,呃叫什么错误的一个想法啊,你看我这样的这样的想对不对。这儿呢,是我们前面讲的这七种啊,类型之间呢,有一个啊,容量越大啊,大家呢,就越来越往后去走啊,这叫自动行提升,你说我能不能在这个基础上呢,我往后边这块补一个string。就是这样,合不合适?啊,就说合适,就说不合适,为为说合适的话呢,那应该就没啥可说的,那就是合适啊,那说不合适的同学呢,能给个理由吗?一个是基本数据类型,一个是引用数据类型。
14:02
啊,那那是那那那那。那也没说这块呢啊,这叫基本数据变,那改一改啊,数据类各种数据类型变量前的运算是吧,把它包一下。啊,除了这个原因在其他的呢。想想。呃,这个呢,呃,结论来讲的话呢,其实不要这样去写哈,那言外之意呢,就是说不合适啊,那么大家你想想。给点理由。结果是误差,那没事啊,你比如说我一个float,给你个double运算,结果是double。我一个int呢,跟一个string做运算,结果是string,诶这不也挺顺的吗。容量这个没有容量的概念啊,那这个字符串的话呢,你可以任意的长。啊,容量无限大是吧。嗯。
15:01
诶给了个理由是转不回去是吧。来看一看这个事儿啊,这呢实际上是一个挺有利的一个解释,嗯,那咱们先看这个啊,从左边往右边转的话呢,咱们前面呢,说这些是可以的,呃,先说呢,往这边转,我说不合适,我给个理由,因为呢,我们从左边往右边转的时候呢,咱们讲的时候呢,只是考虑到加法了。实际上呢,这个运算呢,是可以很多的啊。加呀,减呀,乘啊,除啊,取取余啊,还有很多种运算哈,我刚才说的这也只是说算术运算。很多种预算都满足这个特征。而你string呢,跟他们只能做。连接运算。首先呢,从运算的类型上来讲,你太单一了是吧。啊,当然这个呢,你可能会觉得说这个说服力好像也差一点,诶,那好我们再去举。这个是自动性提升,反过来呢,叫强制力行转化,那我们下边看看这个死对呢,如果要往回转行不行。
16:00
我先把这个错误的这个就删掉了啊,咱们直接回过来说。哎,相当于我们下一个问题说如何将啊,比如说string类型的。啊,变量。哎,转换为。基本数据类型。哎,首先啊,我说这个事儿啊,可能本身就不太靠谱。为什么?对,它都不是基本数据类型是吧?呃,我先说一个靠谱的啊,就是有可能诶是是还算是对的啊,比如说啊,我现在定一个int型的,咱们整一个基本数据类型啊,Number我叫NUMBER2吧。这个NUMBER2呢是个十,然后呢,我这个NUMBER2呢,我加上一个它,诶可以吧。哎,那这个结果呢,就是死论是吧。哎,这样子啊,好那么。对应的这个结果啊,这个HR7啊,其实呢,是是长这个样子的吧。
17:01
诶长这样子好,你现在说我想把它转换成是一个基本数列型,比如说就还想转换成int啊这个需求吧,呃,感觉上还行。啊,好歹你原来呢,好像是一个int是吧,好,但是你看我要再写一个,你就觉得这个事儿就不靠谱了。我写个八等于,哎,我写个ABC,好,你把它转换成。基本属于类型int吧。这个事儿是不是就不靠谱了?哎,本身它都不是一个数。啊,你怎么让他转呢,你要说这是个A吧,那我我就忍了,这个呢,转成97是吧,你说ABC呢,你咋整。啊,A加97加98加99吗。不太行是吧,诶所以这样的话呢,你首先呢,这个需求就不合理啊。啊,对于这样的啊,首先它呢是不能转换为。哎,就不能考虑哈。啊,转化为基本数据类型。啊类型的啊,就这个事儿你不要想了啊,不行。
18:01
那这个事儿的话呢,你说这个靠谱不。这个咱们把它俩交换一下吧。哎,往这放一下啊,行,咱们这个改成一,诶这个是七,这个八,这个改成九吧。那这个事靠不靠谱呢?哎,首先的话呢,你就想把这个十呢再拿出来,毕竟呢里边呢,原来有过这样个数值十,哎,那这时候转我们看能不能这样去写啊,这是个九,我呢in形的一个NUMBER3。然后这儿呢,来一个是吧。哎,如果呢,我们要能够往这边去放,那强转的话呢,我们也讲过,就加上加上个强转幅就行,那看看这样。行不行啊。编译诶挂了46行,46行用它不兼容的类型,String呢,无法转换成in类型,这样写不行。哎,这呢,注意是错误的,再换句话说呢,这是一个引用数据类型,是一个类,你这儿呢,是一个基本数类型,咱们都跨了这个大的类型啊,这样写是不行的。
19:02
啊,我们说编译不通过。诶,所以从这个角度来讲的话呢,我们在后边补一个string啊,就不太合适了。OK,行,那大家可能有同学会想说,毕竟你这是一个里边放的就是十,那能不能就把它给拿出来呢。其实也行哈,其实也行啊,这里边儿就涉及到一个实际开发中的一个需求,比如说啊,大家呢,在这个手机端,诶,然后我们比如说去登录一些呃,注册一些网站的一些页面的时候呢,他可能会让你这块去填写姓名,诶你叫诶某某某,这纯粹就是个字符串。诶最后呢,有一个确认按钮啊,你点击确认,它就会把你,呃,这里边登记这个信息呢,通过网络的方式呢,发送给我们的Java后台了,Java后台的话呢,它会取出你填写的这些数据。哎,就一个一个给你取出来,你的姓名取出来了,好,那么第二项呢,你写的是你的年龄,比如说24岁了。
20:00
那么这个24呢,实际上是个数值,但是呢,我们在发送给后台的时候呢,它都会考虑把这些数据啊当成是字符串了。那就意味着我们在后台这块拿到的这个24呢,其实是一个带引号的24。那么这呢,就涉及到跟这的问题一样,那我怎么把这个带引号的24呢,把它剥离出来,变成这个24。因为我们可能列24,比如说做一个运算呀,或者我想存储到数据库里边,数据库呢也有,呃,对应的你得是整形是吧,所以我们就需要把它剥离一下,那怎么剥离这呢,这个需求是合理的,所以说我们这块呢,想把这个HR,嗯,九里边这个十呢,剥离出来,这个数值十,其实这个需求是合理的,只不过这个呢,不能这样写而已。那么啊,该如何实现呢?啊,如何这个呃,实现。啊,这个我们需要呢,使用一个我们后边要讲的一个知识点啊,使用了叫in这样个类去做啊,哎,我就体现了预知页这样个知识点。
21:02
啊,这个呢叫pass int,咱们把这个STR9哎,往这里边一放,诶,我们就可以得到一个int型的数值了。我打印一下。哎,保存来我们看一看。编译你看这时候就过了啊,然后运行,哎,这个时候你看我们把实打实的这个十呢就可取出来了,这真的是一个in的形的一个数啊,你让他做个加一的话呢,它就可以变成11。哎,编译啊运行啊,没有问题啊。啊,这呢是我们真正开发中呢,呃是这样的去用啊,使用这个件这个类啊暂时呢大家啊了解。那就行。那以后呢,我们还会讲这个内容的,OK啊行,那你只需要知道了,现在这样写是不对的啊,就OK了啊行,那么关于这个string的基本使用呢,咱们就先说到这儿啊,然后呢,我们再来看一看这个课后的这个练习题。
我来说两句