00:00
大家好,我是海波老师,我们继续来讲Java中的常用类和对象,那咱们前面讲了很多的一些类和对象了,比方说包括我们的字符串啦,包括宿主啦,包括我们的日期类的,对不对,很多很多了,那么我们接下来呢,给大家封装一些我们的工具类,让大家使用,因为在开发当中啊,我们的字污串啊,咱们的日期啊,它的很多方法用的会非常的多,有的时候我们需要写很多的代码,那这里呢,我们就给它封装一下,让大家用的会简单一些,也让大家看看一种封装的这种思路啊,这里呢,我们首先就拷贝一下来拷贝,把这里呢,我们改成一个我们的八,然后呢改成一个叫YouTube,好了,我们点击OK,然后呢,我们接下来呢,就把咱们的这些就全都去掉,咱不要了,我这里呢,创建一个类叫class,我们叫string u,好了,同学们,这里我们说一下,咱们叫做字符串工具类。首先我们需要明确一些概念,我们的工具类它不应该啊,创建对象才能使用,不应该创建对象才能使用,也就意味着。
01:06
可以啊,可以直接使用类中的属性和方法,类的属性和方法,那么一般都声明为静态的,就是说我们是个工具类,就意味着我们到哪都是为了方便,不用你也行,用了你的话可以更方便,但是呢,我要想用你的话,还得创建个对象,还得怎么怎么着,万一还有权限上的问题,就非常不方便了,所以呢,我们在使用的时候啊,就不能让别人创建咱们的对象,但是你不创建对象,又想使用咱们的属性和方法,那这个时候最好的方式呢,就是把那些属性和方法设定为我们公共的静态的,对吧?诶,所以呢,我们接着写,就是我们的工具类啊。对外提供的属性或方法,它都应该是公共的,对吧,你可以在内部呢,写一些私有的属性和方法,但是你对外提供的应该全都是公共的,让别人没有任何的权限上的限制,对吧?哎,就是这样,还有就是第三个为了使用者开发方便,应该啊,尽量提供丰富的方法。
02:16
和属性啊,你别这个U里面就提供那个一两个是吧,那就不好了啊,提供的会稍微多一些,还是比较不错的,那么对于我们来讲啊,同学们,我们就简单给大家写一写吧,那么我们这里呢,其实主要是为了给大家演示这种封装的这种思想啊,所以我们不会把它补全了,我们这里给大家讲一讲,就是首先第一个咱们叫做什么呢?叫飞空判断啊,什么叫非空判断啊,判断你的字符串是不是飞空啊,这个我们用的会非常的多,对吧?好,还有我们写上它叫生成随机字符串,诶是这样的一个意思啊。好了,还有呢,就是转换字符串啊,比方说我们的字符编码什么的,我们转换字符串是吧?诶转换字符串行了,我们简单说几个,然后呢,给大家演示演示就可以了,我们这里并不是真正的要给大家写这么一个字符串的一个工具类是吧,那样写的话就太多了啊好了,那我们一个一个来啊,首先咱们来看第一个咱们叫非空判断啊,这个非空判断呢,咱们就写上它叫public,然后呢,Static,那么非空判断呢,我就写上它,我们叫布尔类型的,咱们叫is emptytic。
03:22
诶,好了,然后呢,我这里面呢,把我们的这个叫做string,我们拿过来,我们叫str就可以了,老师,不对呀,你这里不说了吗?叫非空判断,就是不是空字符串的判断吗?怎么叫it empty呢?其实呀,我们可以再来一个拷贝,拷贝以后大家看一看,我可以写两个呀,一个叫做it empty,我一个叫it not empty,那这个呢,我只需要把it'empty我拿过来就行了呀,所以我直接写上return加个感叹号,然后呢,把这个str我放进去不就可以了吗?如果你这个判断的是对的话,那这个相反的话,不就没有任何问题了吗?对不对,同学们,所以啊,这个不就比较简单了吗?把两个方法我一块来写。
04:06
那好了,同学们,那现在我就需要考虑到我如何判断一个字符串为空了,叫it empty,我怎么判断呢?同学们,这里我们需要给大家介绍一下,我们如果字符串说一下写上如果字符串为,那我们认为它就是个空,所以它为空对吧,还有一个。如果字符串它为空,字符串它也为空。就什么都没有,还有一个,如果字符串它全都是空格啊,全都是空格,那么也为空,所以啊,咱们这些判断呢,是需要大家注意的,就是如果你为,那你就应该是什么我们的空,如果呢,你的是为空字无串对吧?空字无串也为空,如果全都是空格的话,也是空,诶所以咱们就可以判断一下了,来,首先我们先给它return啊,我们的false对吧,就说明你不为空啊,那什么情况为空呢?咱们一个一个来写,首先我们的if,然后呢,我们写上它叫ST,它等于那这个时候它就是空啊,所以我return true啊好了。
05:16
那接下来呢,他说了,如果字物串为空,那么为空的话,就是我的空字符串啊,点equal时我们的str,他说了也为空,所以我return数好,接下来他说了,如果字符串全都是空格的话,也为空,那老师,那我怎么知道我当前的字符串全都是空格呢?所以啊,咱们换个思路,如果你当前的字符串去掉首尾空格之后,它是个空字符串,我就认为你全都是空,所以啊,我们这么写叫if符,如果我们的它点equals,我们的S tr.T。然后呢,我们这里return true,哎,这么也可以,所以啊,同学们,我们现在的三个条件不就都有了吗?但是大家有没有发现,其实啊,这三个条件我们是可以放一起的,为什么呢?因为啊,这个条件满足是true,这个条件满足它也是true,对不对,这两个条件任何一个满足它都会返回呀,所以说我们没有必要分开来写,我们完全可以写在一块儿,还有呢,这两个条件,这两个条件其实呀,你会发现我只需要在它上面加个tri的话,这个是可以不用管的。
06:25
我们三个条件其实可以融合成一个条件,所以咱把这个做掉。做掉以后我们这么写来写上它if,如果我们的str,它等于那。或者。对吧,我们的这么写,它去掉空格以后是我的空字符串,那么我都认为你没空不就行了吗?哎,所以我这么写其实就可以了,有没有发现我们有的条件是可以融合在一起的呀,这个判断字符串是否非空的这个操作我们就做完了,好了,同学们做完了以后,我们准备验证一下了,我们在上面我们写上它,咱们叫string u点,我们叫is empty,我给他一个,那对吧,然后呢,我们打印一下,好,然后呢,我再来,我给他一个,我们这边写上,我们叫做空置误差,然后呢,再写几个空格,好,再写几个ABC,行了,写完以后我们前几个应该都是空,最后一个应该不为空,对不对,所以我们运行来运行。
07:28
运行以后你会发现我们前几个都是true,那么最后这个是false,没有问题啊,行了,这个方法咱们就写到这里啊,接下来咱们再往下,下面呢是生成随机字符串,所以呢,我写上叫public,然后呢,Static,我们的字符串叫string,然后呢我们叫make string什么意思啊,同学们就是生成字符串。这个生成字符串啊,它其实啊有几种方式,什么意思呢?比方说我是真的随机,还有一种呢,是从指定的字符当中去生成字符串,那这是我们两种不同的方式呀,那么这里我们给大家分别来演示一下,这里呢,我们给它写上两个就可以了啊,放过来,放过来以后同学们会发现我这个叫make string,我什么都不加,我这个make string,我加一个参数,我们叫做string,然后呢,写上一个咱们叫做from。
08:20
啊,什么意思呢?我从这个里面随机查找我的数据来生成植物窗,这个呢,就是真的随便生成了,那这个随便生成呢,也不是真正的随便,因为呢,在咱们Java当中有一个叫UUID的,这个UUID啊,其实呢,它就会随机的生成字符串,所以我们点一下它有一个叫random u u ID,然后呢,点一下我们就可以生成我们的植物串了,所以呢,其实非常简单啊,咱们这里直接来就可以了,这个方法呢,其实完全就可以随机的生成一个字符串,而这个字符串呢,是跟当前的时间戳有关系的,所以基本上是不会有相同的。好了,这个我们生成随机字符串呢,我们先说到这里,那下面的这个呢,我们准备从它里面去随机去查找我们的数据来组合形成字符串,那这里呢,你除了告诉我它以外,你还要告诉我一个我们的字符串的长度,我们叫做int,叫做length,对吧?你随机生成字符串,你这也不能太长了吧。
09:19
所以说你要告诉我它的长度,所以呢,我这里写上if,如果你的这个length,如果你小于一的情况下,那么没有任何的意义,我就直接返回一个空字符串就可以了,但是呢,如果else,但是呢,如果你大于一的话,我就准备从这个里面随机的抽取数据,老师啊,那怎么抽取数据呢?很简单,你把当前的这个字符数点一下,叫to叉R,你把它字符给我拿到,你把每一个字符拿到以后干什么呢?我从里面随机的去取,那么这个取的话,同学们看一下,我现在就写上一个叫new r,这个类呢,是我们Java当中的一个随机类。
10:02
点一下,诶好了,写完以后呢,我们的random呢,点它有一个方法叫next int,这个next in呢,就会随机的生成一个我们的数字,但这个数字呢,它有个范围,你把这个char点我们的这个lengths放过来,你这么写了以后,它就会在这个范围之内来生成我们的整形数据,那么我们生成的数据呢,我们拿过来点一下放过来,放过来以后同学们看这个值就是它的一个随机索引了,我现在就写上一个叉S,然后呢写上一个I,现在我就把咱们的差就给它取到了好了。现在同学们,我这里就是随机取到了一个叉,但是我说过了,咱们这里可不是就取了一个呀,咱们是要按长度来获取呀,所以我再来写一个叫string builder,对吧,然后呢,我们写上它,咱们就叫S,咱们就叫str等于new string builder行了,写完之后呢,我写上一个负循环,然后我们往下这样写上叫int I等于零,然后I小于咱们的长度,然后爱加加,哎,行了,我现在你让我生成五个,我就循环五遍嘛,循环五遍把我随机生成的五个随机数给我放进去,记住我生成的是随机数,但是我其实是按到我这个随机数去这个字符集里面去找到我的字符,把这个字符呢,我给它拼接到我的string builder当中,点一下end,把这个C给我放进去,你放进去以后,当你循环完毕之后,我们直接返回它就行了。
11:40
所以我直接这么写,你这么写了之后,我们的随机字符串就已经生成了,其实你会发现啊,用到的还是我们之前给大家讲的方法,只不过多了一个随机数的一个使用,首先我创建一个随机对象,然后呢,我去生成随机的数,只不过呢,这个数的范围呢,是我们零到这个长度,哎,就是这样。
12:02
这样的话,我们就可以去获取我们的字符,这不就行了吗?行了,同学们,我们来验证一下,咱们试一试啊来。在前面呢,我们写上它,咱们叫使君U条,然后呢,我们点一下啊,咱们点一下这里呢,我们就叫mix君,然后呢,这是我们的随机的一个字符串了,但是呢,我们再来一个点一下,我们叫做它这里呢,我们就说一下,咱们叫ABCDEFG,然后123456行了,我从这个里面随机的抽取数据,抽几个呢?抽六个啊,咱们一般密码不都是有默认的六位密码吗?所以咱们就这么写了是吧,写完了以后咱们去看一看,好了,我们运行一下看结果。运行以后大家看一看,应该没有什么问题吧,这个就是我们UUID是由我们的Java自带的一个随机的一个字符串啊,咱们称之为叫UUID,而这个呢,是我刚才随机生成的,这里面的东西都是给定的这个字符串里面的东西,哎,所以这样的话就可以了。
13:02
行了,同学们,那我们再来给大家写一个,这个呢,我们叫转换字符串,这个转换支符串是什么意思呢?其实是这样的,就是说我们有的时候啊,我们想通过一种编码方式,比方说ISO啊,8859杠幺,我得到了一个支符串,我想把它变成什么呢?我们的utf杠八这样的字符串,诶这种转换操作我希望我用工具类帮我们完成,而不用我自己手写了,对吧,把这些功能我们封装一下,那这个该怎么做呢?我们写上它,咱们叫public,咱们叫static啊,叫string,我们就叫transform吧,好了,然后呢,把它拿过来,这个呢,就是我们要的那个原始的字符串。然后呢,这个呢,就是我们的原始编码,咱们叫做incode from,然后呢,我们写上它,咱们叫incode to,诶就是这样,那我该怎么写这个代码呢?很简单,我既然这个字污串呢,是通过这个我们的编码方式得到的,我就要通过它把它转换成原始的字解码,所以呢,我们的source点我们就get我们的bit,然后呢,把咱们的字符集呢,我们给他拿过来,拿过来以后我们点一下VR回车,回车以后把原始的这个字解码拿到这里会有问题产生,我先抛出去,这个咱们后面会给大家详细的去讲,我们先不管它。
14:21
当你有了这个以后,我们再把我们把当前的字解码变成正确的编码就可以了,所以我直接return,我们叫做new,把这个string我们拿过来,咱们叫bit,然后再把我们的code to放过来,那这样的话就可以了啊,这个我们的操作呢,咱们之前提到过,就是一个字符转换的一个问题啊,我们只是把它封装了一下以后拿过来用就没问题了啊。好了,那这个咱们说完了以后,我们之前还讲过一个日期啊,所以我们这里呢,再把一个日期咱们转换一下就可以了啊,来咱们这里写上一下,我们叫做使定U啊,我就希望能够把我们的字务串转换成我们的日期,对吧,或者把我们的日期再回到我们的字务串,也希望能做到这一点,所以呢,我们就写上static。
15:09
然后呢,写上一个date啊,然后呢,我们叫做我们的pass,我们的date,好,那这个时候呢,你就得把一个字符串给我传过来,咱们叫做date string,再告诉我一个string,我们叫做format,哎,这样的话就可以了。好,那我们这就写上它了,你这里首先第一个叫做我们的simple date form art,咱前不说过了吗?有个格式化吗?叫SDF等于new,叫simple date format,然后呢,我们就叫format就行了,写完了以后,然后呢,我们直接return sdf,点我们的pass,然后把data string1写上,那这样的话直接返回就可以了,返回之后,那么这这里呢,我们也给它抛出去我们的错误,来把这个拿过来。
16:00
好了,那这样的话我们就可以了,那这样的话可以之后我还希望如果你给我一个日期,能够给它格式化成字符串呢,所以我们拷贝,拷贝以后我们拿过来,咱们就叫做format,咱们就叫form date,诶也可以啊,那这时候呢,我们要把string拿过来,那这里呢,我们就写上它,咱们就叫date,把这个呢,我放过来,行了,同学们写完了以后,我这就改一下,咱们就叫做点,我们叫做format a date就行了,就这些操作呀,我们只要传相应的值就可以了啊。好了,同学们,我现在把这个写完了以后,我就试一试吧,这个咱就不试了,咱们主要的是把下面这两个咱们再试一试就可以了啊。我们现在写上咱们叫string u点我们就叫做format date,然后写上一个new date好了,然后呢,写上咱们的YYYY,然后MMDD就可以了啊,同样道理,我再写上一个叫passate,那这个呢,我就写上个字符串,诶好字符串当我们就叫2020啊0614吧,然后把这个呢,我们也这么写就可以了啊,然后我们打印一下。
17:10
嗯,好,那这个呢,我们也给他打印一下,行了,同学们我们再来运行一下看结果。好了,同学们现在就把我们的字符串跟我的日期就做了转换,我们现在就把它们全都封装到了一个工具类当中,到时候我们用的时候啊,只要调用相应的方法传不同的参数就可以了,以后大家在工作当中啊,也可以采用类似的方式进行封装,说的简单点,只要这个代码呢,在很多地方都会用得上,你就给它封装一下,然后呢,考虑到它的通用性啊,以及呢,它的一些我们的条件呢,范围呢,把这个想的全一些就好了啊好了,同学们,这个工具类我们就说到这里。
我来说两句