00:00
好,我们来看下一个知识点,我们看一下好下个知识点呢,是讲这个叫做toream和叫newre的用法的区别,好那么我问大家这样一个问题啊,好,大家呢,扪心自问一下啊,那么咱们以前呢,学过词创对是不是学过好那学过stream的话,那大家想想好,那么什么叫to stream,什么叫new stream,那么它俩之间有什么区别,兄弟们。你们扪心自问一下,你想一下totre和newtream,那么它的区别在哪里?好,什么时候使用tootream,什么使用newtream,大家想下,好为什么讲这个知识点呢?我们看一下好了么?你会发现呢,有时呢,我们在进行写代码时候,大家看一下好了么?有时候写代码时候呢,我会直接呢,会返回啊,这个地方没有我们看一下好,有时候我会直接的返回一个叫做to string,有时候返回叫newre,我们看一下。啊,这个地方的话,就是有很多人呢是不明白啊,包括很多哥们做开发做了很多很多年,好那么他连斯string和new斯的区别,它的原理都不清楚,大家看一下你下好在这个位置大家看一下,好那么我在之前呢,写代码时候我看好在这之前呢,咱们讲的是什么叫对称加密,对吧?好在对称加密时候,我们看我是不是写的叫newtream,好那大家想下好为什么我这个地方写叫newtam,我写上这个叫totre可不可以好,大家想一下,如果不写newtream,我写totream可可不可以好,那这个地方跟大家说一下肯定是不行的,因为你写下to string的话肯定会报错,好那现在啊跟大家呢,去讲一下这个原理啊,跟大家讲一下这个原理,好那么这一点呢,也非常非常重要,因为很多人做开发很多年,其实呢,这个很基础的,就这个很核心的一些啊知识点,就它的本质很多东西呢,也没弄清楚好,那现在我们来讲一下它的区别,我们看一下。
01:40
好,那让为了让各位更好理解这个东西啊,我们去写个这个DEMO啊看一下。啊,那么还是使用啊。好,那么咱在这边的话,我们啊还记得吧,好,我们再去新建一个DEMO吧,叫我们测测试一下string。
02:03
好好,String。好,那我们来讲一下叫to stream啊,To stream。好,那么和这个叫做new string,好那讲一下它的原理和区别,好那么这个东西的话,貌似呢,你一看好像呢是很简单,好但是呢,真让你说一下他们区别,很多人是真说不出来,好现在我们来说一下,因为如果你这个原理不懂的话,那在很多时候呢,你不清楚别人什么时候会用to string,什么时候用new string,你是不清楚的。好现在我就把它的原理和区别呢跟大家说一下,好那咱写个main函数啊,好,那写个main函数之后我们看一下,那么在这个位置。好,我们来看一下。好,那咱就把这个代码咱就拿过来就比较简单,我就不写了,就直接用它拷贝下,好我们来看一下这个代码。
03:02
好,大家看一下,你看好,那么这个呢,其实就是一个叫做,嗯,这个地方这个呢,就是一个叫贝斯六四的,一个叫编码,就是一密纹啊,这个地方是密文,好那么啊,这是表示贝斯64个密文啊,这个地方呢,我们看一下,那么它其实就是个密文啊,这边的话就是个密文,好了,现在我就需要呢,把这个密文呢去做一个叫解码大下,好贝斯六色点抵扣一下大一下,这很明显,这是不是叫解码对吧?好解码使用贝。六四进行解码好,那么呢,编码的话是使用银扣的,解码话是不是使用抵扣的对不对,就解码好,把这个密文呢做个解码好,那么我们解完码之后呢,就赋值给这个叫做啊给这个一好,我们看一下好那么在这个位置我们看一下,那么我在这个位置使用这个叫抵扣的,那么是不是也是进行解码好,那么大家看这两种解码方式好,上面这种解码方式的话,我使用是不是叫new string好,下面这种解码解码方式是不是使用叫to string对不对,我看一下好这个地方的话也是使用解码。
04:08
好,使用贝64进行解码,好,只不过呢,这两种解码方式是不一样的,一个呢使用是new,一个呢叫string,好现在我把它们两个啊,把它两个分别给打印出来,我们看一下,好在这个位置呢,我们就加个标记啊。好,那么这个方程的话,咱们形式叫new string,对吧。好,下面这个方式的话,我们使用叫to string,我就加个标记,好,咱把这叫to string给拿来。好,那我们来预习一下,我们来看效果。好,大家看下,你看好,那么我们上面这的是密文,下面这两个方式是不是都做了解码,好,大家看一下,好那么它解码出来的结果好像不太一样,不对,好那么大家想,那到底哪一种结果是正确的,跟大家说一下,大家一下好那么哦,放大一点,大家看一下,你看好那么这两种方式的话,大家下,那么是不是都是对它进行解码,好,但是如果你用叫to string的解码方式,你看变成这个样子,好,那么如果你使用叫to string的话,那么你的解码方式就会变成这个样子,好大家想,那这两种方式的话,肯定是有一种是正确的,有一种是错的,好这个地方呢,跟大家说一下,我们来说一下,好,来说一下这两种之间的一个区别。
05:27
我们看一下,我们来写一下。啊,这边写个笔记。好1.8,好,那么这个是to string和new string的区别,好那我们来说一下它的区别,刚刚呢,咱是把这两个值给打印出来,对不对,好,咱把这两个值拷贝过来。好,答案一下,你看刚刚咱们是不是啊,拷贝这两个值好,那么在两个值里面的话,那肯定是只有一个是正确的好,那么一个是错误的,好那么在这个地方我们跟大家说一下,哪个是正确的,哪个是错误的,跟大家说一下好那么如果呢,我在使用是进行加密解密使用的,需要注意一下,那么就需要什么到这个叫new string这种方式啊注意好,如果在使用编码进行加密和解密的时候啊,需要使用,记住啊,需要使用new string好这种。
06:28
这种方式好,那么就需要使用这种方式好,如果你使用是下面这叫to string的话,这种方式是错的,记住啊,这是错的好。那么为什么大家看一下好,那么为什么我需要使用到newre呢?我们来去说一下它们的区别。啊,区别啊,首先你得知道结论,结论的话你在这个地方,那么你在做编解码时候需要注意一下,你要使用到,呃,要使用到是newstream这个地方,这是结啊结论,结论你记一下就行了,使用newstream好,然后它的区别要跟大家去说一下,是这样子的。好,那么如果使用是呃,To string,比如说str,好,如果你调是s tr to string to string,好,如果你这是这个方法的话,那么你需要注意一下,那么这个方法调的是什么呢?这个啊,这个方法,那么调用的实际上是object里面的to string to。
07:21
String方法好,那么以前呢,我们在学过Java基础,各位应该清楚,那么在Java里面,万物皆对象,所有对象啊,是不是都是object的一个子类,对不对?好所以呢,那么你再通过str调to string这个方法说呢,其实它调的是叫做object里面,Object里面的叫to string方法好那么这个object里面的,就这object里面的这个to string方法的话,那么它又是什么东西,来看一下,好,一般记住啊,一般在这个object的to to string方法,那么记住返回的实际上是哈希值。记住实际上他是也就是他的一个地址,大家看一下有没有发现,你看一下在这个位置把它放大一点,没有发现你这个地方有没有,你看下这个值有没有发现他很像一个地址,对不对,是不是很像个地址,所以呢,这个地方需要注意一下,如果你调的是叫to string方法的话,那么它调的其实是object里面有个叫to string方法,好,那在object的to string方法的话,那那么它里面反馈的其实是一个地址,其实也就是一个哈希值,这能理解吗?我们看一下,好,那么如果呢,是这个叫new string,跟大家说一下。
08:30
好,那么如果是这个newre方法的话,那么这个地方需要注意下,那么它会根据是根据参数我们看一下,好,刚刚我在这个地方,我们需要传这个参数我们看。啊,当然你看这边的话是不是叫做a new stream,那么它会根据你当前传进来的这个参数,好,那么你传进的这个参数的话,是一个叫字节数组,好我们写一下。好,那么根据传入那的这个参数好那么参数是一个字节数组,是个字节数组好那么它会根据啊它的这个字节数组的话会使用,记住啊,它会使用Java Java虚拟机好那么咱前面的话是不是应该学过啊,咱们前面应该讲过几天课程,就是GUUC对不对啊,咱之也讲过好么?记住啊好那么呢,你在这个位置,那么它会使用虚拟机里面的一呃啊虚会使用这Java虚拟机面的一个叫做默认编码格式,那么他会使用这个叫默认编码格式,好那么他会把这个字节数组进行抵扣的啊,会把这个字节数组好进行抵扣的,好那么这个抵扣的话,其实呢,就是一个叫啊叫叫解码的过程,就会解码过程好,那么他会把这个呃字节数组进行抵扣的,抵扣的完了之后呢,会找到对应的字符,记住啊,它会找到这个对应的字符,好,那么如果呢,你的这个Java的虚拟器的编码格式是啊I。
09:53
So 8859杠幺,如果如果呢,这个虚拟机啊,虚拟机的编码格式好如果是ISO,这个各位应该已经听说过,对吧?ISO好么?叫8859杠幺好,那么如果你使用是这种编码格式的话,那么他就会去找这个叫马阿斯克玛这个码表好,那么就会会去找那么阿斯克码啊里面的编码表啊进行参照,还说呢,如果呢,你的虚拟机的格式的话,使用是ISOISO8859杠幺的话,那么它会从这个叫S码里面去找这个去进行参照,参照这个码表,那么它会去找对应的字符啊,那么你去找对应的字符。
10:39
啊,所以呢,那么一般我们在进行呢,做编解码的时候呢,我们都会使用叫做new string啊,就会使用new string,因为呢,它使用new string的话,那么呢,这个Java虚拟机那么会使用它默认的编码格式,会把这个字节数组的话,做一个叫转码工作啊,然后再去找它对应的字符啊如果你的虚拟机使用是ISO8859杠六的话,那么它就会从阿码里面去找,再去找这个对应的字符,然后呢,就可以找到这个值,好那有的哥们可能会想好,那么什么时候啊,什么时候使用newre好那么什么时候好,什么时候使用叫tore啊有哥们可能会这样去想,好那这个地方呢,就跟大家说一下好,那么呢,如果你要使用到newtream,记住啊,好,如果你要使用到newtream这个方法时候呢,一般呢是在进行转码的时候,好记住啊,一般在进行转码的时候,需要需要使用new string。
11:35
New好,记住啊,在转码时候呢,会进行new好,如果你想去打印一个地址的时候,好,我看一下图是。好,记住好,那么如果呢是需要呢做对象,做对象对象打印的时候啊,打印的时候啊,或者或者想得到地址的时候,好,那么就使用啊to string好那么咱就把呢什么叫做啊tot streamam呢,什么叫newstream的区别,以及它的原理呢就跟大家呢说了一遍,好那么一般呢,在正常情况下,只要是我们想做编解码,我就使用到newtream好那么如果我想是打印对象的时用呢,就使用到twotream,因为呢他们的内部实现原理是不一样的,因为呢这个twot stringam的话,那么调用的是object里面的叫twot stringam方法,那么它打印的是地址,好那么这个newt string的话,那么它会找虚拟集里面对应的编编解码的字符,然后呢进行做转换,好,那么这个呢,就是就是tot stringam和newt string的一个区别,好,所以呢,我们看一下,那在我们之前呢,这个地方我们看一下,在之前我这个地方呢,进行写代码时我们看一下,那在这位置我是是需要做的叫贝斯洛斯的一个叫编解码,所以呢,在编解码这个地方的话,我省就叫newtream。
12:48
而我没有去使用叫to string,这是它的一个原因,现在各位能明白吗?好,这个地方呢,就需要注意一下,如果只要是你做编解码就使用string,如果你是打印地址,打印对象就使用to string就可以了,好,那咱把这个原理呢就跟大家讲明白了。
我来说两句