Repository navigation
Expand file tree
/
Copy pathcommit.json
More file actions
1 lines (1 loc) · 414 KB
/
Copy pathcommit.json
File metadata and controls
1 lines (1 loc) · 414 KB
1
{"compress":true,"commitItems":[["f3361a11-a3d1-4e34-9744-7e627b0eda70",1553682306724,"# Lorem ipsum\n\nInterdum et malesuada fames ac ante ipsum primis in faucibus. Morbi sagittis aliquam orci, id elementum leo varius at. Suspendisse in hendrerit orci. Aliquam nec congue augue.\n\n* [x] In volutpat scelerisque congue.\n* [ ] Nam ultricies justo dictum ligula pulvinar iaculis.\n* [ ] Etiam vulputate nulla eget lectus fermentum accumsan.\n* [ ] Sed in sem tincidunt, sollicitudin erat pharetra, bibendum sapien.",[[1553682268590,["zyx@DESKTOP-60KJ218",[[1,233,"x"]],[233,233],[234,234]]],[1553682271014,["zyx@DESKTOP-60KJ218",[[-1,234," "]],[235,235],[234,234]]],[1553682281688,["zyx@DESKTOP-60KJ218",[[-1,2,"Lorem ipsum"],[1,13,"J"]],[2,13],[3,3]]],[1553682285221,["zyx@DESKTOP-60KJ218",[[1,3,"avaSEbu"]],[3,3],[10,10]]],[1553682286007,["zyx@DESKTOP-60KJ218",[[-1,8,"bu"]],[10,10],[8,8]]],[1553682288004,["zyx@DESKTOP-60KJ218",[[1,8,"知识"]],[8,8],[10,10]]],[1553682290893,["zyx@DESKTOP-60KJ218",[[-1,8,"知识"]],[10,10],[8,8]]],[1553682293534,["zyx@DESKTOP-60KJ218",[[1,8,"篇"]],[8,8],[9,9]]],[1553682300692,["zyx@DESKTOP-60KJ218",[[-1,11,"Interdum et malesuada fames ac ante ipsum primis in faucibus. Morbi sagittis aliquam orci, id elementum leo varius at. Suspendisse in hendrerit orci. Aliquam nec congue augue."],[1,186,"我相信"]],[11,11],[14,14]]],[1553682304304,["zyx@DESKTOP-60KJ218",[[1,14,"很多人都是是"]],[14,14],[20,20]]],[1553682305526,["zyx@DESKTOP-60KJ218",[[-1,17,"都是是"]],[20,20],[17,17]]],[1553682312783,["zyx@DESKTOP-60KJ218",[[1,17,"在看到这篇文档时"]],[17,17],[25,25]]],[1553682815713,["zyx@DESKTOP-60KJ218",[[1,64," * [x] Nam ultricies justo dictum ligula pulvinar iaculis. * [ ] Etiam vulputate nulla eget lectus fermentum accumsan. * [ ] Sed in sem tincidunt, sollicitudin erat pharetra, bibendum sapien.* [x] In volutpat scelerisque congue."]],[27,255],[255,255]]],[1553682818682,["zyx@DESKTOP-60KJ218",[[-1,11,"我相信很多人在看到这篇文档时"],[-1,26,"\n* [x] In volutpat scelerisque congue. * [x] Nam ultricies justo dictum ligula pulvinar iaculis. * [ ] Etiam vulputate nulla eget lectus fermentum accumsan. * [ ] Sed in sem tincidunt, sollicitudin erat pharetra, bibendum sapien.* [x] In volutpat scelerisque congue.\n* [x] Nam ultricies justo dictum ligula pulvinar iaculis.\n* [ ] Etiam vulputate nulla eget lectus fermentum accumsan.\n* [ ] Sed in sem tincidunt, sollicitudin erat pharetra, bibendum sapien."]],[11,483],[11,11]]],[1553682823111,["zyx@DESKTOP-60KJ218",[[-1,11,"\n"],[1,12,"这里哟很多"]],[11,11],[16,16]]],[1553682823870,["zyx@DESKTOP-60KJ218",[[-1,13,"哟很多"]],[16,16],[13,13]]],[1553682829602,["zyx@DESKTOP-60KJ218",[[1,13,"有很多很多的基础题,"]],[13,13],[23,23]]],[1553682838403,["zyx@DESKTOP-60KJ218",[[1,23,"\n\n"]],[23,23],[24,24]]],[1553682838967,["zyx@DESKTOP-60KJ218",[[1,25,"\n"]],[24,24],[25,25]]],[1553682840140,["zyx@DESKTOP-60KJ218",[[-1,25,"\n"],[1,26,"@"]],[25,25],[26,26]]],[1553682840801,["zyx@DESKTOP-60KJ218",[[-1,25,"@"],[1,26,"\n"]],[26,26],[25,25]]],[1553682841172,["zyx@DESKTOP-60KJ218",[[-1,25,"\n"],[1,26,"#"]],[25,25],[26,26]]],[1553682841790,["zyx@DESKTOP-60KJ218",[[1,26,"# "]],[26,26],[28,28]]],[1553682843956,["zyx@DESKTOP-60KJ218",[[-1,27," "]],[28,28],[27,27]]],[1553682844253,["zyx@DESKTOP-60KJ218",[[1,27,"#"]],[27,27],[28,28]]],[1553682848003,["zyx@DESKTOP-60KJ218",[[1,29,"习题:"]],[29,29],[32,32]]],[1553682851130,["zyx@DESKTOP-60KJ218",[[-1,29,"习题:"]],[32,32],[29,29]]],[1553682857015,["zyx@DESKTOP-60KJ218",[[1,29,"Q&S"]],[29,29],[32,32]]],[1553682858291,["zyx@DESKTOP-60KJ218",[[1,32,"\n\n"]],[32,32],[33,33]]],[1553682862140,["zyx@DESKTOP-60KJ218",[[-1,22,","]],[23,23],[22,22]]],[1553682872464,["zyx@DESKTOP-60KJ218",[[1,18,"常考"]],[18,18],[20,20]]],[1553682875326,["zyx@DESKTOP-60KJ218",[[-1,34,"\n"],[1,35,"1"]],[34,34],[35,35]]],[1553682875697,["zyx@DESKTOP-60KJ218",[[1,35,"."]],[35,35],[36,36]]],[1553682965651,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553682965651,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553682938732,["zyx@DESKTOP-60KJ218",[[1,36,"JDK 和 JRE 有什么区别?\n\nJDK是功能齐全的Java软件开发包。它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb)。它能够创建和编译程序。JRE 是 Java运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序。只是为了运行一下 Java 程序的话,那么只需要安装 JRE 就可以了。如果你需要进行一些 Java 编程方面的工作,那么你就需要安装JDK了。但是,这不是绝对的。有时,即使您不打算在计算机上进行任何Java开发,仍然需要安装JDK。例如,如果要使用JSP部署Web应用程序,那么从技术上讲,您只是在应用程序服务器中运行Java程序。那你为什么需要JDK呢?因为应用程序服务器会将 JSP 转换为 Java servlet,并且需要使用 JDK 来编译 servlet。"]],[36,36],[458,458]]],[1553682942844,["zyx@DESKTOP-60KJ218",[[-1,53,"\n"]],[54,54],[53,53]]],[1553682943935,["zyx@DESKTOP-60KJ218",[[1,53,"\n"]],[53,53],[54,54]]],[1553682944623,["zyx@DESKTOP-60KJ218",[[-1,53,"\n"]],[54,54],[53,53]]],[1553682964431,["zyx@DESKTOP-60KJ218",[[1,72,"JRE 是 Java运行时环境。"]],[72,72],[88,88]]],[1553683025683,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683025683,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553682967216,["zyx@DESKTOP-60KJ218",[[-1,88,"它"]],[89,89],[88,88]]],[1553682968092,["zyx@DESKTOP-60KJ218",[[1,88,"JDK"]],[88,88],[91,91]]],[1553682987796,["zyx@DESKTOP-60KJ218",[[-1,132,"。"]],[133,133],[132,132]]],[1553682988520,["zyx@DESKTOP-60KJ218",[[1,132,","]],[132,132],[133,133]]],[1553683001608,["zyx@DESKTOP-60KJ218",[[1,88,"\n"]],[88,88],[89,89]]],[1553683005457,["zyx@DESKTOP-60KJ218",[[1,145,"\n"]],[145,145],[146,146]]],[1553683085654,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683085654,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683055451,["zyx@DESKTOP-60KJ218",[[-1,242,"只是为了运行一下 Java 程序的话,那么只需要安装 JRE 就可以了。如果你需要进行一些 Java 编程方面的工作,那么你就需要安装JDK了。但是,这不是绝对的。有时,即使您不打算在计算机上进行任何Java开发,仍然需要安装JDK。例如,如果要使用JSP部署Web应用程序,那么从技术上讲,您只是在应用程序服务器中运行Java程序。那你为什么需要JDK呢?因为应用程序服务器会将 JSP 转换为 Java servlet,并且需要使用 JDK 来编译 servlet。"]],[242,477],[242,242]]],[1553683145653,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683145653,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683143252,["zyx@DESKTOP-60KJ218",[[-1,158,"时"]],[159,159],[158,158]]],[1553683145567,["zyx@DESKTOP-60KJ218",[[1,156,"程序"]],[156,156],[158,158]]],[1553683205677,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683205677,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683148744,["zyx@DESKTOP-60KJ218",[[-1,164,"是"]],[165,165],[164,164]]],[1553683175888,["zyx@DESKTOP-60KJ218",[[1,164,"是"]],[164,164],[165,165]]],[1553683182442,["zyx@DESKTOP-60KJ218",[[-1,162,"。它"]],[164,164],[162,162]]],[1553683203649,["zyx@DESKTOP-60KJ218",[[-1,160,"环境是运行已编译 Java 程序"]],[176,176],[160,160]]],[1553683266466,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683266466,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683210322,["zyx@DESKTOP-60KJ218",[[-1,163,"所有"]],[165,165],[163,163]]],[1553683222491,["zyx@DESKTOP-60KJ218",[[-1,169,"包括"]],[171,171],[169,169]]],[1553683226887,["zyx@DESKTOP-60KJ218",[[1,169,"它包含了"]],[169,169],[173,173]]],[1553683235728,["zyx@DESKTOP-60KJ218",[[-1,224,"。"]],[225,225],[224,224]]],[1553683241252,["zyx@DESKTOP-60KJ218",[[1,224,",只运行程序。"]],[224,224],[231,231]]],[1553683241598,["zyx@DESKTOP-60KJ218",[[1,231,"\n\n"]],[231,231],[232,232]]],[1553683243662,["zyx@DESKTOP-60KJ218",[[-1,232,"\n"],[1,233,"2"]],[232,232],[233,233]]],[1553683243945,["zyx@DESKTOP-60KJ218",[[1,233,"."]],[233,233],[234,234]]],[1553683326462,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683326462,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683326218,["zyx@DESKTOP-60KJ218",[[1,234,"基本"]],[234,234],[236,236]]],[1553683386493,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683386493,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683328303,["zyx@DESKTOP-60KJ218",[[1,236,"类型"]],[236,236],[238,238]]],[1553683329264,["zyx@DESKTOP-60KJ218",[[-1,234,"基本类型"]],[238,238],[234,234]]],[1553683338948,["zyx@DESKTOP-60KJ218",[[1,234,"Java的基本类型有哪些?他与"]],[234,234],[249,249]]],[1553683339524,["zyx@DESKTOP-60KJ218",[[-1,247,"他与"]],[249,249],[247,247]]],[1553683348261,["zyx@DESKTOP-60KJ218",[[1,247,"它们渔歌子"]],[247,247],[252,252]]],[1553683349130,["zyx@DESKTOP-60KJ218",[[-1,249,"渔歌子"]],[252,252],[249,249]]],[1553683353215,["zyx@DESKTOP-60KJ218",[[1,249,"各自相对用的"]],[249,249],[255,255]]],[1553683353986,["zyx@DESKTOP-60KJ218",[[-1,251,"相对用的"]],[255,255],[251,251]]],[1553683356783,["zyx@DESKTOP-60KJ218",[[1,251,"相对用的"]],[251,251],[255,255]]],[1553683357470,["zyx@DESKTOP-60KJ218",[[-1,251,"相对用的"]],[255,255],[251,251]]],[1553683384400,["zyx@DESKTOP-60KJ218",[[1,251,"相对应的封装类又是什么?请以Integer和int说明它们"]],[251,251],[280,280]]],[1553683446480,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683446480,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683403236,["zyx@DESKTOP-60KJ218",[[1,280,"之间的区别。"]],[280,280],[286,286]]],[1553683407607,["zyx@DESKTOP-60KJ218",[[-1,264,"以Integer"]],[272,272],[264,264]]],[1553683410553,["zyx@DESKTOP-60KJ218",[[1,264,"说明"]],[264,264],[266,266]]],[1553683413120,["zyx@DESKTOP-60KJ218",[[-1,266,"和"]],[267,267],[266,266]]],[1553683415556,["zyx@DESKTOP-60KJ218",[[-1,269,"说明"]],[271,271],[269,269]]],[1553683416895,["zyx@DESKTOP-60KJ218",[[1,269,"和I"]],[269,269],[271,271]]],[1553683419139,["zyx@DESKTOP-60KJ218",[[-1,270,"I"]],[271,271],[270,270]]],[1553683421751,["zyx@DESKTOP-60KJ218",[[1,271,"的它"]],[270,270],[272,272]]],[1553683425568,["zyx@DESKTOP-60KJ218",[[1,272,"封装类"]],[272,272],[275,275]]],[1553683427530,["zyx@DESKTOP-60KJ218",[[-1,275,"它们"]],[277,277],[275,275]]],[1553683434036,["zyx@DESKTOP-60KJ218",[[1,281,"\n\n"]],[281,281],[282,282]]],[1553683435304,["zyx@DESKTOP-60KJ218",[[-1,282,"\n"],[1,283,"J"]],[282,282],[283,283]]],[1553683439536,["zyx@DESKTOP-60KJ218",[[1,283,"ava的基本类型"]],[283,283],[291,291]]],[1553683441159,["zyx@DESKTOP-60KJ218",[[1,232,"\n"]],[231,231],[232,232]]],[1553683506481,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683506481,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683449504,["zyx@DESKTOP-60KJ218",[[1,292,"有8中"]],[292,292],[295,295]]],[1553683450928,["zyx@DESKTOP-60KJ218",[[-1,294,"中"]],[295,295],[294,294]]],[1553683480572,["zyx@DESKTOP-60KJ218",[[1,294,"种:short、byte、int、long、float、double、char"]],[294,294],[333,333]]],[1553683566484,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683566484,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683518985,["zyx@DESKTOP-60KJ218",[[1,296,"\n"]],[296,296],[297,297]]],[1553683522828,["zyx@DESKTOP-60KJ218",[[1,297,"整数型:"]],[297,297],[301,301]]],[1553683523057,["zyx@DESKTOP-60KJ218",[[1,301,"\n"]],[301,301],[302,302]]],[1553683528571,["zyx@DESKTOP-60KJ218",[[-1,321,"、"]],[322,322],[321,321]]],[1553683528907,["zyx@DESKTOP-60KJ218",[[1,321,"\n"]],[321,321],[322,322]]],[1553683532876,["zyx@DESKTOP-60KJ218",[[1,322,"浮点型:"]],[322,322],[326,326]]],[1553683536051,["zyx@DESKTOP-60KJ218",[[-1,301,"\n"]],[302,302],[301,301]]],[1553683539589,["zyx@DESKTOP-60KJ218",[[-1,337,"、"]],[338,338],[337,337]]],[1553683540040,["zyx@DESKTOP-60KJ218",[[1,337,"\n"]],[337,337],[338,338]]],[1553683543957,["zyx@DESKTOP-60KJ218",[[1,338,"字符型"]],[338,338],[341,341]]],[1553683544321,["zyx@DESKTOP-60KJ218",[[1,324,";"]],[324,324],[325,325]]],[1553683545035,["zyx@DESKTOP-60KJ218",[[-1,324,";"]],[325,325],[324,324]]],[1553683546753,["zyx@DESKTOP-60KJ218",[[1,341,":"]],[341,341],[342,342]]],[1553683557623,["zyx@DESKTOP-60KJ218",[[1,346,"\n\n"]],[346,346],[347,347]]],[1553683560336,["zyx@DESKTOP-60KJ218",[[-1,347,"\n"],[1,348,"布尔类型"]],[347,347],[351,351]]],[1553683563881,["zyx@DESKTOP-60KJ218",[[1,351,":boolean"]],[351,351],[359,359]]],[1553683626493,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683626493,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683583585,["zyx@DESKTOP-60KJ218",[[1,301,"byte、"]],[301,301],[306,306]]],[1553683586567,["zyx@DESKTOP-60KJ218",[[-1,312,"byte、"]],[317,317],[312,312]]],[1553683597481,["zyx@DESKTOP-60KJ218",[[1,320,"(对应位数:8,"]],[320,320],[328,328]]],[1553683597686,["zyx@DESKTOP-60KJ218",[[-1,327,","]],[328,328],[327,327]]],[1553683598069,["zyx@DESKTOP-60KJ218",[[1,327,",16,"]],[327,327],[331,331]]],[1553683598609,["zyx@DESKTOP-60KJ218",[[-1,330,","]],[331,331],[330,330]]],[1553683599016,["zyx@DESKTOP-60KJ218",[[1,330,",32,"]],[330,330],[334,334]]],[1553683599425,["zyx@DESKTOP-60KJ218",[[-1,333,","]],[334,334],[333,333]]],[1553683600673,["zyx@DESKTOP-60KJ218",[[1,333,",64)"]],[333,333],[337,337]]],[1553683686492,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683686492,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683630644,["zyx@DESKTOP-60KJ218",[[1,354,"(对应位数:8,16,32,64)"]],[354,354],[371,371]]],[1553683635190,["zyx@DESKTOP-60KJ218",[[-1,360,"8,"]],[362,362],[360,360]]],[1553683636995,["zyx@DESKTOP-60KJ218",[[-1,360,"16,"]],[363,363],[360,360]]],[1553683647723,["zyx@DESKTOP-60KJ218",[[1,375,"(对应位数:32,64)"]],[375,375],[387,387]]],[1553683650122,["zyx@DESKTOP-60KJ218",[[1,400,"(对应位数:32,64)"]],[400,400],[412,412]]],[1553683652553,["zyx@DESKTOP-60KJ218",[[-1,381,"32,64"]],[386,386],[381,381]]],[1553683654082,["zyx@DESKTOP-60KJ218",[[1,381,"16"]],[381,381],[383,383]]],[1553683661004,["zyx@DESKTOP-60KJ218",[[-1,397,"(对应位数:32,64)"]],[397,409],[397,397]]],[1553683746496,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683746496,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683695594,["zyx@DESKTOP-60KJ218",[[1,397,"\n\n"]],[397,397],[398,398]]],[1553683696653,["zyx@DESKTOP-60KJ218",[[1,399,"\n"]],[398,398],[399,399]]],[1553683698283,["zyx@DESKTOP-60KJ218",[[-1,399,"\n"],[1,400,"对应"]],[399,399],[401,401]]],[1553683702227,["zyx@DESKTOP-60KJ218",[[1,401,"的封装类:"]],[401,401],[406,406]]],[1553683702484,["zyx@DESKTOP-60KJ218",[[1,406,"\n\n"]],[406,406],[407,407]]],[1553683731862,["zyx@DESKTOP-60KJ218",[[-1,407,"\n"],[1,408,"整数型"]],[407,407],[410,410]]],[1553683732733,["zyx@DESKTOP-60KJ218",[[1,410,":"]],[410,410],[411,411]]],[1553683735469,["zyx@DESKTOP-60KJ218",[[-1,410,":"]],[411,411],[410,410]]],[1553683743437,["zyx@DESKTOP-60KJ218",[[1,410,"包装类:"]],[410,410],[414,414]]],[1553683806492,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683806492,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683770478,["zyx@DESKTOP-60KJ218",[[1,414,"Byte,Short,Integer,Long"]],[414,414],[437,437]]],[1553683771217,["zyx@DESKTOP-60KJ218",[[1,437,"\n\n"]],[437,437],[438,438]]],[1553683775968,["zyx@DESKTOP-60KJ218",[[-1,438,"\n"],[1,439,"浮点型"]],[438,438],[441,441]]],[1553683792187,["zyx@DESKTOP-60KJ218",[[1,441,"包装类:Float,Double"]],[441,441],[457,457]]],[1553683794229,["zyx@DESKTOP-60KJ218",[[1,457,"\n\n"]],[457,457],[458,458]]],[1553683798704,["zyx@DESKTOP-60KJ218",[[-1,458,"\n"],[1,459,"字符型"]],[458,458],[461,461]]],[1553683804587,["zyx@DESKTOP-60KJ218",[[1,461,"包装类:"]],[461,461],[465,465]]],[1553683866500,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683866500,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683812253,["zyx@DESKTOP-60KJ218",[[1,465,"Character"]],[465,465],[474,474]]],[1553683815389,["zyx@DESKTOP-60KJ218",[[1,474,"\n\n"]],[474,474],[475,475]]],[1553683820946,["zyx@DESKTOP-60KJ218",[[-1,475,"\n"],[1,476,"布尔类型"]],[475,475],[479,479]]],[1553683828897,["zyx@DESKTOP-60KJ218",[[1,479,"包装类:Boolean"]],[479,479],[490,490]]],[1553683833817,["zyx@DESKTOP-60KJ218",[[1,490,"\n\n"]],[490,490],[491,491]]],[1553683834087,["zyx@DESKTOP-60KJ218",[[1,492,"\n"]],[491,491],[492,492]]],[1553683835232,["zyx@DESKTOP-60KJ218",[[-1,492,"\n"],[1,493,"I"]],[492,492],[493,493]]],[1553683843015,["zyx@DESKTOP-60KJ218",[[1,493,"nteger与int的区别::"]],[493,493],[508,508]]],[1553683843353,["zyx@DESKTOP-60KJ218",[[1,508,"\n\n"]],[508,508],[509,509]]],[1553683844021,["zyx@DESKTOP-60KJ218",[[-1,509,"\n"]],[509,509],[508,508]]],[1553683844188,["zyx@DESKTOP-60KJ218",[[-1,507,":"]],[508,508],[507,507]]],[1553683845099,["zyx@DESKTOP-60KJ218",[[1,508,"\n"]],[507,507],[508,508]]],[1553683926525,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683926525,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683874328,["zyx@DESKTOP-60KJ218",[[1,508,"int 的默认值为0,而 Integer 的默认值为 null,即 Integer 可以区分出 未赋值和值为0的区别,int 则无法表达出未赋值的情况,例如,要想表达出没有参加考试和 考试成绩为0的区别,则只能使用 Integer。"]],[508,508],[624,624]]],[1553683880042,["zyx@DESKTOP-60KJ218",[[-1,599," "]],[600,600],[599,599]]],[1553683884938,["zyx@DESKTOP-60KJ218",[[-1,555," "]],[556,556],[555,555]]],[1553683892391,["zyx@DESKTOP-60KJ218",[[-1,582,","]],[583,583],[582,582]]],[1553683892859,["zyx@DESKTOP-60KJ218",[[1,582,","]],[582,582],[583,583]]],[1553683893929,["zyx@DESKTOP-60KJ218",[[-1,582,","]],[583,583],[582,582]]],[1553683894415,["zyx@DESKTOP-60KJ218",[[1,582,"。"]],[582,582],[583,583]]],[1553683899660,["zyx@DESKTOP-60KJ218",[[1,623,"\n"]],[622,622],[623,623]]],[1553683900495,["zyx@DESKTOP-60KJ218",[[1,624,"\n"]],[623,623],[624,624]]],[1553683902109,["zyx@DESKTOP-60KJ218",[[-1,624,"\n"],[1,625,"3"]],[624,624],[625,625]]],[1553683902327,["zyx@DESKTOP-60KJ218",[[1,625,"."]],[625,625],[626,626]]],[1553683907434,["zyx@DESKTOP-60KJ218",[[-1,625,"."]],[626,626],[625,625]]],[1553683907708,["zyx@DESKTOP-60KJ218",[[-1,624,"3"],[1,625,"\n"]],[625,625],[624,624]]],[1553683908659,["zyx@DESKTOP-60KJ218",[[-1,624,"\n"]],[624,624],[623,623]]],[1553683909822,["zyx@DESKTOP-60KJ218",[[-1,623,"\n"],[1,624,"3"]],[623,623],[624,624]]],[1553683910020,["zyx@DESKTOP-60KJ218",[[1,624,"."]],[624,624],[625,625]]],[1553683912094,["zyx@DESKTOP-60KJ218",[[1,623,"\n"]],[622,622],[623,623]]],[1553683914020,["zyx@DESKTOP-60KJ218",[[-1,623,"\n"]],[624,624],[623,623]]],[1553683915558,["zyx@DESKTOP-60KJ218",[[1,623,"\n"]],[623,623],[624,624]]],[1553683916121,["zyx@DESKTOP-60KJ218",[[-1,623,"\n"]],[624,624],[623,623]]],[1553683919917,["zyx@DESKTOP-60KJ218",[[-1,232,"\n"]],[232,232],[231,231]]],[1553683924624,["zyx@DESKTOP-60KJ218",[[1,232,"q"]],[232,232],[233,233]]],[1553683986503,[null,[[-1,29,"习"],[1,30," "]],[29,29],[31,31]]],[1553683986503,[null,[[1,29,"习"],[-1,29," "]],[31,31],[29,29]]],[1553683926568,["zyx@DESKTOP-60KJ218",[[-1,232,"q"]],[233,233],[232,232]]],[1553683927275,["zyx@DESKTOP-60KJ218",[[1,232,"Q"]],[232,232],[233,233]]],[1553683929421,["zyx@DESKTOP-60KJ218",[[1,34,"Q"]],[34,34],[35,35]]],[1553683933620,["zyx@DESKTOP-60KJ218",[[1,624,"Q"]],[624,624],[625,625]]],[1553683944307,["zyx@DESKTOP-60KJ218",[[1,624,"\n"]],[624,624],[625,625]]],[1553683956493,["zyx@DESKTOP-60KJ218",[[-1,11,"这里有很多很多常考的基础题"]],[11,24],[11,11]]],[1553683957182,["zyx@DESKTOP-60KJ218",[[-1,12,"\n"]],[11,11],[10,10]]],[1553683959744,["zyx@DESKTOP-60KJ218",[[-1,11,"\n"]],[10,10],[9,9]]],[1553683967372,["zyx@DESKTOP-60KJ218",[[1,19,"**"],[1,38,"**"]],[19,38],[19,42]]],[1553683973826,["zyx@DESKTOP-60KJ218",[[1,222,"**"],[1,272,"**"]],[222,272],[222,276]]],[1553683986412,["zyx@DESKTOP-60KJ218",[[1,486,"++"],[1,501,"++"]],[486,501],[486,505]]],[1553684046522,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553684046522,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553683990214,["zyx@DESKTOP-60KJ218",[[1,393,"++"],[1,400,"++"]],[393,400],[393,404]]],[1553683993112,["zyx@DESKTOP-60KJ218",[[1,277,"++"],[1,290,"++"]],[277,290],[277,294]]],[1553684000540,["zyx@DESKTOP-60KJ218",[[1,494,"_"],[1,513,"_"]],[494,513],[494,515]]],[1553684001816,["zyx@DESKTOP-60KJ218",[[1,494,"++"],[1,515,"++"]],[494,515],[494,519]]],[1553684003653,["zyx@DESKTOP-60KJ218",[[1,496,"++"],[1,517,"++"]],[494,519],[494,523]]],[1553684006160,["zyx@DESKTOP-60KJ218",[[-1,496,"++"],[-1,519,"++"]],[494,523],[494,519]]],[1553684006630,["zyx@DESKTOP-60KJ218",[[-1,494,"++"],[-1,517,"++"]],[494,519],[494,515]]],[1553684007015,["zyx@DESKTOP-60KJ218",[[-1,494,"_"],[-1,514,"_"]],[494,515],[494,513]]],[1553684007398,["zyx@DESKTOP-60KJ218",[[-1,277,"++"],[-1,292,"++"]],[277,294],[277,290]]],[1553684007940,["zyx@DESKTOP-60KJ218",[[-1,393,"++"],[-1,402,"++"]],[393,404],[393,400]]],[1553684008436,["zyx@DESKTOP-60KJ218",[[-1,486,"++"],[-1,503,"++"]],[486,505],[486,501]]],[1553684009911,["zyx@DESKTOP-60KJ218",[[1,486,"_"],[1,501,"_"]],[486,501],[486,503]]],[1553684012363,["zyx@DESKTOP-60KJ218",[[1,393,"_"],[1,400,"_"]],[393,400],[393,402]]],[1553684014327,["zyx@DESKTOP-60KJ218",[[1,277,"_"],[1,290,"_"]],[277,290],[277,292]]],[1553684028980,["zyx@DESKTOP-60KJ218",[[-1,623,"\n"]],[624,624],[623,623]]],[1553684106526,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553684106526,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553684094585,["zyx@DESKTOP-60KJ218",[[1,626,"请说出作用域 public,private,protected,以及不写时的区别"]],[626,626],[666,666]]],[1553684101629,["zyx@DESKTOP-60KJ218",[[-1,660,"不写时"]],[663,663],[660,660]]],[1553684103303,["zyx@DESKTOP-60KJ218",[[1,660,"DEFA"]],[660,660],[664,664]]],[1553684104873,["zyx@DESKTOP-60KJ218",[[-1,660,"DEFA"]],[664,664],[660,660]]],[1553684105439,["zyx@DESKTOP-60KJ218",[[1,660,"d"]],[660,660],[661,661]]],[1553684166553,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553684166553,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553684108184,["zyx@DESKTOP-60KJ218",[[1,661,"efault"]],[661,661],[667,667]]],[1553684112481,["zyx@DESKTOP-60KJ218",[[1,670,"\n\n"]],[670,670],[671,671]]],[1553684143317,["zyx@DESKTOP-60KJ218",[[1,672,"| item | Model | Price | Qty |\n| --------- | -------- | -----: | --: |\n| Laptop | 13\" Pro | $1,300 | 1 |\n| Phone | Plus | $800 | 2 |\n| Watch | Series 3 | $400 | 3 |\n| Headphone | HD650 | $350 | 2 |\n\n\n"]],[671,671],[913,913]]],[1553684150696,["zyx@DESKTOP-60KJ218",[[-1,674,"item"]],[678,678],[674,674]]],[1553684152356,["zyx@DESKTOP-60KJ218",[[1,674,"zuoyon"]],[674,674],[680,680]]],[1553684153866,["zyx@DESKTOP-60KJ218",[[-1,674,"zuoyon"]],[680,680],[674,674]]],[1553684158998,["zyx@DESKTOP-60KJ218",[[1,674,"作用域"]],[674,674],[677,677]]],[1553684163551,["zyx@DESKTOP-60KJ218",[[-1,681," "]],[683,683],[681,681]]],[1553684166470,["zyx@DESKTOP-60KJ218",[[-1,687,"l"]],[688,688],[687,687]]],[1553684226557,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553684226557,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553684167326,["zyx@DESKTOP-60KJ218",[[-1,683,"Mode"]],[687,687],[683,683]]],[1553684172356,["zyx@DESKTOP-60KJ218",[[1,683,"Model"]],[683,683],[688,688]]],[1553684172663,["zyx@DESKTOP-60KJ218",[[1,681," "]],[681,681],[683,683]]],[1553684172944,["zyx@DESKTOP-60KJ218",[[-1,674,"作用域"]],[677,677],[674,674]]],[1553684173199,["zyx@DESKTOP-60KJ218",[[1,674,"zuoyon"]],[674,674],[680,680]]],[1553684173507,["zyx@DESKTOP-60KJ218",[[-1,674,"zuoyon"]],[680,680],[674,674]]],[1553684173895,["zyx@DESKTOP-60KJ218",[[1,674,"item"]],[674,674],[678,678]]],[1553684174245,["zyx@DESKTOP-60KJ218",[[-1,672,"| item | Model | Price | Qty |\n| --------- | -------- | -----: | --: |\n| Laptop | 13\" Pro | $1,300 | 1 |\n| Phone | Plus | $800 | 2 |\n| Watch | Series 3 | $400 | 3 |\n| Headphone | HD650 | $350 | 2 |\n\n\n"]],[913,913],[671,671]]],[1553684208825,["zyx@DESKTOP-60KJ218",[[1,672,"| item | Model | Price | Qty |\n| --------- | -------- | -----: | --: |\n| Laptop | 13\" Pro | $1,300 | 1 |\n| Phone | Plus | $800 | 2 |\n| Watch | Series 3 | $400 | 3 |\n| Headphone | HD650 | $350 | 2 |\n\n\n"]],[671,671],[913,913]]],[1553684286551,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553684286551,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553684240813,["zyx@DESKTOP-60KJ218",[[1,711,"其他包|"]],[711,711],[715,715]]],[1553684247612,["zyx@DESKTOP-60KJ218",[[1,711," "]],[711,711],[712,712]]],[1553684248344,["zyx@DESKTOP-60KJ218",[[1,715," "]],[715,715],[716,716]]],[1553684251787,["zyx@DESKTOP-60KJ218",[[-1,715," "]],[716,716],[715,715]]],[1553684252937,["zyx@DESKTOP-60KJ218",[[-1,711," 其他包|"]],[712,712],[711,711]]],[1553684255674,["zyx@DESKTOP-60KJ218",[[-1,672,"| item | Model | Price | Qty |\n| --------- | -------- | -----: | --: |\n| Laptop | 13\" Pro | $1,300 | 1 |\n| Phone | Plus | $800 | 2 |\n| Watch | Series 3 | $400 | 3 |\n| Headphone | HD650 | $350 | 2 |\n\n\n"]],[913,913],[671,671]]],[1553684276250,["zyx@DESKTOP-60KJ218",[[1,623,"**"],[1,670,"**"]],[623,670],[623,674]]],[1553684346537,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553684346537,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553684341190,["zyx@DESKTOP-60KJ218",[[1,660,"friendly"]],[660,660],[668,668]]],[1553687044456,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553687044456,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553687010352,["zyx@DESKTOP-60KJ218",[[1,683,"一个\".java\"源文件中是否可以包括多个类(不是内部类)?有什么限制?"]],[683,683],[719,719]]],[1553687013048,["zyx@DESKTOP-60KJ218",[[1,683,"钱"]],[683,683],[684,684]]],[1553687014670,["zyx@DESKTOP-60KJ218",[[-1,683,"钱"]],[684,684],[683,683]]],[1553687017507,["zyx@DESKTOP-60KJ218",[[1,683,"Q4."]],[683,683],[686,686]]],[1553687023181,["zyx@DESKTOP-60KJ218",[[1,683,"**"],[1,722,"**"]],[683,722],[683,726]]],[1553687025594,["zyx@DESKTOP-60KJ218",[[1,727,"\n"]],[726,726],[727,727]]],[1553687033944,["zyx@DESKTOP-60KJ218",[[1,683,"\n"]],[682,682],[683,683]]],[1553687584492,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553687584492,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553687528152,["zyx@DESKTOP-60KJ218",[[-1,659,",friendly"]],[668,668],[659,659]]],[1553687529131,["zyx@DESKTOP-60KJ218",[[1,659,","]],[659,659],[660,660]]],[1553687531140,["zyx@DESKTOP-60KJ218",[[-1,659,","]],[660,660],[659,659]]],[1553687532026,["zyx@DESKTOP-60KJ218",[[1,659,","]],[659,659],[660,660]]],[1553687536810,["zyx@DESKTOP-60KJ218",[[1,669,"()"]],[669,669],[671,671]]],[1553687540337,["zyx@DESKTOP-60KJ218",[[1,670,"通常"]],[670,670],[672,672]]],[1553687541918,["zyx@DESKTOP-60KJ218",[[-1,670,"通常"]],[672,672],[670,670]]],[1553687552397,["zyx@DESKTOP-60KJ218",[[1,670,"流传的面试题"]],[670,670],[676,676]]],[1553687561127,["zyx@DESKTOP-60KJ218",[[-1,669,"(流传的面试题)"]],[676,676],[669,669]]],[1553687581450,["zyx@DESKTOP-60KJ218",[[1,675,"流传的面试题中default经常被写成"]],[675,675],[694,694]]],[1553687644475,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553687644475,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553687608500,["zyx@DESKTOP-60KJ218",[[1,694,"friendly,这两者没有区别,并且Java中没有friendlu"]],[694,694],[728,728]]],[1553687608873,["zyx@DESKTOP-60KJ218",[[-1,727,"u"]],[728,728],[727,727]]],[1553687613109,["zyx@DESKTOP-60KJ218",[[1,727,"y关键字。"]],[727,727],[732,732]]],[1553687613301,["zyx@DESKTOP-60KJ218",[[1,733,"\n"]],[732,732],[733,733]]],[1553687704467,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553687704467,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553687686180,["zyx@DESKTOP-60KJ218",[[-1,711,"并且"]],[713,713],[711,711]]],[1553687688160,["zyx@DESKTOP-60KJ218",[[1,711,"但是"]],[711,711],[713,713]]],[1553687694122,["zyx@DESKTOP-60KJ218",[[1,734,"\n"]],[732,732],[733,733]]],[1553687703894,["zyx@DESKTOP-60KJ218",[[1,733,"public权限:"]],[733,733],[742,742]]],[1553687944478,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553687944478,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553687912592,["zyx@DESKTOP-60KJ218",[[1,742,"表明该类的所有成员属性"]],[742,742],[753,753]]],[1553687933161,["zyx@DESKTOP-60KJ218",[[-1,745,"类的所有成员属性"]],[753,753],[745,745]]],[1553687937563,["zyx@DESKTOP-60KJ218",[[1,745,"数据对所有的"]],[745,745],[751,751]]],[1553687939095,["zyx@DESKTOP-60KJ218",[[-1,750,"的"]],[751,751],[750,750]]],[1553687943065,["zyx@DESKTOP-60KJ218",[[1,750,"人开发,所有"]],[750,750],[756,756]]],[1553687944365,["zyx@DESKTOP-60KJ218",[[-1,751,"开发,所有"]],[756,756],[751,751]]],[1553688004486,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553688004486,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553687959772,["zyx@DESKTOP-60KJ218",[[1,751,"开放,可以直接调用"]],[751,751],[760,760]]],[1553687963745,["zyx@DESKTOP-60KJ218",[[1,762,"\n"]],[760,760],[761,761]]],[1553687971454,["zyx@DESKTOP-60KJ218",[[1,761,"private:"]],[761,761],[769,769]]],[1553687973305,["zyx@DESKTOP-60KJ218",[[-1,739,"权限"]],[741,741],[739,739]]],[1553687999981,["zyx@DESKTOP-60KJ218",[[1,767,"私有,可以理解为自己的私有财产,尽自己可"]],[767,767],[787,787]]],[1553688000857,["zyx@DESKTOP-60KJ218",[[-1,783,"尽自己可"]],[787,787],[783,783]]],[1553688003064,["zyx@DESKTOP-60KJ218",[[1,783,"仅自己"]],[783,783],[786,786]]],[1553688064508,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553688064508,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553688006378,["zyx@DESKTOP-60KJ218",[[1,786,"可以访问。"]],[786,786],[791,791]]],[1553688008032,["zyx@DESKTOP-60KJ218",[[-1,788,"访问。"]],[791,791],[788,788]]],[1553688010626,["zyx@DESKTOP-60KJ218",[[1,788,"使用。"]],[788,788],[791,791]]],[1553688010761,["zyx@DESKTOP-60KJ218",[[1,793,"\n"]],[791,791],[792,792]]],[1553688016905,["zyx@DESKTOP-60KJ218",[[1,792,"protect:"]],[792,792],[800,800]]],[1553688124502,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553688124502,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553688075855,["zyx@DESKTOP-60KJ218",[[1,799,"ed"]],[799,799],[801,801]]],[1553688093907,["zyx@DESKTOP-60KJ218",[[1,802,"tong"]],[802,802],[806,806]]],[1553688095267,["zyx@DESKTOP-60KJ218",[[-1,802,"tong"]],[806,806],[802,802]]],[1553688097955,["zyx@DESKTOP-60KJ218",[[1,802,"通报"]],[802,802],[804,804]]],[1553688098342,["zyx@DESKTOP-60KJ218",[[-1,802,"通报"]],[804,804],[802,802]]],[1553688102568,["zyx@DESKTOP-60KJ218",[[1,802,"受保护的,"]],[802,802],[807,807]]],[1553688106253,["zyx@DESKTOP-60KJ218",[[1,769,"的"]],[769,769],[770,770]]],[1553688110928,["zyx@DESKTOP-60KJ218",[[1,740,"共有的,"]],[740,740],[744,744]]],[1553688184505,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553688184505,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553688128848,["zyx@DESKTOP-60KJ218",[[1,812,"有一群人守护者"]],[812,812],[819,819]]],[1553688133423,["zyx@DESKTOP-60KJ218",[[-1,812,"有一群人守护者"]],[819,819],[812,812]]],[1553688141417,["zyx@DESKTOP-60KJ218",[[1,812,"听这个名字就是有一群人"]],[812,812],[823,823]]],[1553688143348,["zyx@DESKTOP-60KJ218",[[-1,812,"听这个名字就是有一群人"]],[823,823],[812,812]]],[1553688182182,["zyx@DESKTOP-60KJ218",[[1,812,"可以理解为有一群人组成一个社团,这个社团里的人可以使用"]],[812,812],[839,839]]],[1553688244514,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553688244514,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553688193810,["zyx@DESKTOP-60KJ218",[[1,839,",它的后代也可以使用"]],[839,839],[849,849]]],[1553688200622,["zyx@DESKTOP-60KJ218",[[-1,840,"它的"]],[841,841],[840,840]]],[1553688241969,["zyx@DESKTOP-60KJ218",[[1,847,"。这个社团就相当于一个包,在同一个包中的类便可以访问,子类也可以访问。"]],[847,847],[882,882]]],[1553688242130,["zyx@DESKTOP-60KJ218",[[1,884,"\n"]],[882,882],[883,883]]],[1553688304518,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553688304518,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553688286454,["zyx@DESKTOP-60KJ218",[[1,883,"default:默认的,在同一个包中的类可以访问,子类"]],[883,883],[910,910]]],[1553688287552,["zyx@DESKTOP-60KJ218",[[-1,908,"子类"]],[910,910],[908,908]]],[1553688303943,["zyx@DESKTOP-60KJ218",[[1,908,"同一个包中的子类也可以访问,但是当子类在其他保重,"]],[908,908],[933,933]]],[1553688364506,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553688364506,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553688305090,["zyx@DESKTOP-60KJ218",[[1,933,"就"]],[933,933],[934,934]]],[1553688305753,["zyx@DESKTOP-60KJ218",[[-1,930,"保重,就"]],[934,934],[930,930]]],[1553688314278,["zyx@DESKTOP-60KJ218",[[1,930,"包中,就不能访问。"]],[930,930],[939,939]]],[1553688317688,["zyx@DESKTOP-60KJ218",[[1,941,"\n"]],[939,939],[940,940]]],[1553688484516,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553688484516,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553688451961,["zyx@DESKTOP-60KJ218",[[1,940,"| 访问权限 |"]],[940,940],[949,949]]],[1553688479082,["zyx@DESKTOP-60KJ218",[[1,951,"| item | Model | Price | Qty |\n| --------- | -------- | -----: | --: |\n| Laptop | 13\" Pro | $1,300 | 1 |\n| Phone | Plus | $800 | 2 |\n| Watch | Series 3 | $400 | 3 |\n| Headphone | HD650 | $350 | 2 |\n\n"]],[940,949],[1192,1192]]],[1553688483113,["zyx@DESKTOP-60KJ218",[[-1,940,"| 访问权限 |"]],[949,949],[940,940]]],[1553688483476,["zyx@DESKTOP-60KJ218",[[-1,941,"\n"]],[940,940],[939,939]]],[1553688484415,["zyx@DESKTOP-60KJ218",[[-1,940,"\n"]],[940,940],[939,939]]],[1553688544528,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553688544528,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553688488337,["zyx@DESKTOP-60KJ218",[[-1,942,"item"]],[946,946],[942,942]]],[1553688491770,["zyx@DESKTOP-60KJ218",[[1,942,"访问权限"]],[942,942],[946,946]]],[1553688499030,["zyx@DESKTOP-60KJ218",[[-1,954,"Model"]],[959,959],[954,954]]],[1553688507813,["zyx@DESKTOP-60KJ218",[[1,954,"同包"]],[954,954],[956,956]]],[1553688512633,["zyx@DESKTOP-60KJ218",[[-1,963,"Price"]],[968,968],[963,963]]],[1553688522235,["zyx@DESKTOP-60KJ218",[[-1,954,"同包"]],[956,956],[954,954]]],[1553688524230,["zyx@DESKTOP-60KJ218",[[1,954,"当前类"]],[954,954],[957,957]]],[1553688529459,["zyx@DESKTOP-60KJ218",[[1,963,"同包"]],[963,963],[965,965]]],[1553688532446,["zyx@DESKTOP-60KJ218",[[-1,969,"Qty"]],[972,972],[969,969]]],[1553688537942,["zyx@DESKTOP-60KJ218",[[1,969,"子孙类"]],[969,969],[972,972]]],[1553688540087,["zyx@DESKTOP-60KJ218",[[1,974," "]],[974,974],[975,975]]],[1553688604534,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553688604534,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553688545100,["zyx@DESKTOP-60KJ218",[[1,975,"其他包"]],[975,975],[978,978]]],[1553688563912,["zyx@DESKTOP-60KJ218",[[1,979,"\n| item | Model | Price | Qty |\n| --------- | -------- | -----: | --: |\n| Laptop | 13\" Pro | $1,300 | 1 |\n| Phone | Plus | $800 | 2 |\n| Watch | Series 3 | $400 | 3 |\n| Headphone | HD650 | $350 | 2 |\n\n"]],[978,978],[1221,1221]]],[1553688570394,["zyx@DESKTOP-60KJ218",[[-1,1221,"| --------- | -------- | -----: | --: |\n| Laptop | 13\" Pro | $1,300 | 1 |\n| Phone | Plus | $800 | 2 |\n| Watch | Series 3 | $400 | 3 |\n| Headphone | HD650 | $350 | 2 |"]],[1221,1420],[1221,1221]]],[1553688570935,["zyx@DESKTOP-60KJ218",[[-1,1222,"\n"]],[1221,1221],[1220,1220]]],[1553688571377,["zyx@DESKTOP-60KJ218",[[-1,1221,"\n"]],[1220,1220],[1219,1219]]],[1553688574710,["zyx@DESKTOP-60KJ218",[[-1,980,"| item | Model | Price | Qty |\n| --------- | -------- | -----: | --: |\n| Laptop | 13\" Pro | $1,300 | 1 |\n| Phone | Plus | $800 | 2 |\n| Watch | Series 3 | $400 | 3 |\n| Headphone | HD650 | $350 | 2 |"]],[980,1219],[980,980]]],[1553688582628,["zyx@DESKTOP-60KJ218",[[1,954," "]],[954,954],[956,956]]],[1553688584391,["zyx@DESKTOP-60KJ218",[[1,965," "]],[965,965],[967,967]]],[1553688585018,["zyx@DESKTOP-60KJ218",[[1,973," "]],[973,973],[974,974]]],[1553688585744,["zyx@DESKTOP-60KJ218",[[1,978," "]],[978,978],[979,979]]],[1553688587060,["zyx@DESKTOP-60KJ218",[[1,981," "]],[981,981],[983,983]]],[1553688588938,["zyx@DESKTOP-60KJ218",[[1,986,"|"]],[986,986],[987,987]]],[1553688590016,["zyx@DESKTOP-60KJ218",[[1,986," "]],[986,986],[987,987]]],[1553688590950,["zyx@DESKTOP-60KJ218",[[1,992,"\n"]],[988,988],[989,989]]],[1553688664517,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553688664517,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553688611105,["zyx@DESKTOP-60KJ218",[[1,990,"| item | Model | Price | Qty |\n| --------- | -------- | -----: | --: |\n| Laptop | 13\" Pro | $1,300 | 1 |\n| Phone | Plus | $800 | 2 |\n| Watch | Series 3 | $400 | 3 |\n| Headphone | HD650 | $350 | 2 |"]],[989,989],[1231,1231]]],[1553688634732,["zyx@DESKTOP-60KJ218",[[-1,990,"| item | Model | Price | Qty |\n| --------- | -------- | -----: | --: |\n| Laptop | 13\" Pro | $1,300 | 1 |\n| Phone | Plus | $800 | 2 |\n| Watch | Series 3 | $400 | 3 |\n| Headphone | HD650 | $350 | 2 |"]],[990,1229],[990,990]]],[1553688635271,["zyx@DESKTOP-60KJ218",[[-1,992,"\n"]],[990,990],[989,989]]],[1553688635490,["zyx@DESKTOP-60KJ218",[[-1,991,"\n"]],[989,989],[988,988]]],[1553688639276,["zyx@DESKTOP-60KJ218",[[-1,940,"| 访问权限 | 当前类 | 同包 | 子孙类 | 其他包 |"]],[988,988],[940,940]]],[1553688639645,["zyx@DESKTOP-60KJ218",[[-1,942,"\n"]],[940,940],[939,939]]],[1553688642186,["zyx@DESKTOP-60KJ218",[[-1,941,"\n"]],[941,941],[940,940]]],[1553688724517,[null,[[-1,14,"习"],[1,15," "]],[14,14],[16,16]]],[1553688724517,[null,[[1,14,"习"],[-1,14," "]],[16,16],[14,14]]],[1553688667534,["zyx@DESKTOP-60KJ218",[[-1,761,"用"]],[762,762],[761,761]]],[1553688669728,["zyx@DESKTOP-60KJ218",[[1,940,"\n"]],[938,938],[939,939]]],[1553688671655,["zyx@DESKTOP-60KJ218",[[-1,940,"\n"]],[940,940],[939,939]]]],null,"zyx@DESKTOP-60KJ218"],["cbb4a568-bb34-4d63-a13e-b67fcc9525f9",1553688811442,"# JavaSE篇\n\n### Q&S\n**Q1.JDK 和 JRE 有什么区别?**\nJDK是功能齐全的Java软件开发包。JRE 是 Java运行时环境。\nJDK拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb),它能够创建和编译程序。\nJRE 是 Java程序运行所需的内容的集合,它包含了 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序,只运行程序。\n**Q2.Java的基本类型有哪些?它们各自相对应的封装类又是什么?请说明int和它的封装类之间的区别。**\n_Java的基本类型有8种:_\n整数型:byte、short、int、long(对应位数:8,16,32,64)\n浮点型:float、double(对应位数:32,64)\n字符型:char(对应位数:16)\n布尔类型:boolean\n\n_对应的封装类:_\n整数型包装类:Byte,Short,Integer,Long\n浮点型包装类:Float,Double\n字符型包装类:Character\n布尔类型包装类:Boolean\n\n_Integer与int的区别:_\nint 的默认值为0,而 Integer 的默认值为 null,即 Integer 可以区分出未赋值和值为0的区别,int 则无法表达出未赋值的情况。例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用 Integer。\n**Q3.请说出作用域 public,private,protected,以及default的区别**\n流传的面试题中default经常被写成friendly,这两者没有区别,但是Java中没有friendly关键字。\npublic:共有的,表明该数据对所有人开放,可以直接调\nprivate:私有的,可以理解为自己的私有财产,仅自己可以使用。\nprotected:受保护的,可以理解为有一群人组成一个社团,这个社团里的人可以使用,后代也可以使用。这个社团就相当于一个包,在同一个包中的类便可以访问,子类也可以访问。\ndefault:默认的,在同一个包中的类可以访问,同一个包中的子类也可以访问,但是当子类在其他包中,就不能访问。\n\n**Q4.一个\".java\"源文件中是否可以包括多个类(不是内部类)?有什么限制?**\n\n",[[1553688797433,["zyx@DESKTOP-60KJ218",[[1,939,""]],[939,939],[1017,1017]]],[1553688823319,["zyx@DESKTOP-60KJ218",[[-1,1061,"\n"],[1,1062,"可以"]],[1061,1061],[1063,1063]]],[1553688839198,["zyx@DESKTOP-60KJ218",[[1,1063,"包含多个类,但是只有一个了"]],[1063,1063],[1076,1076]]],[1553688839756,["zyx@DESKTOP-60KJ218",[[-1,1075,"了"]],[1076,1076],[1075,1075]]],[1553688843648,["zyx@DESKTOP-60KJ218",[[1,1075,"类可以使用P"]],[1075,1075],[1081,1081]]],[1553688844350,["zyx@DESKTOP-60KJ218",[[-1,1080,"P"]],[1081,1081],[1080,1080]]],[1553688867875,["zyx@DESKTOP-60KJ218",[[1,1080,"public来修饰,并且文件名称必须与public修饰的类名称形同"]],[1080,1080],[1113,1113]]],[1553688868919,["zyx@DESKTOP-60KJ218",[[-1,1111,"形同"]],[1113,1113],[1111,1111]]],[1553688871432,["zyx@DESKTOP-60KJ218",[[1,1111,"相同。"]],[1111,1111],[1114,1114]]],[1553688894249,["zyx@DESKTOP-60KJ218",[[1,1114,"\n\n"]],[1114,1114],[1115,1115]]],[1553688894904,["zyx@DESKTOP-60KJ218",[[-1,1115,"\n"],[1,1116,"Q"]],[1115,1115],[1116,1116]]],[1553688898316,["zyx@DESKTOP-60KJ218",[[1,1116,"5.switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?"]],[1116,1116],[1168,1168]]],[1553688906508,["zyx@DESKTOP-60KJ218",[[1,1115,"**"],[1,1168,"**"]],[1115,1168],[1115,1172]]],[1553688913373,["zyx@DESKTOP-60KJ218",[[1,1172,"\n\n"]],[1172,1172],[1173,1173]]],[1553688944443,["zyx@DESKTOP-60KJ218",[[1,277,"=="],[1,292,"=="]],[277,292],[277,296]]],[1553688948503,["zyx@DESKTOP-60KJ218",[[-1,277,"=="],[-1,294,"=="]],[277,296],[277,292]]],[1553688958125,["zyx@DESKTOP-60KJ218",[[1,19,"\n"],[-1,1173,"\n"]],[362,362],[0,0]]],[1553688995534,["zyx@DESKTOP-60KJ218",[[1,1174,"\n"]],[1173,1173],[1174,1174]]],[1553689015064,["zyx@DESKTOP-60KJ218",[[-1,1174,"\n"],[1,1175,"switch"]],[1174,1174],[1180,1180]]],[1553689023521,["zyx@DESKTOP-60KJ218",[[1,1180,"表达式中,只能是整形"]],[1180,1180],[1190,1190]]],[1553689024120,["zyx@DESKTOP-60KJ218",[[-1,1188,"整形"]],[1190,1190],[1188,1188]]],[1553689030557,["zyx@DESKTOP-60KJ218",[[1,1188,"整型或者枚举类型"]],[1188,1188],[1196,1196]]],[1553689078835,["zyx@DESKTOP-60KJ218",[[-1,1188,"整型"],[1,1190,"int"]],[1188,1188],[1191,1191]]],[1553689081479,["zyx@DESKTOP-60KJ218",[[1,1191,"类型"]],[1191,1191],[1193,1193]]],[1553689082838,["zyx@DESKTOP-60KJ218",[[1,1195,"或者"]],[1193,1193],[1195,1195]]],[1553689085889,["zyx@DESKTOP-60KJ218",[[1,1195,"Integer"]],[1195,1195],[1202,1202]]]],null,"zyx@DESKTOP-60KJ218"],["63999a73-c913-49b4-a05f-b80fbeda4e10",1553777092887,"# JavaSE篇\n\n### Q&S\n\n**Q1.JDK 和 JRE 有什么区别?**\nJDK是功能齐全的Java软件开发包。JRE 是 Java运行时环境。\nJDK拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb),它能够创建和编译程序。\nJRE 是 Java程序运行所需的内容的集合,它包含了 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序,只运行程序。\n**Q2.Java的基本类型有哪些?它们各自相对应的封装类又是什么?请说明int和它的封装类之间的区别。**\n_Java的基本类型有8种:_\n整数型:byte、short、int、long(对应位数:8,16,32,64)\n浮点型:float、double(对应位数:32,64)\n字符型:char(对应位数:16)\n布尔类型:boolean\n\n_对应的封装类:_\n整数型包装类:Byte,Short,Integer,Long\n浮点型包装类:Float,Double\n字符型包装类:Character\n布尔类型包装类:Boolean\n\n_Integer与int的区别:_\nint 的默认值为0,而 Integer 的默认值为 null,即 Integer 可以区分出未赋值和值为0的区别,int 则无法表达出未赋值的情况。例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用 Integer。\n**Q3.请说出作用域 public,private,protected,以及default的区别**\n流传的面试题中default经常被写成friendly,这两者没有区别,但是Java中没有friendly关键字。\npublic:共有的,表明该数据对所有人开放,可以直接调\nprivate:私有的,可以理解为自己的私有财产,仅自己可以使用。\nprotected:受保护的,可以理解为有一群人组成一个社团,这个社团里的人可以使用,后代也可以使用。这个社团就相当于一个包,在同一个包中的类便可以访问,子类也可以访问。\ndefault:默认的,在同一个包中的类可以访问,同一个包中的子类也可以访问,但是当子类在其他包中,就不能访问。\n\n**Q4.一个\".java\"源文件中是否可以包括多个类(不是内部类)?有什么限制?**\n可以包含多个类,但是只有一个类可以使用public来修饰,并且文件名称必须与public修饰的类名称相同。\n**Q5.switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?**\nswitch表达式中,只能是int类型或者Integer或者枚举类型",[[1553777089278,["zyx@DESKTOP-60KJ218",[[1,1208,"。"]],[1208,1208],[1209,1209]]],[1553777104970,["zyx@DESKTOP-60KJ218",[[1,1209,"byte、shotr"]],[1209,1209],[1219,1219]]],[1553777106151,["zyx@DESKTOP-60KJ218",[[-1,1217,"tr"]],[1219,1219],[1217,1217]]],[1553777108391,["zyx@DESKTOP-60KJ218",[[1,1217,"rt、"]],[1217,1217],[1220,1220]]],[1553777128555,["zyx@DESKTOP-60KJ218",[[1,405,"****"]],[405,405],[407,407]]],[1553777129876,["zyx@DESKTOP-60KJ218",[[-1,405,"****"]],[407,407],[405,405]]],[1553777150611,["zyx@DESKTOP-60KJ218",[[1,1220,"char可以穿"]],[1220,1220],[1227,1227]]],[1553777151014,["zyx@DESKTOP-60KJ218",[[-1,1225,"以穿"]],[1227,1227],[1225,1225]]],[1553777151751,["zyx@DESKTOP-60KJ218",[[1,1225,"转"]],[1225,1225],[1226,1226]]],[1553777152158,["zyx@DESKTOP-60KJ218",[[-1,1224,"可转"]],[1226,1226],[1224,1224]]],[1553777158923,["zyx@DESKTOP-60KJ218",[[1,1224,"可以转换成"]],[1224,1224],[1229,1229]]],[1553777160894,["zyx@DESKTOP-60KJ218",[[-1,1226,"转换成"]],[1229,1229],[1226,1226]]],[1553777173002,["zyx@DESKTOP-60KJ218",[[1,1226,"隐式转换成int类型,英雌"]],[1226,1226],[1239,1239]]],[1553777174045,["zyx@DESKTOP-60KJ218",[[-1,1237,"英雌"]],[1239,1239],[1237,1237]]],[1553777193281,["zyx@DESKTOP-60KJ218",[[1,1237,"因此可以使用这三种类型的表达式,而"]],[1237,1237],[1254,1254]]],[1553777199270,["zyx@DESKTOP-60KJ218",[[-1,1253,"而"]],[1254,1254],[1253,1253]]],[1553777208316,["zyx@DESKTOP-60KJ218",[[1,1253,"那么long、S听"]],[1253,1253],[1262,1262]]],[1553777209203,["zyx@DESKTOP-60KJ218",[[-1,1261,"听"]],[1262,1262],[1261,1261]]],[1553777210921,["zyx@DESKTOP-60KJ218",[[1,1261,"tring"]],[1261,1261],[1266,1266]]],[1553777214680,["zyx@DESKTOP-60KJ218",[[1,1266,"类型就可以不"]],[1266,1266],[1272,1272]]],[1553777215752,["zyx@DESKTOP-60KJ218",[[-1,1269,"可以不"]],[1272,1272],[1269,1269]]],[1553777221649,["zyx@DESKTOP-60KJ218",[[1,1269,"不能应用。"]],[1269,1269],[1274,1274]]],[1553777223600,["zyx@DESKTOP-60KJ218",[[1,1274,"\n\n"]],[1274,1274],[1275,1275]]],[1553777225789,["zyx@DESKTOP-60KJ218",[[-1,1275,"\n"],[1,1276,"Q"]],[1275,1275],[1276,1276]]],[1553777226831,["zyx@DESKTOP-60KJ218",[[1,1276,"6 "]],[1276,1276],[1279,1279]]],[1553777228009,["zyx@DESKTOP-60KJ218",[[-1,1278," "]],[1279,1279],[1278,1278]]],[1553777229928,["zyx@DESKTOP-60KJ218",[[1,1278,"."]],[1278,1278],[1279,1279]]],[1553777231515,["zyx@DESKTOP-60KJ218",[[-1,1278,"."]],[1279,1279],[1278,1278]]],[1553777232878,["zyx@DESKTOP-60KJ218",[[1,1278,"."]],[1278,1278],[1279,1279]]],[1553777234352,["zyx@DESKTOP-60KJ218",[[-1,1277," ."]],[1279,1279],[1277,1277]]],[1553777235572,["zyx@DESKTOP-60KJ218",[[1,1277,"."]],[1277,1277],[1278,1278]]],[1553777304252,["zyx@DESKTOP-60KJ218",[[1,1278,"short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?"]],[1278,1278],[1337,1337]]],[1553777308703,["zyx@DESKTOP-60KJ218",[[1,1275,"**"],[1,1337,"**"]],[1275,1337],[1275,1341]]],[1553777311223,["zyx@DESKTOP-60KJ218",[[1,1341,"\n\n"]],[1341,1341],[1342,1342]]],[1553777352668,["zyx@DESKTOP-60KJ218",[[-1,1342,"\n"],[1,1343,"前者"]],[1342,1342],[1344,1344]]],[1553777362178,["zyx@DESKTOP-60KJ218",[[1,1344,"中s1+1会使得"]],[1344,1344],[1352,1352]]],[1553777366224,["zyx@DESKTOP-60KJ218",[[-1,1350,"使得"]],[1352,1352],[1350,1350]]],[1553777367765,["zyx@DESKTOP-60KJ218",[[1,1350,"有"]],[1350,1350],[1351,1351]]],[1553777367977,["zyx@DESKTOP-60KJ218",[[-1,1350,"有"]],[1351,1351],[1350,1350]]],[1553777391001,["zyx@DESKTOP-60KJ218",[[1,1350,"自动进行类型转换,"]],[1350,1350],[1359,1359]]],[1553777395910,["zyx@DESKTOP-60KJ218",[[1,1359,"结果是振兴"]],[1359,1359],[1364,1364]]],[1553777396435,["zyx@DESKTOP-60KJ218",[[-1,1362,"振兴"]],[1364,1364],[1362,1362]]],[1553777407227,["zyx@DESKTOP-60KJ218",[[1,1362,"int型的,而是"]],[1362,1362],[1370,1370]]],[1553777407953,["zyx@DESKTOP-60KJ218",[[-1,1369,"是"]],[1370,1370],[1369,1369]]],[1553777408668,["zyx@DESKTOP-60KJ218",[[1,1369,"s1"]],[1369,1369],[1371,1371]]],[1553777408863,["zyx@DESKTOP-60KJ218",[[1,1371,"\n\n"]],[1371,1371],[1372,1372]]],[1553777409392,["zyx@DESKTOP-60KJ218",[[-1,1372,"\n"]],[1372,1372],[1371,1371]]],[1553777415204,["zyx@DESKTOP-60KJ218",[[1,1371,"是short类型,讲"]],[1371,1371],[1381,1381]]],[1553777416266,["zyx@DESKTOP-60KJ218",[[-1,1380,"讲"]],[1381,1381],[1380,1380]]],[1553777443755,["zyx@DESKTOP-60KJ218",[[1,1380,"将整型赋值给short型会出错。"]],[1380,1380],[1396,1396]]],[1553777444951,["zyx@DESKTOP-60KJ218",[[1,1397,"\n"]],[1396,1396],[1397,1397]]],[1553777447967,["zyx@DESKTOP-60KJ218",[[-1,1397,"\n"],[1,1398,"Q"]],[1397,1397],[1398,1398]]],[1553777451352,["zyx@DESKTOP-60KJ218",[[1,1398,"7."]],[1398,1398],[1400,1400]]],[1553777463228,["zyx@DESKTOP-60KJ218",[[1,1396,"而后者中"]],[1396,1396],[1400,1400]]],[1553777468470,["zyx@DESKTOP-60KJ218",[[-1,1368,"而"]],[1369,1369],[1368,1368]]],[1553777487689,["zyx@DESKTOP-60KJ218",[[1,1399,"++++"]],[1399,1399],[1401,1401]]],[1553777488462,["zyx@DESKTOP-60KJ218",[[-1,1401,"++"]],[1401,1401],[1399,1399]]],[1553777490489,["zyx@DESKTOP-60KJ218",[[-1,1399,"++"]],[1401,1401],[1399,1399]]],[1553777499474,["zyx@DESKTOP-60KJ218",[[1,1399,"+=语句Java会将"]],[1399,1399],[1409,1409]]],[1553777500696,["zyx@DESKTOP-60KJ218",[[-1,1407,"会将"]],[1409,1409],[1407,1407]]],[1553777510001,["zyx@DESKTOP-60KJ218",[[1,1407,"编译时会总动是被"]],[1407,1407],[1415,1415]]],[1553777510656,["zyx@DESKTOP-60KJ218",[[-1,1411,"总动是被"]],[1415,1415],[1411,1411]]],[1553777511650,["zyx@DESKTOP-60KJ218",[[1,1411,"自动"]],[1411,1411],[1413,1413]]],[1553777536879,["zyx@DESKTOP-60KJ218",[[1,1413,"识别类型,并进行特殊处理,因此后者没有错误。"]],[1413,1413],[1435,1435]]],[1553777562470,["zyx@DESKTOP-60KJ218",[[1,1439,"用最有效率的方法算出 2 乘以 8 等于几?用最有效的方法算出奇数和偶数 ?"]],[1439,1439],[1477,1477]]],[1553777568495,["zyx@DESKTOP-60KJ218",[[1,1436,"**"],[1,1477,"**"]],[1436,1477],[1436,1481]]],[1553777571047,["zyx@DESKTOP-60KJ218",[[1,1481,"\n\n"]],[1481,1481],[1482,1482]]],[1553777573768,["zyx@DESKTOP-60KJ218",[[-1,1482,"\n"],[1,1483,"2"]],[1482,1482],[1483,1483]]],[1553777584403,["zyx@DESKTOP-60KJ218",[[1,1483,"*8=16,women"]],[1483,1483],[1494,1494]]],[1553777585646,["zyx@DESKTOP-60KJ218",[[-1,1488,",women"]],[1494,1494],[1488,1488]]],[1553777607261,["zyx@DESKTOP-60KJ218",[[1,1488,",我们可以得到2的二进制位10,"]],[1488,1488],[1504,1504]]],[1553777609895,["zyx@DESKTOP-60KJ218",[[-1,1503,","]],[1504,1504],[1503,1503]]],[1553777611324,["zyx@DESKTOP-60KJ218",[[1,1503,",er"]],[1503,1503],[1506,1506]]],[1553777613264,["zyx@DESKTOP-60KJ218",[[-1,1503,",er"]],[1506,1506],[1503,1503]]],[1553777622036,["zyx@DESKTOP-60KJ218",[[1,1503,",而16的二进制数位"]],[1503,1503],[1513,1513]]],[1553777623025,["zyx@DESKTOP-60KJ218",[[-1,1512,"位"]],[1513,1513],[1512,1512]]],[1553777630927,["zyx@DESKTOP-60KJ218",[[1,1512,"为0"]],[1512,1512],[1514,1514]]],[1553777634428,["zyx@DESKTOP-60KJ218",[[1,1513,"1"]],[1513,1513],[1514,1514]]],[1553777655134,["zyx@DESKTOP-60KJ218",[[1,1515,"000,我们发现"]],[1514,1514],[1523,1523]]],[1553777655967,["zyx@DESKTOP-60KJ218",[[-1,1519,"我们发现"]],[1523,1523],[1519,1519]]],[1553777680708,["zyx@DESKTOP-60KJ218",[[1,1519,"发现2的二进制数中的1向左移动三维"]],[1519,1519],[1536,1536]]],[1553777681536,["zyx@DESKTOP-60KJ218",[[-1,1534,"三维"]],[1536,1536],[1534,1534]]],[1553777690082,["zyx@DESKTOP-60KJ218",[[1,1534,"三位就可以得到16的"]],[1534,1534],[1544,1544]]],[1553777742572,["zyx@DESKTOP-60KJ218",[[1,1544,"二进制数。因此我们可以使用位移运算来快速计算2>>3"]],[1544,1544],[1570,1570]]],[1553777755672,["zyx@DESKTOP-60KJ218",[[-1,1567,">>"]],[1569,1569],[1567,1567]]],[1553777757161,["zyx@DESKTOP-60KJ218",[[1,1567,"《《"]],[1567,1567],[1569,1569]]],[1553777758298,["zyx@DESKTOP-60KJ218",[[-1,1567,"《《"]],[1569,1569],[1567,1567]]],[1553777759206,["zyx@DESKTOP-60KJ218",[[1,1567,"<<"]],[1567,1567],[1569,1569]]],[1553777765965,["zyx@DESKTOP-60KJ218",[[1,1570,"."]],[1570,1570],[1571,1571]]],[1553777766904,["zyx@DESKTOP-60KJ218",[[-1,1570,"."]],[1571,1571],[1570,1570]]],[1553777767451,["zyx@DESKTOP-60KJ218",[[1,1570,"。"]],[1570,1570],[1571,1571]]],[1553777768471,["zyx@DESKTOP-60KJ218",[[1,1571,"\n\n"]],[1571,1571],[1572,1572]]],[1553777771989,["zyx@DESKTOP-60KJ218",[[-1,1572,"\n"],[1,1573,"技术"]],[1572,1572],[1574,1574]]],[1553777772745,["zyx@DESKTOP-60KJ218",[[-1,1573,"术"]],[1574,1574],[1573,1573]]],[1553777772896,["zyx@DESKTOP-60KJ218",[[-1,1572,"技"],[1,1573,"\n"]],[1573,1573],[1572,1572]]],[1553777776274,["zyx@DESKTOP-60KJ218",[[-1,1572,"\n"],[1,1573,"奇数"]],[1572,1572],[1574,1574]]],[1553777793482,["zyx@DESKTOP-60KJ218",[[1,1574,"的二进制数最后一位总是1,因为只有最后一位"]],[1574,1574],[1595,1595]]],[1553777797881,["zyx@DESKTOP-60KJ218",[[-1,1587,"因为只有最后一位"]],[1595,1595],[1587,1587]]],[1553777810604,["zyx@DESKTOP-60KJ218",[[1,1587,"而偶数的二进制数总是0,因此我么可以"]],[1587,1587],[1605,1605]]],[1553777811041,["zyx@DESKTOP-60KJ218",[[-1,1602,"么可以"]],[1605,1605],[1602,1602]]],[1553777853324,["zyx@DESKTOP-60KJ218",[[1,1602,"们可以使用与运算来进行奇偶数的识别。例如这个数为n,if(n"]],[1602,1602],[1632,1632]]],[1553777853944,["zyx@DESKTOP-60KJ218",[[-1,1631,"n"]],[1632,1632],[1631,1631]]],[1553777860464,["zyx@DESKTOP-60KJ218",[[1,1631,"(n&1)===="]],[1631,1631],[1638,1638]]],[1553777862123,["zyx@DESKTOP-60KJ218",[[-1,1638,"=="]],[1638,1638],[1636,1636]]],[1553777871667,["zyx@DESKTOP-60KJ218",[[1,1638,"1)时,此书"]],[1638,1638],[1644,1644]]],[1553777872105,["zyx@DESKTOP-60KJ218",[[-1,1643,"书"]],[1644,1644],[1643,1643]]],[1553777896076,["zyx@DESKTOP-60KJ218",[[1,1643,"数就是奇数,"]],[1643,1643],[1649,1649]]],[1553777902488,["zyx@DESKTOP-60KJ218",[[-1,1648,","]],[1649,1649],[1648,1648]]],[1553777903219,["zyx@DESKTOP-60KJ218",[[1,1648,";if((n&1)==1)时"]],[1648,1648],[1662,1662]]],[1553777906794,["zyx@DESKTOP-60KJ218",[[-1,1659,"1"]],[1660,1660],[1659,1659]]],[1553777907693,["zyx@DESKTOP-60KJ218",[[1,1659,"0"]],[1659,1659],[1660,1660]]],[1553777922044,["zyx@DESKTOP-60KJ218",[[1,1662,",次数为"]],[1662,1662],[1666,1666]]],[1553777923764,["zyx@DESKTOP-60KJ218",[[-1,1663,"次数为"]],[1666,1666],[1663,1663]]],[1553777930829,["zyx@DESKTOP-60KJ218",[[1,1663,"此数为"]],[1663,1663],[1666,1666]]],[1553777933530,["zyx@DESKTOP-60KJ218",[[1,1666,"偶数。"]],[1666,1666],[1669,1669]]],[1553777951528,["zyx@DESKTOP-60KJ218",[[1,1669,"\n\n"]],[1669,1669],[1670,1670]]],[1553778177790,["zyx@DESKTOP-60KJ218",[[-1,1670,"\n"],[1,1671,"Q"]],[1670,1670],[1671,1671]]],[1553778180448,["zyx@DESKTOP-60KJ218",[[1,1671,"8."]],[1671,1671],[1673,1673]]],[1553778213051,["zyx@DESKTOP-60KJ218",[[1,1673,"== 和 equals 的区别是什么?"]],[1673,1673],[1692,1692]]],[1553778214672,["zyx@DESKTOP-60KJ218",[[1,1692,"\n\n"]],[1692,1692],[1693,1693]]],[1553778217956,["zyx@DESKTOP-60KJ218",[[1,1670,"**"],[1,1692,"**"]],[1670,1692],[1670,1696]]],[1553778243076,["zyx@DESKTOP-60KJ218",[[1,1697,"l == 解读\n\n对于基本类型和引用类型 == 的作用效果是不同的,基本类型:比较的是值是否相同;引用类型:比较的是引用是否相同;\n\nl equals 解读\n\nequals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。String 重写了 Object 的 equals 方法,把引用比较改成了值比较。"]],[1697,1697],[1880,1880]]],[1553778251065,["zyx@DESKTOP-60KJ218",[[-1,1638,"1)时,此数就是奇数;if((n&1)"]],[1638,1657],[1638,1638]]],[1553778254419,["zyx@DESKTOP-60KJ218",[[1,1638,"1)时,此数就是奇数;if((n&1)"]],[1638,1638],[1638,1657]]],[1553778257468,["zyx@DESKTOP-60KJ218",[[-1,1636,"=="],[-1,1657,"=="]],[1638,1657],[1636,1655]]],[1553778262669,["zyx@DESKTOP-60KJ218",[[1,1636,"===="]],[1636,1636],[1638,1638]]],[1553778264145,["zyx@DESKTOP-60KJ218",[[-1,1638,"=="]],[1638,1638],[1636,1636]]],[1553778266283,["zyx@DESKTOP-60KJ218",[[1,1636,"、"]],[1636,1636],[1637,1637]]],[1553778267284,["zyx@DESKTOP-60KJ218",[[-1,1636,"、"]],[1637,1637],[1636,1636]]],[1553778267606,["zyx@DESKTOP-60KJ218",[[1,1636,"、"]],[1636,1636],[1637,1637]]],[1553778268722,["zyx@DESKTOP-60KJ218",[[-1,1636,"、"]],[1637,1637],[1636,1636]]],[1553778269293,["zyx@DESKTOP-60KJ218",[[1,1636,"\\"]],[1636,1636],[1637,1637]]],[1553778272865,["zyx@DESKTOP-60KJ218",[[1,1658,"===="]],[1658,1658],[1660,1660]]],[1553778274562,["zyx@DESKTOP-60KJ218",[[-1,1660,"=="]],[1660,1660],[1658,1658]]],[1553778275424,["zyx@DESKTOP-60KJ218",[[1,1658,"\\"]],[1658,1658],[1659,1659]]],[1553778296889,["zyx@DESKTOP-60KJ218",[[-1,1699,"l == "]],[1704,1704],[1699,1699]]],[1553778298104,["zyx@DESKTOP-60KJ218",[[1,1699,"===="]],[1699,1699],[1701,1701]]],[1553778300193,["zyx@DESKTOP-60KJ218",[[-1,1702,"=解读"]],[1705,1705],[1702,1702]]],[1553778302579,["zyx@DESKTOP-60KJ218",[[1,1702,"=解读"]],[1702,1702],[1705,1705]]],[1553778303965,["zyx@DESKTOP-60KJ218",[[-1,1699,"===="]],[1701,1701],[1699,1699]]],[1553778306307,["zyx@DESKTOP-60KJ218",[[-1,1699,"解读"]],[1701,1701],[1699,1699]]],[1553778307632,["zyx@DESKTOP-60KJ218",[[-1,1700,"\n"]],[1700,1700],[1699,1699]]],[1553778309676,["zyx@DESKTOP-60KJ218",[[1,1699,"\\===="]],[1699,1699],[1702,1702]]],[1553778311410,["zyx@DESKTOP-60KJ218",[[-1,1702,"=="]],[1704,1704],[1702,1702]]],[1553778315858,["zyx@DESKTOP-60KJ218",[[-1,1761,"l "]],[1763,1763],[1761,1761]]],[1553778316632,["zyx@DESKTOP-60KJ218",[[-1,1768,"解读"]],[1770,1770],[1768,1768]]],[1553778318027,["zyx@DESKTOP-60KJ218",[[-1,1769,"\n"]],[1769,1769],[1768,1768]]],[1553778319277,["zyx@DESKTOP-60KJ218",[[-1,1760,"\n"]],[1760,1760],[1759,1759]]],[1553778365697,["zyx@DESKTOP-60KJ218",[[1,1672,"\n"]],[1671,1671],[1672,1672]]],[1553778368490,["zyx@DESKTOP-60KJ218",[[-1,1676,"8"]],[1677,1677],[1676,1676]]],[1553778369106,["zyx@DESKTOP-60KJ218",[[1,1676,"9"]],[1676,1676],[1677,1677]]],[1553778373483,["zyx@DESKTOP-60KJ218",[[1,1672,"**Q9.== 和 equals 的区别是什么?**"]],[1672,1672],[1698,1698]]],[1553778375426,["zyx@DESKTOP-60KJ218",[[-1,1675,"9"]],[1676,1676],[1675,1675]]],[1553778375818,["zyx@DESKTOP-60KJ218",[[1,1675,"8"]],[1675,1675],[1676,1676]]],[1553778381607,["zyx@DESKTOP-60KJ218",[[-1,1677,"== 和 equals 的区别是什么"]],[1695,1695],[1677,1677]]],[1553778382758,["zyx@DESKTOP-60KJ218",[[1,1677,"shie"]],[1677,1677],[1681,1681]]],[1553778384248,["zyx@DESKTOP-60KJ218",[[-1,1677,"shie"]],[1681,1681],[1677,1677]]],[1553778388591,["zyx@DESKTOP-60KJ218",[[1,1677,"什么是引用类型"]],[1677,1677],[1684,1684]]],[1553778390240,["zyx@DESKTOP-60KJ218",[[1,1688,"\n"]],[1687,1687],[1688,1688]]],[1553778394814,["zyx@DESKTOP-60KJ218",[[1,1688,"引用类型包括"]],[1688,1688],[1694,1694]]],[1553778396718,["zyx@DESKTOP-60KJ218",[[-1,1688,"引用类型包括"]],[1694,1694],[1688,1688]]],[1553778400135,["zyx@DESKTOP-60KJ218",[[1,1688,"常用引用类型"]],[1688,1688],[1694,1694]]],[1553778408013,["zyx@DESKTOP-60KJ218",[[1,1694,"为数组,接口,类"]],[1694,1694],[1702,1702]]],[1553778408275,["zyx@DESKTOP-60KJ218",[[-1,1701,"类"]],[1702,1702],[1701,1701]]],[1553778409417,["zyx@DESKTOP-60KJ218",[[1,1701,"类"]],[1701,1701],[1702,1702]]],[1553778465921,["zyx@DESKTOP-60KJ218",[[1,1702,"(尤其是勒种的"]],[1702,1702],[1709,1709]]],[1553778467938,["zyx@DESKTOP-60KJ218",[[-1,1705,"是勒种的"]],[1709,1709],[1705,1705]]],[1553778473092,["zyx@DESKTOP-60KJ218",[[1,1705,"String类)"]],[1705,1705],[1713,1713]]],[1553778485757,["zyx@DESKTOP-60KJ218",[[1,1712,",最常见,最长考"]],[1712,1712],[1720,1720]]],[1553778493514,["zyx@DESKTOP-60KJ218",[[1,1722,"\n"]],[1721,1721],[1722,1722]]],[1553778527193,["zyx@DESKTOP-60KJ218",[[1,1688,"\n"]],[1688,1688],[1689,1689]]],[1553778528240,["zyx@DESKTOP-60KJ218",[[1,1688,"**在Java中类型可分为两大类:值类型与引用类型。**值类型就是基本数据类型(如int ,double 等),而引用类型,是指除了基本的变量类型之外的所有类型(如通过 class 定义的类型)。所有的类型在内存中都会分配一定的存储空间(形参在使用的时候也会分配存储空间,方法调用完成之后,这块存储空间自动消失), **基本的变量类型只有一块存储空间(分配在stack中), 而引用类型有两块存储空间(一块在stack中,一块在heap中)**,在函数调用时Java是传值还是传引用"]],[1688,1688],[1929,1929]]],[1553778532914,["zyx@DESKTOP-60KJ218",[[-1,1688,"**"]],[1690,1690],[1688,1688]]],[1553778534749,["zyx@DESKTOP-60KJ218",[[-1,1712,"**"]],[1714,1714],[1712,1712]]],[1553778536420,["zyx@DESKTOP-60KJ218",[[-1,1842,"**"]],[1844,1844],[1842,1842]]],[1553778538593,["zyx@DESKTOP-60KJ218",[[-1,1902,"**"]],[1904,1904],[1902,1902]]],[1553778543390,["zyx@DESKTOP-60KJ218",[[1,1921,"。"]],[1921,1921],[1922,1922]]],[1553778552139,["zyx@DESKTOP-60KJ218",[[-1,1745,","]],[1746,1746],[1745,1745]]],[1553778552864,["zyx@DESKTOP-60KJ218",[[1,1745,","]],[1745,1745],[1746,1746]]],[1553778577340,["zyx@DESKTOP-60KJ218",[[-1,1841," "]],[1842,1842],[1841,1841]]],[1553778578216,["zyx@DESKTOP-60KJ218",[[1,1841,","]],[1841,1841],[1842,1842]]],[1553778579426,["zyx@DESKTOP-60KJ218",[[-1,1840,",,"]],[1842,1842],[1840,1840]]],[1553778580397,["zyx@DESKTOP-60KJ218",[[1,1840,","]],[1840,1840],[1841,1841]]],[1553778605673,["zyx@DESKTOP-60KJ218",[[-1,1901,",在函数调用时Java是传值还是传引用。"]],[1902,1921],[1901,1901]]],[1553778606461,["zyx@DESKTOP-60KJ218",[[1,1901,"。"]],[1901,1901],[1902,1902]]],[1553778637097,["zyx@DESKTOP-60KJ218",[[1,1903,"\n"]],[1902,1902],[1903,1903]]],[1553778716944,["zyx@DESKTOP-60KJ218",[[1,1903,""]],[1903,1903],[1963,1963]]],[1553778722626,["zyx@DESKTOP-60KJ218",[[-1,1997,"\n"]],[1997,1997],[1996,1996]]],[1553778825779,["zyx@DESKTOP-60KJ218",[[1,1963,"\n"]],[1962,1962],[1963,1963]]],[1553778826234,["zyx@DESKTOP-60KJ218",[[1,1963,"**引用其实就像是一个对象的名字或者别名 (alias)**,一个对象在内存中会请求一块空间来保存数据,根据对象的大小,它可能需要占用的空间大小也不等。访问对象的时候,我们不会直接是访问对象在内存中的数据,而是通过引用去访问。引用也是一种数据类型,我们可以把它想象为类似 C++ 语言中指针的东西,它指示了对象在内存中的地址——只不过我们不能够观察到这个地址究竟是什么。\n\n如果我们定义了不止一个引用指向同一个对象,那么这些引用是不相同的,因为引用也是一种数据类型,需要一定的内存空间(stack,栈空间)来保存。但是它们的值是相同的,都指示同一个对象在内存(heap,堆空间)的中位置。"]],[1963,1963],[2257,2257]]],[1553778829226,["zyx@DESKTOP-60KJ218",[[-1,1963,"**"]],[1965,1965],[1963,1963]]],[1553778830866,["zyx@DESKTOP-60KJ218",[[-1,1989,"**"]],[1991,1991],[1989,1989]]],[1553778852780,["zyx@DESKTOP-60KJ218",[[-1,2254,"常用引用类型为数组,接口,类(尤其String类,最常见,最长考)"]],[2254,2287],[2254,2254]]],[1553778864983,["zyx@DESKTOP-60KJ218",[[1,1782,"常用引用类型为数组,接口,类(尤其String类,最常见,最长考)。"]],[1782,1782],[1816,1816]]],[1553779122281,["zyx@DESKTOP-60KJ218",[[1,1997,"**(1) 引用是一种数据类型(保存在stack中),保存了对象在内存(heap,堆空间)中的地址,这种类型即不是我们平时所说的简单数据类型也不是类实例(对象);**\n\n**(2) 不同的引用可能指向同一个对象,换句话说,一个对象可以有多个引用,即该类类型的变量。**"]],[1997,1997],[2131,2131]]],[1553779126242,["zyx@DESKTOP-60KJ218",[[-1,1997,"**("]],[2000,2000],[1997,1997]]],[1553779127329,["zyx@DESKTOP-60KJ218",[[-1,2075,"**"]],[2077,2077],[2075,2075]]],[1553779130834,["zyx@DESKTOP-60KJ218",[[-1,2077,"**("]],[2079,2079],[2077,2077]]],[1553779142954,["zyx@DESKTOP-60KJ218",[[-1,2121,"**"]],[2123,2123],[2121,2121]]],[1553779145883,["zyx@DESKTOP-60KJ218",[[-1,2076,"\n"]],[2076,2076],[2075,2075]]],[1553779147282,["zyx@DESKTOP-60KJ218",[[1,2120,"\n"]],[2120,2120],[2121,2121]]],[1553779149777,["zyx@DESKTOP-60KJ218",[[-1,2303,"\n"]],[2303,2303],[2302,2302]]],[1553779163613,["zyx@DESKTOP-60KJ218",[[1,1483,"\\"],[1,1567,"\\"],[1,1568,"\\"],[-1,1636,"\\"],[-1,1658,"\\"],[-1,2439,"\\"]],[2302,2302],[0,0]]],[1553779173964,["zyx@DESKTOP-60KJ218",[[-1,2440,"=="]],[2442,2442],[2440,2440]]],[1553779182346,["zyx@DESKTOP-60KJ218",[[1,1689,"\n"]],[1688,1688],[1689,1689]]],[1553779186610,["zyx@DESKTOP-60KJ218",[[1,1673,"\n"]],[1672,1672],[1673,1673]]],[1553779188074,["zyx@DESKTOP-60KJ218",[[1,1674,"\n"]],[1673,1673],[1674,1674]]],[1553779189887,["zyx@DESKTOP-60KJ218",[[-1,1674,"\n"]],[1674,1674],[1673,1673]]],[1553779192378,["zyx@DESKTOP-60KJ218",[[1,1482,"\n"]],[1481,1481],[1482,1482]]],[1553779193521,["zyx@DESKTOP-60KJ218",[[1,1436,"\n"]],[1436,1436],[1437,1437]]],[1553779195355,["zyx@DESKTOP-60KJ218",[[1,1342,"\n"]],[1341,1341],[1342,1342]]],[1553779196410,["zyx@DESKTOP-60KJ218",[[1,1275,"\n"]],[1275,1275],[1276,1276]]],[1553779198065,["zyx@DESKTOP-60KJ218",[[1,1116,"\n"]],[1116,1116],[1117,1117]]],[1553779199057,["zyx@DESKTOP-60KJ218",[[1,1175,"\n"]],[1174,1174],[1175,1175]]],[1553779200386,["zyx@DESKTOP-60KJ218",[[1,1018,"\n"]],[1018,1018],[1019,1019]]],[1553779201217,["zyx@DESKTOP-60KJ218",[[1,1063,"\n"]],[1062,1062],[1063,1063]]],[1553779203674,["zyx@DESKTOP-60KJ218",[[1,624,"\n"]],[624,624],[625,625]]],[1553779204609,["zyx@DESKTOP-60KJ218",[[1,677,"\n"]],[676,676],[677,677]]],[1553779207018,["zyx@DESKTOP-60KJ218",[[1,223,"\n"]],[223,223],[224,224]]],[1553779207921,["zyx@DESKTOP-60KJ218",[[1,279,"\n"]],[278,278],[279,279]]],[1553779209074,["zyx@DESKTOP-60KJ218",[[1,20,"\n"]],[20,20],[21,21]]],[1553779210027,["zyx@DESKTOP-60KJ218",[[-1,20,"\n"]],[21,21],[20,20]]],[1553779210931,["zyx@DESKTOP-60KJ218",[[1,44,"\n"]],[43,43],[44,44]]],[1553779224235,["zyx@DESKTOP-60KJ218",[[-1,2039,"了"]],[2040,2040],[2039,2039]]],[1553779225581,["zyx@DESKTOP-60KJ218",[[1,2039,"的"]],[2039,2039],[2040,2040]]],[1553779229513,["zyx@DESKTOP-60KJ218",[[-1,2039,"的"]],[2040,2040],[2039,2039]]],[1553779249066,["zyx@DESKTOP-60KJ218",[[1,2624,"\n"]],[2623,2623],[2624,2624]]],[1553779249618,["zyx@DESKTOP-60KJ218",[[1,2625,"\n"]],[2624,2624],[2625,2625]]],[1553779255068,["zyx@DESKTOP-60KJ218",[[1,2625,"**Q9.== 和 equals 的区别是什么?**"]],[2625,2625],[2651,2651]]],[1553779257673,["zyx@DESKTOP-60KJ218",[[-1,2628,"9"]],[2629,2629],[2628,2628]]],[1553779257955,["zyx@DESKTOP-60KJ218",[[1,2628,"10"]],[2628,2628],[2630,2630]]],[1553779293639,["zyx@DESKTOP-60KJ218",[[-1,2631,"== 和 equals 的区别是"],[1,2647,"java 中操作字符串都有哪些类?它们之间有"],[1,2649,"区别"]],[2631,2650],[2658,2658]]],[1553779296171,["zyx@DESKTOP-60KJ218",[[-1,2631,"j"]],[2632,2632],[2631,2631]]],[1553779296737,["zyx@DESKTOP-60KJ218",[[1,2631,"J"]],[2631,2631],[2632,2632]]],[1553779298874,["zyx@DESKTOP-60KJ218",[[1,2661,"\n"]],[2660,2660],[2661,2661]]],[1553779299995,["zyx@DESKTOP-60KJ218",[[1,2662,"\n"]],[2661,2661],[2662,2662]]],[1553779301269,["zyx@DESKTOP-60KJ218",[[-1,2662,"\n"],[1,2663,"S"]],[2662,2662],[2663,2663]]],[1553779314065,["zyx@DESKTOP-60KJ218",[[1,2663,"tring、StringBuffer、StringBUild"]],[2663,2663],[2693,2693]]],[1553779315723,["zyx@DESKTOP-60KJ218",[[-1,2689,"Uild"]],[2693,2693],[2689,2689]]],[1553779319114,["zyx@DESKTOP-60KJ218",[[1,2689,"uild类"]],[2689,2689],[2694,2694]]],[1553779325390,["zyx@DESKTOP-60KJ218",[[1,2662,"主要是"]],[2662,2662],[2665,2665]]],[1553779329242,["zyx@DESKTOP-60KJ218",[[1,2697,"。"]],[2697,2697],[2698,2698]]],[1553779348482,["zyx@DESKTOP-60KJ218",[[1,2698,"\n\n"]],[2698,2698],[2699,2699]]],[1553779348714,["zyx@DESKTOP-60KJ218",[[1,2699,"String 类是 final 类型的,因此不可以继承这个类、不能修改这个类。为了提高效 率节省空间,我们应该用 StringBuffer 类。:对于字符串常量,如果内容相同,Java 认为它们代表同 一个 String 对象。而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。"]],[2699,2699],[2848,2848]]],[1553779356404,["zyx@DESKTOP-60KJ218",[[-1,2738,"为了提高效 率节省空间,我们应该用 StringBuffer 类。:"]],[2738,2772],[2738,2738]]],[1553779357931,["zyx@DESKTOP-60KJ218",[[1,2815,"\n"]],[2814,2814],[2815,2815]]],[1553779358139,["zyx@DESKTOP-60KJ218",[[1,2815,"为了提高效 率节省空间,我们应该用 StringBuffer 类。:"]],[2815,2815],[2849,2849]]],[1553779393204,["zyx@DESKTOP-60KJ218",[[-1,2820," "]],[2821,2821],[2820,2820]]],[1553779397241,["zyx@DESKTOP-60KJ218",[[1,2815,"但是"]],[2815,2815],[2817,2817]]],[1553779404555,["zyx@DESKTOP-60KJ218",[[-1,2849,":"]],[2850,2850],[2849,2849]]],[1553779410603,["zyx@DESKTOP-60KJ218",[[1,2849,"StringBuffer"]],[2849,2849],[2861,2861]]],[1553779539315,["zyx@DESKTOP-60KJ218",[[1,2737,","]],[2737,2737],[2738,2738]]],[1553779545381,["zyx@DESKTOP-60KJ218",[[1,2738,"底层源码中有针对性"]],[2738,2738],[2747,2747]]],[1553779546187,["zyx@DESKTOP-60KJ218",[[-1,2746,"性"]],[2747,2747],[2746,2746]]],[1553779574417,["zyx@DESKTOP-60KJ218",[[1,2746,"String数据的修改方法,都是针对"]],[2746,2746],[2764,2764]]],[1553779575514,["zyx@DESKTOP-60KJ218",[[-1,2762,"针对"]],[2764,2764],[2762,2762]]],[1553779577325,["zyx@DESKTOP-60KJ218",[[1,2762,"创建"]],[2762,2762],[2764,2764]]],[1553779578108,["zyx@DESKTOP-60KJ218",[[-1,2762,"创建"]],[2764,2764],[2762,2762]]],[1553779581260,["zyx@DESKTOP-60KJ218",[[1,2762,"从新出强加个"]],[2762,2762],[2768,2768]]],[1553779582114,["zyx@DESKTOP-60KJ218",[[-1,2762,"从新出强加个"]],[2768,2768],[2762,2762]]],[1553779592732,["zyx@DESKTOP-60KJ218",[[1,2762,"重新创建了一个String对下几个"]],[2762,2762],[2779,2779]]],[1553779595502,["zyx@DESKTOP-60KJ218",[[-1,2775,"对下几个"]],[2779,2779],[2775,2775]]],[1553779600105,["zyx@DESKTOP-60KJ218",[[1,2775,"对象,"]],[2775,2775],[2778,2778]]],[1553779608801,["zyx@DESKTOP-60KJ218",[[1,2778,"而原来的String对象未曾改变"]],[2778,2778],[2794,2794]]],[1553779768300,["zyx@DESKTOP-60KJ218",[[1,2918,"县城噶"]],[2918,2918],[2921,2921]]],[1553779768755,["zyx@DESKTOP-60KJ218",[[-1,2918,"县城噶"]],[2921,2921],[2918,2918]]],[1553779778103,["zyx@DESKTOP-60KJ218",[[1,2918,"线程安全,效率低"]],[2918,2918],[2926,2926]]],[1553779792087,["zyx@DESKTOP-60KJ218",[[1,2926,",开销大,可以使用StringBuilder"]],[2926,2926],[2948,2948]]],[1553779809894,["zyx@DESKTOP-60KJ218",[[1,2884,"并且可以更改String类型"]],[2884,2884],[2898,2898]]],[1553779814071,["zyx@DESKTOP-60KJ218",[[1,2890,"对"]],[2890,2890],[2891,2891]]],[1553779819174,["zyx@DESKTOP-60KJ218",[[1,2899,"数据更改"]],[2899,2899],[2903,2903]]],[1553779824752,["zyx@DESKTOP-60KJ218",[[1,2901,"直接"]],[2901,2901],[2903,2903]]],[1553779828606,["zyx@DESKTOP-60KJ218",[[-1,2908,"应该"]],[2910,2910],[2908,2908]]],[1553779830906,["zyx@DESKTOP-60KJ218",[[1,2908,"可使用"]],[2908,2908],[2911,2911]]],[1553779834238,["zyx@DESKTOP-60KJ218",[[-1,2912," "]],[2913,2913],[2912,2912]]],[1553779840611,["zyx@DESKTOP-60KJ218",[[-1,2952,"可以"]],[2954,2954],[2952,2952]]],[1553779849117,["zyx@DESKTOP-60KJ218",[[1,2952,"因此可以改用"]],[2952,2952],[2958,2958]]],[1553779850643,["zyx@DESKTOP-60KJ218",[[-1,2958,"使用"]],[2960,2960],[2958,2958]]],[1553779872922,["zyx@DESKTOP-60KJ218",[[1,2971,"。StringBuilder县城不安全"]],[2971,2971],[2990,2990]]],[1553779876329,["zyx@DESKTOP-60KJ218",[[-1,2985,"县城不安全"]],[2990,2990],[2985,2985]]],[1553779881633,["zyx@DESKTOP-60KJ218",[[1,2985,"线程不安全,"]],[2985,2985],[2991,2991]]],[1553779887885,["zyx@DESKTOP-60KJ218",[[1,2944,"同步,"]],[2944,2944],[2947,2947]]],[1553779895625,["zyx@DESKTOP-60KJ218",[[1,2994,"异步社区"]],[2994,2994],[2998,2998]]],[1553779895964,["zyx@DESKTOP-60KJ218",[[-1,2996,"社区"]],[2998,2998],[2996,2996]]],[1553779896836,["zyx@DESKTOP-60KJ218",[[1,2996,","]],[2996,2996],[2997,2997]]],[1553779902295,["zyx@DESKTOP-60KJ218",[[1,2997,"效率高。"]],[2997,2997],[3001,3001]]],[1553779902812,["zyx@DESKTOP-60KJ218",[[-1,3000,"。"]],[3001,3001],[3000,3000]]],[1553779903935,["zyx@DESKTOP-60KJ218",[[1,3000,"。"]],[3000,3000],[3001,3001]]],[1553779905146,["zyx@DESKTOP-60KJ218",[[1,3002,"\n"]],[3001,3001],[3002,3002]]],[1553779906723,["zyx@DESKTOP-60KJ218",[[1,3003,"\n"]],[3002,3002],[3003,3003]]],[1553779908491,["zyx@DESKTOP-60KJ218",[[-1,3003,"\n"],[1,3004,"Q"]],[3003,3003],[3004,3004]]],[1553779912856,["zyx@DESKTOP-60KJ218",[[1,3004,"11.设么是"]],[3004,3004],[3010,3010]]],[1553779913459,["zyx@DESKTOP-60KJ218",[[-1,3007,"设么是"]],[3010,3010],[3007,3007]]],[1553779925281,["zyx@DESKTOP-60KJ218",[[1,3007,"什么是同步和异步?什么是县城"]],[3007,3007],[3021,3021]]],[1553779926155,["zyx@DESKTOP-60KJ218",[[-1,3019,"县城"]],[3021,3021],[3019,3019]]],[1553779930167,["zyx@DESKTOP-60KJ218",[[1,3019,"线程安全?"]],[3019,3019],[3024,3024]]],[1553779936771,["zyx@DESKTOP-60KJ218",[[1,3003,"**"],[1,3024,"**"]],[3003,3024],[3003,3028]]],[1553779957035,["zyx@DESKTOP-60KJ218",[[1,3028,"\n\n"]],[3028,3028],[3029,3029]]],[1553779957174,["zyx@DESKTOP-60KJ218",[[1,3030,"\n"]],[3029,3029],[3030,3030]]],[1553779957324,["zyx@DESKTOP-60KJ218",[[1,3030,"同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。"]],[3030,3030],[3100,3100]]],[1553779974003,["zyx@DESKTOP-60KJ218",[[1,3101,"\n"]],[3100,3100],[3101,3101]]],[1553779974148,["zyx@DESKTOP-60KJ218",[[1,3102,"\n"]],[3101,3101],[3102,3102]]],[1553779974507,["zyx@DESKTOP-60KJ218",[[1,3102,"异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。"]],[3102,3102],[3188,3188]]],[1553779995071,["zyx@DESKTOP-60KJ218",[[1,3100,"如打电话,通信双方不能断(我们是同时进行,同步),你一句我一句,这样的好处是,对方想表达的信息我马上能收到,但是,我在打着电话,我无法做别的事情。"]],[3100,3100],[3173,3173]]],[1553780016924,["zyx@DESKTOP-60KJ218",[[1,3261,"如收发收短信"]],[3261,3261],[3267,3267]]],[1553780029134,["zyx@DESKTOP-60KJ218",[[1,3267,"对方不用保证此刻我一定在手机旁,同时,我也不用时刻留意手机有没有来短信。这样的话,我看着视频,然后来了短信,我就处理短信(也可以不处理),接着再看视频。"]],[3267,3267],[3343,3343]]],[1553780030533,["zyx@DESKTOP-60KJ218",[[1,3267,","]],[3267,3267],[3268,3268]]],[1553780034540,["zyx@DESKTOP-60KJ218",[[1,3345,"\n"]],[3344,3344],[3345,3345]]],[1553780035063,["zyx@DESKTOP-60KJ218",[[1,3346,"\n"]],[3345,3345],[3346,3346]]],[1553780038935,["zyx@DESKTOP-60KJ218",[[-1,3346,"\n"],[1,3347,"线程安全"]],[3346,3346],[3350,3350]]],[1553780040240,["zyx@DESKTOP-60KJ218",[[1,3350,":"]],[3350,3350],[3351,3351]]],[1553780043347,["zyx@DESKTOP-60KJ218",[[-1,3177,","]],[3178,3178],[3177,3177]]],[1553780044002,["zyx@DESKTOP-60KJ218",[[1,3177,":"]],[3177,3177],[3178,3178]]],[1553780046016,["zyx@DESKTOP-60KJ218",[[-1,3032,","]],[3033,3033],[3032,3032]]],[1553780046655,["zyx@DESKTOP-60KJ218",[[1,3032,":"]],[3032,3032],[3033,3033]]],[1553780117138,["zyx@DESKTOP-60KJ218",[[1,3351,"一个类或者程序所提供的接口对于线程来说是[原子操作](https://baike.baidu.com/item/%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C)或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。\n\n线程安全问题大多是由[全局变量](https://baike.baidu.com/item/%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F)及[静态变量](https://baike.baidu.com/item/%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F)引起的,局部变量逃逸也可能导致线程安全问题。\n\n若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑[线程同步](https://baike.baidu.com/item/%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5),否则的话就可能影响线程安全。"]],[3351,3351],[3827,3827]]],[1553780164077,["zyx@DESKTOP-60KJ218",[[1,3351,"多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他操作,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。"]],[3351,3351],[3451,3451]]],[1553780172510,["zyx@DESKTOP-60KJ218",[[1,3927,"\n\n"]],[3927,3927],[3928,3928]]],[1553780173469,["zyx@DESKTOP-60KJ218",[[1,3929,"\n"]],[3928,3928],[3929,3929]]],[1553780183573,["zyx@DESKTOP-60KJ218",[[1,3929,"**Q11.什么是同步和异步?什么是线程安全?**"]],[3929,3929],[3954,3954]]],[1553780185508,["zyx@DESKTOP-60KJ218",[[-1,3933,"1"]],[3934,3934],[3933,3933]]],[1553780185657,["zyx@DESKTOP-60KJ218",[[1,3933,"2"]],[3933,3933],[3934,3934]]],[1553780364176,["zyx@DESKTOP-60KJ218",[[-1,3935,"什么是同步和异步?什么是线程安全"],[1,3951,"String str=\"i\"与 String str=new String(“i”)一样吗"]],[3935,3952],[3981,3981]]],[1553780365772,["zyx@DESKTOP-60KJ218",[[1,3984,"\n"]],[3983,3983],[3984,3984]]],[1553780366131,["zyx@DESKTOP-60KJ218",[[1,3985,"\n"]],[3984,3984],[3985,3985]]],[1553780397616,["zyx@DESKTOP-60KJ218",[[1,3985,"1. String s = new String(“hello”)会创建2(1)个对象,String s = “hello”创建1(0)个对象。 \n 注:当字符串常量池中有对象hello时括号内成立!\n2. 字符串如果是变量相加,先开空间,在拼接。\n3. 字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。"]],[3985,3985],[4158,4158]]],[1553780400388,["zyx@DESKTOP-60KJ218",[[-1,3985,"1. "]],[3988,3989],[3985,3985]]],[1553780405671,["zyx@DESKTOP-60KJ218",[[1,3993,"tr"],[-1,4054," "],[1,4055," "]],[3993,3993],[3995,3995]]],[1553780409496,["zyx@DESKTOP-60KJ218",[[1,4036,"tr"]],[4036,4036],[4038,4038]]],[1553780412250,["zyx@DESKTOP-60KJ218",[[-1,4010,"hello"],[1,4015,"i"]],[4010,4015],[4011,4011]]],[1553780414337,["zyx@DESKTOP-60KJ218",[[-1,4038,"hello"],[1,4043,"i"]],[4038,4043],[4039,4039]]],[1553780419030,["zyx@DESKTOP-60KJ218",[[-1,4052," "]],[4056,4056],[4052,4052]]],[1553780420621,["zyx@DESKTOP-60KJ218",[[-1,4078,"2. "]],[4082,4082],[4078,4078]]],[1553780421844,["zyx@DESKTOP-60KJ218",[[-1,4099,"3. "]],[4103,4103],[4099,4099]]],[1553780425573,["zyx@DESKTOP-60KJ218",[[1,4052,"=="],[1,4054,"=="]],[4052,4054],[4052,4058]]],[1553780439048,["zyx@DESKTOP-60KJ218",[[1,1673,"\\"]],[1673,1673],[1674,1674]]],[1553780442035,["zyx@DESKTOP-60KJ218",[[1,1654,"\\"]],[1654,1654],[1655,1655]]],[1553780443281,["zyx@DESKTOP-60KJ218",[[-1,1654,"\\"]],[1655,1655],[1654,1654]]],[1553780445189,["zyx@DESKTOP-60KJ218",[[-1,1673,"\\"]],[1674,1674],[1673,1673]]],[1553780447806,["zyx@DESKTOP-60KJ218",[[-1,1652,"=="]],[1654,1654],[1652,1652]]],[1553780451166,["zyx@DESKTOP-60KJ218",[[1,1652,"= ="]],[1652,1652],[1655,1655]]],[1553780453007,["zyx@DESKTOP-60KJ218",[[1,1675," "]],[1675,1675],[1676,1676]]],[1553780468197,["zyx@DESKTOP-60KJ218",[[-1,4057,":"]],[4058,4058],[4057,4057]]],[1553780473639,["zyx@DESKTOP-60KJ218",[[1,4059,":"]],[4059,4059],[4060,4060]]],[1553780491838,["zyx@DESKTOP-60KJ218",[[1,4145,"\n"]],[4144,4144],[4145,4145]]],[1553780492008,["zyx@DESKTOP-60KJ218",[[1,4145,"A==B 的判断为false;\n\n (b)A.equals(B)为true"]],[4145,4145],[4190,4190]]],[1553780497756,["zyx@DESKTOP-60KJ218",[[-1,4162," (b)"]],[4174,4174],[4162,4162]]],[1553780498199,["zyx@DESKTOP-60KJ218",[[-1,4161,"\n"]],[4162,4162],[4161,4161]]],[1553780505647,["zyx@DESKTOP-60KJ218",[[1,3947,"1"]],[3947,3947],[3948,3948]]],[1553780507607,["zyx@DESKTOP-60KJ218",[[1,3964,"2"]],[3964,3964],[3965,3965]]],[1553780509062,["zyx@DESKTOP-60KJ218",[[1,3999,"1"]],[3999,3999],[4000,4000]]],[1553780510696,["zyx@DESKTOP-60KJ218",[[1,4039,"2"]],[4039,4039],[4040,4040]]],[1553780515021,["zyx@DESKTOP-60KJ218",[[-1,3999,"1"]],[4000,4000],[3999,3999]]],[1553780515205,["zyx@DESKTOP-60KJ218",[[1,3999,"2"]],[3999,3999],[4000,4000]]],[1553780518655,["zyx@DESKTOP-60KJ218",[[-1,4039,"2"]],[4040,4040],[4039,4039]]],[1553780518782,["zyx@DESKTOP-60KJ218",[[1,4039,"1"]],[4039,4039],[4040,4040]]],[1553780524862,["zyx@DESKTOP-60KJ218",[[-1,4152,"B"],[1,4153,"str2"]],[4152,4154],[4157,4157]]],[1553780527942,["zyx@DESKTOP-60KJ218",[[-1,4149,"A"],[1,4150,"str1 "]],[4149,4150],[4154,4154]]],[1553780529549,["zyx@DESKTOP-60KJ218",[[-1,4172,"A"],[1,4173,"str1 "]],[4172,4173],[4177,4177]]],[1553780534188,["zyx@DESKTOP-60KJ218",[[-1,4185,"B"],[1,4186,"str2 "]],[4185,4186],[4190,4190]]],[1553780541973,["zyx@DESKTOP-60KJ218",[[-1,4088,"字符串如果是变量相加,先开空间,在拼接。\n字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。"]],[4088,4148],[4088,4088]]],[1553780544103,["zyx@DESKTOP-60KJ218",[[-1,4088,"\n"]],[4088,4088],[4087,4087]]],[1553780546559,["zyx@DESKTOP-60KJ218",[[1,4136,"\n"]],[4135,4135],[4136,4136]]],[1553780546676,["zyx@DESKTOP-60KJ218",[[1,4137,"\n"]],[4136,4136],[4137,4137]]],[1553780546942,["zyx@DESKTOP-60KJ218",[[1,4137,"字符串如果是变量相加,先开空间,在拼接。\n字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。"]],[4137,4137],[4197,4197]]],[1553780548997,["zyx@DESKTOP-60KJ218",[[1,4198,"\n"]],[4197,4197],[4198,4198]]],[1553780549150,["zyx@DESKTOP-60KJ218",[[1,4199,"\n"]],[4198,4198],[4199,4199]]],[1553780559838,["zyx@DESKTOP-60KJ218",[[-1,4137,"字符串如果是变量相加,先开空间,在拼接。\n字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。"]],[4137,4197],[4137,4137]]],[1553780564543,["zyx@DESKTOP-60KJ218",[[1,2874,"\n"]],[2873,2873],[2874,2874]]],[1553780566044,["zyx@DESKTOP-60KJ218",[[1,2874,"字符串如果是变量相加,先开空间,在拼接。\n字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。"]],[2874,2874],[2934,2934]]],[1553780567220,["zyx@DESKTOP-60KJ218",[[1,2935,"\n"]],[2934,2934],[2935,2935]]],[1553780569808,["zyx@DESKTOP-60KJ218",[[-1,2873,"\n"]],[2874,2874],[2873,2873]]],[1553780573248,["zyx@DESKTOP-60KJ218",[[-1,2893,"\n"]],[2894,2894],[2893,2893]]],[1553780589922,["zyx@DESKTOP-60KJ218",[[-1,4196,"\n\n\n\n"]],[0,4200],[0,0]]],[1553780599166,["zyx@DESKTOP-60KJ218",[[1,4196,"\n"]],[4195,4195],[4196,4196]]],[1553780599892,["zyx@DESKTOP-60KJ218",[[1,4197,"\n"]],[4196,4196],[4197,4197]]],[1553780602006,["zyx@DESKTOP-60KJ218",[[-1,4197,"\n"],[1,4198,"Q"]],[4197,4197],[4198,4198]]],[1553780615670,["zyx@DESKTOP-60KJ218",[[1,4198,"13.如何将字符串反转?"]],[4198,4198],[4210,4210]]],[1553780617587,["zyx@DESKTOP-60KJ218",[[1,4197,"**"],[1,4210,"**"]],[4197,4210],[4197,4214]]],[1553780619957,["zyx@DESKTOP-60KJ218",[[1,4214,"\n\n"]],[4214,4214],[4215,4215]]],[1553780639772,["zyx@DESKTOP-60KJ218",[[1,4197,"\n"]],[4196,4196],[4197,4197]]],[1553780641791,["zyx@DESKTOP-60KJ218",[[1,4197,"String 类的常用方法都有那些?"]],[4197,4197],[4215,4215]]],[1553780647300,["zyx@DESKTOP-60KJ218",[[1,4197,"q13"]],[4197,4197],[4200,4200]]],[1553780648941,["zyx@DESKTOP-60KJ218",[[-1,4223,"3"],[1,4224,"4"]],[4223,4224],[4224,4224]]],[1553780651282,["zyx@DESKTOP-60KJ218",[[1,4197,"**"],[1,4218,"**"]],[4197,4218],[4197,4222]]],[1553780652854,["zyx@DESKTOP-60KJ218",[[1,4223,"\n"]],[4222,4222],[4223,4223]]],[1553780653988,["zyx@DESKTOP-60KJ218",[[1,4224,"\n"]],[4223,4223],[4224,4224]]],[1553780656155,["zyx@DESKTOP-60KJ218",[[-1,4199,"q"]],[4200,4200],[4199,4199]]],[1553780657269,["zyx@DESKTOP-60KJ218",[[1,4199,"Q"]],[4199,4199],[4200,4200]]],[1553780660509,["zyx@DESKTOP-60KJ218",[[1,4202,"."]],[4202,4202],[4203,4203]]],[1553780665494,["zyx@DESKTOP-60KJ218",[[1,4226,"\n"]],[4225,4225],[4226,4226]]],[1553780731608,["zyx@DESKTOP-60KJ218",[[1,4225,"1、求字符串长度\n**public int length()**//返回该字符串的长度"]],[4225,4225],[4268,4268]]],[1553780743117,["zyx@DESKTOP-60KJ218",[[1,4270,"\n"]],[4268,4268],[4269,4269]]],[1553780755669,["zyx@DESKTOP-60KJ218",[[1,4269,"2、求字符串某一位置字符\n**public char charAt(int index)**//返回字符串中指定位置的字符;注意字符串中第一个字符索引是0,最后一个是length()-1。"]],[4269,4269],[4363,4363]]],[1553780758805,["zyx@DESKTOP-60KJ218",[[1,4365,"\n"]],[4363,4363],[4364,4364]]],[1553780769186,["zyx@DESKTOP-60KJ218",[[1,4364,"3、提取子串\n用String类的substring方法可以提取字符串中的子串,该方法有两种常用参数:\n1)**public String substring(int beginIndex)**//该方法从beginIndex位置起,从当前字符串中取出剩余的字符作为一个新的字符串返回。\n2)**public String substring(int beginIndex, int endIndex)**//该方法从beginIndex位置起,从当前字符串中取出到endIndex-1位置的字符作为一个新的字符串返回。"]],[4364,4364],[4623,4623]]],[1553780771428,["zyx@DESKTOP-60KJ218",[[1,4625,"\n"]],[4623,4623],[4624,4624]]],[1553780780496,["zyx@DESKTOP-60KJ218",[[1,4624,"4、字符串比较\n1)**public int compareTo(String anotherString)**//该方法是对字符串内容按字典顺序进行大小比较,通过返回的整数值指明当前字符串与参数字符串的大小关系。若当前对象比参数大则返回正整数,反之返回负整数,相等返回0。\n2)**public int compareToIgnore(String anotherString)**//与compareTo方法相似,但忽略大小写。\n3)**public boolean equals(Object anotherObject)**//比较当前字符串和参数字符串,在两个字符串相等的时候返回true,否则返回false。\n4)**public boolean equalsIgnoreCase(String anotherString)**//与equals方法相似,但忽略大小写。"]],[4624,4624],[5015,5015]]],[1553780786919,["zyx@DESKTOP-60KJ218",[[1,5017,"\n"]],[5015,5015],[5016,5016]]],[1553780794232,["zyx@DESKTOP-60KJ218",[[1,5016,"5、字符串连接\n**public String concat(String str)**//将参数中的字符串str连接到当前字符串的后面,效果等价于\"+\"。"]],[5016,5016],[5094,5094]]],[1553780795445,["zyx@DESKTOP-60KJ218",[[1,5096,"\n"]],[5094,5094],[5095,5095]]],[1553780802192,["zyx@DESKTOP-60KJ218",[[1,5095,"6、字符串中单个字符查找\n1)**public int indexOf(int ch/String str)**//用于查找当前字符串中字符或子串,返回字符或子串在当前字符串中从左边起首次出现的位置,若没有出现则返回-1。\n2)**public int indexOf(int ch/String str, int fromIndex)**//改方法与第一种类似,区别在于该方法从fromIndex位置向后查找。\n3)**public int lastIndexOf(int ch/String str)**//该方法与第一种类似,区别在于该方法从字符串的末尾位置向前查找。\n4)**public int lastIndexOf(int ch/String str, int fromIndex)**//该方法与第二种方法类似,区别于该方法从fromIndex位置向前查找。"]],[5095,5095],[5482,5482]]],[1553780811461,["zyx@DESKTOP-60KJ218",[[1,5484,"\n"]],[5482,5482],[5483,5483]]],[1553780811671,["zyx@DESKTOP-60KJ218",[[1,5483,"7、字符串中字符的大小写转换\n1)**public String toLowerCase()**//返回将当前字符串中所有字符转换成小写后的新串\n2)**public String toUpperCase()**//返回将当前字符串中所有字符转换成大写后的新串"]],[5483,5483],[5613,5613]]],[1553780826701,["zyx@DESKTOP-60KJ218",[[1,5615,"\n"]],[5613,5613],[5614,5614]]],[1553780826896,["zyx@DESKTOP-60KJ218",[[1,5614,"8、字符串中字符的替换\n1)**public String replace(char oldChar, char newChar)**//用字符newChar替换当前字符串中所有的oldChar字符,并返回一个新的字符串。\n2)**public String replaceFirst(String regex, String replacement)**//该方法用字符replacement的内容替换当前字符串中遇到的第一个和字符串regex相匹配的子串,应将新的字符串返回。\n3)**public String replaceAll(String regex, String replacement)**//该方法用字符replacement的内容替换当前字符串中遇到的所有和字符串regex相匹配的子串,应将新的字符串返回。"]],[5614,5614],[5980,5980]]],[1553780828629,["zyx@DESKTOP-60KJ218",[[1,5982,"\n"]],[5980,5980],[5981,5981]]],[1553780835005,["zyx@DESKTOP-60KJ218",[[1,5981,"9、其他类方法\n1)**String trim()**//截去字符串两端的空格,但对于中间的空格不处理。"]],[5981,5981],[6033,6033]]],[1553780843517,["zyx@DESKTOP-60KJ218",[[1,6035,"\n"]],[6033,6033],[6034,6034]]],[1553780843680,["zyx@DESKTOP-60KJ218",[[1,6034,"2)**boolean statWith(String prefix)**或**boolean endWith(String suffix)**//用来比较当前字符串的起始字符或子字符串prefix和终止字符或子字符串suffix是否和当前字符串相同,重载方法中同时还可以指定比较的开始位置offset。"]],[6034,6034],[6186,6186]]],[1553780851791,["zyx@DESKTOP-60KJ218",[[1,6188,"\n"]],[6186,6186],[6187,6187]]],[1553780851959,["zyx@DESKTOP-60KJ218",[[1,6187,"3)**regionMatches(boolean b, int firstStart, String other, int otherStart, int length)**//从当前字符串的firstStart位置开始比较,取长度为length的一个子字符串,other字符串从otherStart位置开始,指定另外一个长度为length的字符串,两字符串比较,当b为true时字符串不区分大小写。\n4)**contains(String** **str)**//判断参数s是否被包含在字符串中,并返回一个布尔类型的值。"]],[6187,6187],[6449,6449]]],[1553780866390,["zyx@DESKTOP-60KJ218",[[1,6451,"\n"]],[6449,6449],[6450,6450]]],[1553780866731,["zyx@DESKTOP-60KJ218",[[1,6450,"1、字符串转换为基本类型\njava.lang包中有Byte、Short、Integer、Float、Double类的调用方法:\n1)**public static byte parseByte(String s)**\n2)**public static short parseShort(String s)**\n3)**public static short parseInt(String s)**\n4)**public static long parseLong(String s)**\n5)**public static float parseFloat(String s)**\n6)**public static double parseDouble(String s)**"]],[6450,6450],[6791,6791]]],[1553780875206,["zyx@DESKTOP-60KJ218",[[-1,6450,"1"]],[6451,6451],[6450,6450]]],[1553780876583,["zyx@DESKTOP-60KJ218",[[1,6450,"10"]],[6450,6450],[6452,6452]]],[1553780894405,["zyx@DESKTOP-60KJ218",[[1,6793,"2、基本类型转换为字符串类型\nString类中提供了String valueOf()放法,用作基本类型转换为字符串类型。\n1)**static String valueOf(char data[])**\n2)**static String valueOf(char data[], int offset, int count)**\n3)**static String valueOf(boolean b)**\n4)**static String valueOf(char c)**\n5)**static String valueOf(int i)**\n6)**static String valueOf(long l)**\n7)**static String valueOf(float f)**\n8)**static String valueOf(double d)**"]],[6793,6793],[7179,7179]]],[1553780896334,["zyx@DESKTOP-60KJ218",[[-1,6793,"2"]],[6794,6794],[6793,6793]]],[1553780896635,["zyx@DESKTOP-60KJ218",[[1,6793,"11"]],[6793,6793],[6795,6795]]],[1553780904701,["zyx@DESKTOP-60KJ218",[[1,7181,"\n"]],[7180,7180],[7181,7181]]],[1553780905189,["zyx@DESKTOP-60KJ218",[[1,7181,"3、进制转换\n使用Long类中的方法得到整数之间的各种进制转换的方法:\nLong.toBinaryString(long l)\nLong.toOctalString(long l)\nLong.toHexString(long l)\nLong.toString(long l, int p)//p作为任意进制"]],[7181,7181],[7334,7334]]],[1553780907771,["zyx@DESKTOP-60KJ218",[[1,7181,"12"]],[7181,7181],[7183,7183]]],[1553780908920,["zyx@DESKTOP-60KJ218",[[-1,7183,"3"]],[7184,7184],[7183,7183]]],[1553780923390,["zyx@DESKTOP-60KJ218",[[1,7336,"\n"]],[7335,7335],[7336,7336]]],[1553781108677,["zyx@DESKTOP-60KJ218",[[1,7356,"\n"]],[7355,7355],[7356,7356]]],[1553781118678,["zyx@DESKTOP-60KJ218",[[1,7356,"```java\nimport java.util.Scanner;\n/**\n * 使用Java中的StringBuffer完成字符串的翻转\n * @author xuanxuan\n *\n */\npublic class ReverseString {\n\tpublic static void main(String[] args) {\n\t\tScanner in = new Scanner(System.in);\n\t\t//如果使用next()方法读取字符串时,读到空格就会停止,而使用nextLine()方法会读取空格\n\t\tString s = in.nextLine();\n\t\tSystem.out.println(ReverseString(s));\n\t\tin.close();\n\t}\n\t\n\tpublic static String ReverseString(String str) {\n\t\tStringBuffer bu = new StringBuffer();\n\t\tbu.append(str);\n\t\tString str1 = bu.reverse().toString();\n\t\treturn str1;\n\t}\n}\n```\n"]],[7356,7356],[7877,7877]]],[1553781127439,["zyx@DESKTOP-60KJ218",[[1,7877,"\n"]],[7877,7877],[7878,7878]]],[1553781196278,["zyx@DESKTOP-60KJ218",[[1,18,"jichu"]],[18,18],[23,23]]],[1553781197450,["zyx@DESKTOP-60KJ218",[[-1,18,"jichu"]],[23,23],[18,18]]],[1553781202053,["zyx@DESKTOP-60KJ218",[[1,18,"超基础篇"]],[18,18],[22,22]]],[1553781203017,["zyx@DESKTOP-60KJ218",[[-1,21,"篇"]],[22,22],[21,21]]],[1553781204639,["zyx@DESKTOP-60KJ218",[[1,21,"部分"]],[21,21],[23,23]]],[1553781207223,["zyx@DESKTOP-60KJ218",[[-1,18,"超"]],[19,19],[18,18]]],[1553781217671,["zyx@DESKTOP-60KJ218",[[1,7881,"**Q14.如何将字符串反转?**"]],[7881,7881],[7898,7898]]],[1553781219927,["zyx@DESKTOP-60KJ218",[[-1,7885,"4"]],[7886,7886],[7885,7885]]],[1553781220056,["zyx@DESKTOP-60KJ218",[[1,7885,"5"]],[7885,7885],[7886,7886]]],[1553781238702,["zyx@DESKTOP-60KJ218",[[-1,7887,"如何将字符串反转"],[1,7895,"final 在 java 中有什么作用"]],[7887,7896],[7907,7907]]],[1553781241463,["zyx@DESKTOP-60KJ218",[[1,7910,"\n"]],[7909,7909],[7910,7910]]],[1553781254843,["zyx@DESKTOP-60KJ218",[[1,7910,"final 修饰的类叫最终类,该类不能被继承。\n\nfinal 修饰的方法不能被重写。\n\nfinal 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。\n\n使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容 还是可以改变的。"]],[7910,7910],[8045,8045]]],[1553781256589,["zyx@DESKTOP-60KJ218",[[-1,7934,"\n"]],[7934,7934],[7933,7933]]],[1553781257208,["zyx@DESKTOP-60KJ218",[[-1,7952,"\n"]],[7952,7952],[7951,7951]]],[1553781257943,["zyx@DESKTOP-60KJ218",[[-1,7989,"\n"]],[7989,7989],[7988,7988]]],[1553781261022,["zyx@DESKTOP-60KJ218",[[1,8043,"\n"]],[8042,8042],[8043,8043]]],[1553781261638,["zyx@DESKTOP-60KJ218",[[1,8044,"\n"]],[8043,8043],[8044,8044]]],[1553781264319,["zyx@DESKTOP-60KJ218",[[1,7910,"\n"]],[7909,7909],[7910,7910]]],[1553781265687,["zyx@DESKTOP-60KJ218",[[1,8046,"\n"]],[8044,8044],[8045,8045]]],[1553781289394,["zyx@DESKTOP-60KJ218",[[1,8046,"java 中的 Math.round(-1.5) 等于多少?"]],[8046,8046],[8076,8076]]],[1553781292971,["zyx@DESKTOP-60KJ218",[[1,8046,"Q16."]],[8046,8046],[8050,8050]]],[1553781297118,["zyx@DESKTOP-60KJ218",[[1,8046,"**"],[1,8080,"**"]],[8046,8080],[8046,8084]]],[1553781300158,["zyx@DESKTOP-60KJ218",[[1,8046,"\n"]],[8045,8045],[8046,8046]]],[1553781301192,["zyx@DESKTOP-60KJ218",[[-1,8046,"\n"]],[8046,8046],[8045,8045]]],[1553781302126,["zyx@DESKTOP-60KJ218",[[-1,8045,"\n"]],[8045,8045],[8044,8044]]],[1553781303823,["zyx@DESKTOP-60KJ218",[[1,8084,"\n"]],[8083,8083],[8084,8084]]],[1553781304856,["zyx@DESKTOP-60KJ218",[[1,8085,"\n"]],[8084,8084],[8085,8085]]],[1553781313782,["zyx@DESKTOP-60KJ218",[[1,8085,"Ceil向上取整,floor向下取整。Round先对一个树+0.5,然后向下取整"]],[8085,8085],[8125,8125]]],[1553781316550,["zyx@DESKTOP-60KJ218",[[1,8126,"\n"]],[8125,8125],[8126,8126]]],[1553781317415,["zyx@DESKTOP-60KJ218",[[1,8127,"\n"]],[8126,8126],[8127,8127]]],[1553781331269,["zyx@DESKTOP-60KJ218",[[1,8125,"。因此这个表达式的值为-1"]],[8125,8125],[8138,8138]]],[1553781333656,["zyx@DESKTOP-60KJ218",[[1,8141,"\n"]],[8138,8138],[8139,8139]]],[1553781334560,["zyx@DESKTOP-60KJ218",[[1,8142,"\n"]],[8139,8139],[8140,8140]]],[1553781380274,["zyx@DESKTOP-60KJ218",[[1,8140,"是否可以从一个 static 方法内部发出对非 static 方法的调用?"]],[8140,8140],[8177,8177]]],[1553781384436,["zyx@DESKTOP-60KJ218",[[1,8140,"Q17."]],[8140,8140],[8144,8144]]],[1553781386928,["zyx@DESKTOP-60KJ218",[[1,8140,"**"],[1,8181,"**"]],[8140,8181],[8140,8185]]],[1553781388999,["zyx@DESKTOP-60KJ218",[[1,8188,"\n"]],[8186,8186],[8187,8187]]],[1553781396247,["zyx@DESKTOP-60KJ218",[[1,8187,"不可以。因为非 static 方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对 象上进行方法调用,而 static 方法调用时不需要创建对象,可以直接调用。也就是说,当一 个 static 方法被调用时,可能还没有创建任何实例对象,如果从一个 static 方法中发出对非 static 方法的调用,那个非 static 方法是关联到哪个对象上的呢?这个逻辑无法成立,所以, 一个 static 方法内部发出对非 static 方法的调用。/"]],[8187,8187],[8414,8414]]],[1553781396550,["zyx@DESKTOP-60KJ218",[[1,8416,"\n"]],[8414,8414],[8415,8415]]],[1553781397087,["zyx@DESKTOP-60KJ218",[[1,8417,"\n"]],[8415,8415],[8416,8416]]],[1553781399204,["zyx@DESKTOP-60KJ218",[[1,8416,"去8"]],[8416,8416],[8418,8418]]],[1553781400107,["zyx@DESKTOP-60KJ218",[[-1,8417,"8"]],[8418,8418],[8417,8417]]],[1553781426819,["zyx@DESKTOP-60KJ218",[[1,8416,"Q18.Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型?"]],[8416,8416],[8471,8471]]],[1553781429231,["zyx@DESKTOP-60KJ218",[[1,8416,"**"],[1,8471,"**"]],[8416,8471],[8416,8475]]],[1553781431158,["zyx@DESKTOP-60KJ218",[[1,8477,"\n"]],[8475,8475],[8476,8476]]],[1553781431623,["zyx@DESKTOP-60KJ218",[[1,8478,"\n"]],[8476,8476],[8477,8477]]],[1553781442870,["zyx@DESKTOP-60KJ218",[[1,8477,"Overload是重载的意思,Override是覆盖的意思,也就是重写。\n\n重载 Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。\n\n重写 Override 表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。\n\nl 子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。\n\nl 子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是 private 类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。\n\n如果几个 Overloaded 的方法的参数列表不一样,它们的返回者类型当然也可以不一样。如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载 Overload?\n\n这是不行的,我们可以用反证法来说明这个问题, 因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如,我们调用 map.remove(key)方法时,虽然 remove 方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java 就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。 override 可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法 进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外, 我们在继承中也可能会在子类覆盖父类中的方法。\n\n在覆盖要注意以下的几点:\n\n1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;\n\n2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;\n\n3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;\n\n4、被覆盖的方法不能为 private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。\n\noverload 对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM 就会根据不同的参数样式,来选择合适的方法执行。在使用重载要注意以下的几点:\n\n1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是 fun(int,float), 但是不能为 fun(int,int)); 2、不能通过访问权限、返回类型、抛出的异常进行重载;\n\n3、方法的异常类型和数目不会对重载造成影响;\n\n4、对于继承来说,如果某一方法在父类中是访问权限是 priavte,那么就不能在子类对其进 行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。"]],[8477,8477],[9825,9825]]],[1553781450239,["zyx@DESKTOP-60KJ218",[[-1,8694,"l "]],[8696,8696],[8694,8694]]],[1553781451390,["zyx@DESKTOP-60KJ218",[[-1,8765,"l "]],[8767,8767],[8765,8765]]],[1553781520594,[null,[[-1,8475,"去"],[1,8476,"\n"],[-1,9821,"\n"]],[8475,8475],[9821,9821]]],[1553781520594,[null,[[1,8475,"去"],[-1,8475,"\n"],[1,9821,"\n"]],[9821,9821],[8475,8475]]],[1553781462423,["zyx@DESKTOP-60KJ218",[[1,9823,"\n"]],[9822,9822],[9823,9823]]],[1553781484838,["zyx@DESKTOP-60KJ218",[[1,9823,"**Q18.Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型?**"]],[9823,9823],[9882,9882]]],[1553781486912,["zyx@DESKTOP-60KJ218",[[-1,9827,"8"]],[9828,9828],[9827,9827]]],[1553781487152,["zyx@DESKTOP-60KJ218",[[1,9827,"9"]],[9827,9827],[9828,9828]]],[1553781501708,["zyx@DESKTOP-60KJ218",[[-1,9829,"Overload 和 O"],[1,9841,"构造器 Constructor 是否可被 o"],[-1,9848," 的区别。Overloaded 的方法是否可以改变返回值的类型"],[1,9879,"?"]],[9829,9879],[9859,9859]]],[1553781503904,["zyx@DESKTOP-60KJ218",[[-1,9859,"?"]],[9859,9859],[9858,9858]]],[1553781504631,["zyx@DESKTOP-60KJ218",[[1,9862,"\n"]],[9861,9861],[9862,9862]]],[1553781505406,["zyx@DESKTOP-60KJ218",[[1,9863,"\n"]],[9862,9862],[9863,9863]]],[1553781511139,["zyx@DESKTOP-60KJ218",[[1,9863,"构造器 Constructor 不能被继承,因此不能重写 Override,但可以被重载 Overload。"]],[9863,9863],[9917,9917]]],[1553781512053,["zyx@DESKTOP-60KJ218",[[1,9918,"\n"]],[9917,9917],[9918,9918]]],[1553781512791,["zyx@DESKTOP-60KJ218",[[1,9919,"\n"]],[9918,9918],[9919,9919]]],[1553781515545,["zyx@DESKTOP-60KJ218",[[1,9919,"**Q19.构造器 Constructor 是否可被 override?**"]],[9919,9919],[9957,9957]]],[1553781517361,["zyx@DESKTOP-60KJ218",[[-1,9922,"19"],[1,9924,"2"]],[9922,9924],[9923,9923]]],[1553781517886,["zyx@DESKTOP-60KJ218",[[1,9923,"0"]],[9923,9923],[9924,9924]]],[1553781580630,[null,[[-1,8475,"去"],[1,8476,"\n"],[-1,9958,"\n"]],[8475,8475],[9958,9958]]],[1553781580631,[null,[[1,8475,"去"],[-1,8475,"\n"],[1,9958,"\n"]],[9958,9958],[8475,8475]]],[1553781536421,["zyx@DESKTOP-60KJ218",[[-1,9925,"构造器 Constructor 是否可被 override?"],[1,9955,"接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可 继承具体类(concrete class)?抽象类中是否可以有静态的 main 方法?"]],[9925,9955],[10008,10008]]],[1553781538438,["zyx@DESKTOP-60KJ218",[[1,10011,"\n"]],[10010,10010],[10011,10011]]],[1553781539764,["zyx@DESKTOP-60KJ218",[[1,10012,"\n"]],[10011,10011],[10012,10012]]],[1553781574948,["zyx@DESKTOP-60KJ218",[[1,10012,"接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类中 可以有静态的 main 方法。"]],[10012,10012],[10074,10074]]],[1553781640660,[null,[[-1,8475,"去"],[1,8476,"\n"],[-1,10075,"\n"]],[8475,8475],[10075,10075]]],[1553781640660,[null,[[1,8475,"去"],[-1,8475,"\n"],[1,10075,"\n"]],[10075,10075],[8475,8475]]],[1553781581157,["zyx@DESKTOP-60KJ218",[[1,10074,"只有记住抽象类与普通类的唯一区别:就是不能创建实例对象和允许有 abstract 方法。"]],[10074,10074],[10118,10118]]],[1553781586126,["zyx@DESKTOP-60KJ218",[[-1,10074,"只有记住"]],[10078,10078],[10074,10074]]],[1553781587919,["zyx@DESKTOP-60KJ218",[[1,10115,"\n"]],[10114,10114],[10115,10115]]],[1553781588353,["zyx@DESKTOP-60KJ218",[[1,10116,"\n"]],[10115,10115],[10116,10116]]],[1553781614357,["zyx@DESKTOP-60KJ218",[[1,10116,"java 中实现多态的机制是什么?"]],[10116,10116],[10133,10133]]],[1553781617658,["zyx@DESKTOP-60KJ218",[[1,10116,"Q21."]],[10116,10116],[10120,10120]]],[1553781621906,["zyx@DESKTOP-60KJ218",[[1,10116,"**"],[1,10137,"**"]],[10116,10137],[10116,10141]]],[1553781622983,["zyx@DESKTOP-60KJ218",[[1,10142,"\n"]],[10141,10141],[10142,10142]]],[1553781628852,["zyx@DESKTOP-60KJ218",[[1,10142,"靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方 法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运 行的那个对象的方法,而不是引用变量的类型中定义的方法。"]],[10142,10142],[10251,10251]]],[1553781630254,["zyx@DESKTOP-60KJ218",[[1,10252,"\n"]],[10251,10251],[10252,10252]]],[1553781630416,["zyx@DESKTOP-60KJ218",[[1,10253,"\n"]],[10252,10252],[10253,10253]]],[1553781633974,["zyx@DESKTOP-60KJ218",[[1,10253,"**Q21.java 中实现多态的机制是什么?**"]],[10253,10253],[10278,10278]]],[1553781636292,["zyx@DESKTOP-60KJ218",[[-1,10257,"1"],[1,10258,"2"]],[10257,10258],[10258,10258]]],[1553781638398,["zyx@DESKTOP-60KJ218",[[1,10279,"\n"]],[10278,10278],[10279,10279]]],[1553781639135,["zyx@DESKTOP-60KJ218",[[1,10280,"\n"]],[10279,10279],[10280,10280]]],[1553781640502,["zyx@DESKTOP-60KJ218",[[1,10142,"\n"]],[10141,10141],[10142,10142]]],[1553781700669,[null,[[-1,8475,"去"],[1,8476,"\n"],[-1,10279,"\n"]],[8475,8475],[10279,10279]]],[1553781700669,[null,[[1,8475,"去"],[-1,8475,"\n"],[1,10279,"\n"]],[10279,10279],[8475,8475]]],[1553781641710,["zyx@DESKTOP-60KJ218",[[1,10282,"\n"]],[10280,10280],[10281,10281]]],[1553782120681,[null,[[-1,8475,"去"],[1,8476,"\n"],[-1,10279,"\n"]],[8475,8475],[10279,10279]]],[1553782120681,[null,[[1,8475,"去"],[-1,8475,"\n"],[1,10279,"\n"]],[10279,10279],[8475,8475]]],[1553782093736,["zyx@DESKTOP-60KJ218",[[-1,10260,"j"]],[10261,10261],[10260,10260]]],[1553782094111,["zyx@DESKTOP-60KJ218",[[1,10260,"J"]],[10260,10260],[10261,10261]]],[1553782098822,["zyx@DESKTOP-60KJ218",[[-1,10122,"j"]],[10123,10123],[10122,10122]]],[1553782099239,["zyx@DESKTOP-60KJ218",[[1,10122,"J"]],[10122,10122],[10123,10123]]],[1553782104783,["zyx@DESKTOP-60KJ218",[[1,10283,"\n"]],[10280,10280],[10281,10281]]],[1553782180663,[null,[[-1,8475,"去"],[1,8476,"\n"],[-1,10279,"\n"]],[8475,8475],[10279,10279]]],[1553782180663,[null,[[1,8475,"去"],[-1,8475,"\n"],[1,10279,"\n"]],[10279,10279],[8475,8475]]],[1553782145263,["zyx@DESKTOP-60KJ218",[[1,9919,"\n"]],[9917,9917],[9918,9918]]],[1553782145856,["zyx@DESKTOP-60KJ218",[[1,9920,"\n"]],[9918,9918],[9919,9919]]],[1553782147016,["zyx@DESKTOP-60KJ218",[[1,9919,"abstract class 和 interface 有什么区别?"]],[9919,9919],[9952,9952]]],[1553782155779,["zyx@DESKTOP-60KJ218",[[1,9919,"Q20."]],[9919,9919],[9923,9923]]],[1553782158687,["zyx@DESKTOP-60KJ218",[[1,9919,"**"],[1,9956,"**"]],[9919,9956],[9919,9960]]],[1553782161662,["zyx@DESKTOP-60KJ218",[[-1,9966,"0"]],[9967,9967],[9966,9966]]],[1553782161762,["zyx@DESKTOP-60KJ218",[[1,9966,"1"]],[9966,9966],[9967,9967]]],[1553782164826,["zyx@DESKTOP-60KJ218",[[-1,10163,"1"]],[10164,10164],[10163,10163]]],[1553782164973,["zyx@DESKTOP-60KJ218",[[1,10163,"2"]],[10163,10163],[10164,10164]]],[1553782167127,["zyx@DESKTOP-60KJ218",[[1,9962,"\n"]],[9960,9960],[9961,9961]]],[1553782167487,["zyx@DESKTOP-60KJ218",[[1,9963,"\n"]],[9961,9961],[9962,9962]]],[1553782179148,["zyx@DESKTOP-60KJ218",[[1,9962,"Abstract:\n\nl 含有 abstract 修饰符的 class 即为抽象类,abstract 类不能创建的实例对象。\n\nl 含有 abstract 方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。\n\nl 如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为 abstract 类型。\n\n接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。\n\n接口中的方法定义默认为 public abstract 类型,接口中的成员变量类型默认为public static final。\n\n两者区别:\n\n抽象类可以有构造方法,接口中不能有构造方法。 2.抽象类中可以有普通成员变量,接口中没有普通成员变量 3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象 的普通方法。 4\\. 抽象类中的抽象方法的访问类型可以是 public,protected 和(默认类型,虽然 eclipse 下不报错,但应该也不行),但接口中的抽象方法只能是 public 类型的,并且默认即 为 public abstract 类型。 5\\. 抽象类中可以包含静态方法,接口中不能包含静态方法 6\\. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任 意,但接口中定义的变量只能是 public static final 类型,并且默认即为 public static final 类 型。 7\\. 一个类可以实现多个接口,但只能继承一个抽象类。"]],[9962,9962],[10713,10713]]],[1553782240685,[null,[[-1,8475,"去"],[1,8476,"\n"],[-1,11075,"\n"]],[8475,8475],[11075,11075]]],[1553782240685,[null,[[1,8475,"去"],[-1,8475,"\n"],[1,11075,"\n"]],[11075,11075],[8475,8475]]],[1553782181968,["zyx@DESKTOP-60KJ218",[[-1,9973,"l "]],[9975,9975],[9973,9973]]],[1553782182679,["zyx@DESKTOP-60KJ218",[[-1,10024,"l "]],[10026,10026],[10024,10024]]],[1553782183894,["zyx@DESKTOP-60KJ218",[[-1,10151,"l "]],[10153,10153],[10151,10151]]],[1553782191705,["zyx@DESKTOP-60KJ218",[[1,9973,"* "],[1,10023,"* "],[1,10024,"* "],[1,10150,"* "],[1,10151,"* "]],[9973,10196],[9975,10206]]],[1553782195833,["zyx@DESKTOP-60KJ218",[[-1,10156,"* "]],[10158,10158],[10156,10156]]],[1553782196441,["zyx@DESKTOP-60KJ218",[[-1,10156,"\n"]],[10156,10156],[10155,10155]]],[1553782197392,["zyx@DESKTOP-60KJ218",[[-1,10025,"* "]],[10027,10027],[10025,10025]]],[1553782197960,["zyx@DESKTOP-60KJ218",[[-1,10025,"\n"]],[10025,10025],[10024,10024]]],[1553782200982,["zyx@DESKTOP-60KJ218",[[-1,9972,"\n"]],[9972,9972],[9971,9971]]],[1553782205426,["zyx@DESKTOP-60KJ218",[[-1,10245,"\n"]],[10245,10245],[10244,10244]]],[1553782207435,["zyx@DESKTOP-60KJ218",[[-1,10317,"\n"]],[10317,10317],[10316,10316]]],[1553782213542,["zyx@DESKTOP-60KJ218",[[1,10317,"1."]],[10317,10317],[10319,10319]]],[1553782214951,["zyx@DESKTOP-60KJ218",[[1,10342,"\n"]],[10342,10342],[10343,10343]]],[1553782216680,["zyx@DESKTOP-60KJ218",[[1,10371,"\n"]],[10371,10371],[10372,10372]]],[1553782218664,["zyx@DESKTOP-60KJ218",[[1,10420,"\n"]],[10420,10420],[10421,10421]]],[1553782220985,["zyx@DESKTOP-60KJ218",[[-1,10423,"\\"]],[10424,10424],[10423,10423]]],[1553782222079,["zyx@DESKTOP-60KJ218",[[-1,10421," "]],[10422,10422],[10421,10421]]],[1553782224375,["zyx@DESKTOP-60KJ218",[[-1,10422,". "]],[10424,10424],[10422,10422]]],[1553782226336,["zyx@DESKTOP-60KJ218",[[1,10422,"."]],[10422,10422],[10423,10423]]],[1553782229279,["zyx@DESKTOP-60KJ218",[[1,10541,"\n"]],[10541,10541],[10542,10542]]],[1553782231848,["zyx@DESKTOP-60KJ218",[[-1,10543,"\\."]],[10544,10545],[10543,10543]]],[1553782232799,["zyx@DESKTOP-60KJ218",[[1,10543,"."]],[10543,10543],[10544,10544]]],[1553782235512,["zyx@DESKTOP-60KJ218",[[-1,10544," "]],[10545,10545],[10544,10544]]],[1553782238959,["zyx@DESKTOP-60KJ218",[[-1,10570,"\\"]],[10570,10571],[10570,10570]]],[1553782239775,["zyx@DESKTOP-60KJ218",[[-1,10571," "]],[10572,10572],[10571,10571]]],[1553782300670,[null,[[-1,8475,"去"],[1,8476,"\n"],[-1,11069,"\n"]],[8475,8475],[11069,11069]]],[1553782300670,[null,[[1,8475,"去"],[-1,8475,"\n"],[1,11069,"\n"]],[11069,11069],[8475,8475]]],[1553782240936,["zyx@DESKTOP-60KJ218",[[1,10569,"\n"]],[10569,10569],[10570,10570]]],[1553782243687,["zyx@DESKTOP-60KJ218",[[-1,10680," "]],[10681,10681],[10680,10680]]],[1553782244368,["zyx@DESKTOP-60KJ218",[[1,10680,"\n"]],[10680,10680],[10681,10681]]],[1553782246247,["zyx@DESKTOP-60KJ218",[[-1,10682,"\\. "]],[10685,10685],[10682,10682]]],[1553782247218,["zyx@DESKTOP-60KJ218",[[1,10682,"."]],[10682,10682],[10683,10683]]],[1553782300078,["zyx@DESKTOP-60KJ218",[[-1,11049,"Java 中实现多态的机制是什么"],[1,11065,"说出一些常用的类,包,接口,请各举 5 个"]],[11049,11065],[11070,11070]]],[1553782360672,[null,[[-1,8475,"去"],[1,8476,"\n"],[-1,11073,"\n"]],[8475,8475],[11073,11073]]],[1553782360672,[null,[[1,8475,"去"],[-1,8475,"\n"],[1,11073,"\n"]],[11073,11073],[8475,8475]]],[1553782302913,["zyx@DESKTOP-60KJ218",[[1,11078,"\n"]],[11074,11074],[11075,11075]]],[1553782310786,["zyx@DESKTOP-60KJ218",[[1,11075,"常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer java.util.Date,System,Class,List,HashMap\n\n常用的包:java.lang java.io java.util java.sql,javax.servlet,org.hibernate\n\n常用的接口:Remote List Map Document NodeList,Servlet,HttpServletRequest,HttpServletResponse,Transaction(Hibernate)、 Session(Hibernate),HttpSession"]],[11075,11075],[11401,11401]]],[1553782313722,["zyx@DESKTOP-60KJ218",[[-1,11290," "]],[11291,11291],[11290,11290]]],[1553782316092,["zyx@DESKTOP-60KJ218",[[1,11290," "]],[11290,11290],[11291,11291]]],[1553782319562,["zyx@DESKTOP-60KJ218",[[-1,11259,"\n"]],[11259,11259],[11258,11258]]],[1553782320467,["zyx@DESKTOP-60KJ218",[[-1,11188,"\n"]],[11188,11188],[11187,11187]]],[1553782322161,["zyx@DESKTOP-60KJ218",[[1,11403,"\n"]],[11400,11400],[11401,11401]]],[1553782325625,["zyx@DESKTOP-60KJ218",[[1,11401,"**Q22.说出一些常用的类,包,接口,请各举 5 个?**"]],[11401,11401],[11431,11431]]],[1553782327361,["zyx@DESKTOP-60KJ218",[[-1,11405,"2"]],[11406,11406],[11405,11405]]],[1553782327523,["zyx@DESKTOP-60KJ218",[[1,11405,"2"]],[11405,11405],[11406,11406]]],[1553782328929,["zyx@DESKTOP-60KJ218",[[-1,11405,"2"]],[11406,11406],[11405,11405]]],[1553782329095,["zyx@DESKTOP-60KJ218",[[1,11405,"3"]],[11405,11405],[11406,11406]]],[1553782420695,[null,[[-1,8475,"去"],[1,8476,"\n"],[-1,11431,"\n"]],[8475,8475],[11431,11431]]],[1553782420695,[null,[[1,8475,"去"],[-1,8475,"\n"],[1,11431,"\n"]],[11431,11431],[8475,8475]]],[1553782361287,["zyx@DESKTOP-60KJ218",[[-1,11401,"**Q23.说出一些常用的类,包,接口,请各举 5 个?**"]],[11401,11431],[11401,11401]]],[1553782361935,["zyx@DESKTOP-60KJ218",[[-1,11403,"\n"]],[11401,11401],[11400,11400]]],[1553782373160,["zyx@DESKTOP-60KJ218",[[1,11401,"### Q&S基础部分"]],[11401,11401],[11412,11412]]],[1553782375334,["zyx@DESKTOP-60KJ218",[[-1,11408,"基础"]],[11410,11410],[11408,11408]]],[1553782376351,["zyx@DESKTOP-60KJ218",[[1,11408,"JIHE"]],[11408,11408],[11412,11412]]],[1553782378296,["zyx@DESKTOP-60KJ218",[[-1,11408,"JIHE"]],[11412,11412],[11408,11408]]],[1553782379722,["zyx@DESKTOP-60KJ218",[[1,11408,"集合"]],[11408,11408],[11410,11410]]],[1553782381217,["zyx@DESKTOP-60KJ218",[[1,11414,"\n"]],[11412,11412],[11413,11413]]],[1553782381416,["zyx@DESKTOP-60KJ218",[[1,11415,"\n"]],[11413,11413],[11414,11414]]],[1553782381946,["zyx@DESKTOP-60KJ218",[[1,11414,"### Q&S基础部分"]],[11414,11414],[11425,11425]]],[1553782384115,["zyx@DESKTOP-60KJ218",[[-1,11421,"基础"]],[11423,11423],[11421,11421]]],[1553782385772,["zyx@DESKTOP-60KJ218",[[1,11421,"线程"]],[11421,11421],[11423,11423]]],[1553782387007,["zyx@DESKTOP-60KJ218",[[1,11427,"\n"]],[11425,11425],[11426,11426]]],[1553782387223,["zyx@DESKTOP-60KJ218",[[1,11428,"\n"]],[11426,11426],[11427,11427]]],[1553782387976,["zyx@DESKTOP-60KJ218",[[1,11427,"### Q&S基础部分"]],[11427,11427],[11438,11438]]],[1553782403810,["zyx@DESKTOP-60KJ218",[[-1,11434,"基础"]],[11436,11436],[11434,11434]]],[1553782407019,["zyx@DESKTOP-60KJ218",[[1,11434,"反射"]],[11434,11434],[11436,11436]]],[1553782408128,["zyx@DESKTOP-60KJ218",[[1,11440,"\n"]],[11438,11438],[11439,11439]]],[1553782408392,["zyx@DESKTOP-60KJ218",[[1,11441,"\n"]],[11439,11439],[11440,11440]]],[1553782408978,["zyx@DESKTOP-60KJ218",[[1,11440,"### Q&S基础部分"]],[11440,11440],[11451,11451]]],[1553782410430,["zyx@DESKTOP-60KJ218",[[-1,11447,"基础"]],[11449,11449],[11447,11447]]],[1553782412488,["zyx@DESKTOP-60KJ218",[[1,11447,"异常"]],[11447,11447],[11449,11449]]],[1553782413504,["zyx@DESKTOP-60KJ218",[[1,11453,"\n"]],[11451,11451],[11452,11452]]],[1553782413640,["zyx@DESKTOP-60KJ218",[[1,11454,"\n"]],[11452,11452],[11453,11453]]],[1553782417612,["zyx@DESKTOP-60KJ218",[[1,11453,"****"]],[11453,11453],[11455,11455]]],[1553782417709,["zyx@DESKTOP-60KJ218",[[1,11455,"### Q&S基础部分"]],[11455,11455],[11466,11466]]],[1553782418964,["zyx@DESKTOP-60KJ218",[[-1,11455,"### Q&S基础部分"]],[11466,11466],[11455,11455]]],[1553782420275,["zyx@DESKTOP-60KJ218",[[-1,11453,"****"]],[11455,11455],[11453,11453]]],[1553782431718,[null,[[-1,8475,"去"],[1,8476,"\n"],[-1,11451,"\n"]],[8475,8475],[11451,11451]]],[1553782431718,[null,[[1,8475,"去"],[-1,8475,"\n"],[1,11451,"\n"]],[11451,11451],[8475,8475]]],[1553782420856,["zyx@DESKTOP-60KJ218",[[1,11453,"### Q&S基础部分"]],[11453,11453],[11464,11464]]],[1553782422903,["zyx@DESKTOP-60KJ218",[[-1,11460,"基础"]],[11462,11462],[11460,11460]]],[1553782426809,["zyx@DESKTOP-60KJ218",[[1,11460,"对象拷贝"]],[11460,11460],[11464,11464]]],[1553782491715,[null,[[-1,8475,"去"],[1,8476,"\n"],[-1,11466,"\n"]],[8475,8475],[11466,11466]]],[1553782491715,[null,[[1,8475,"去"],[-1,8475,"\n"],[1,11466,"\n"]],[11466,11466],[8475,8475]]],[1553782433143,["zyx@DESKTOP-60KJ218",[[1,11,"\n"]],[9,9],[10,10]]],[1553782434939,["zyx@DESKTOP-60KJ218",[[1,11,"* * *\n"]],[10,10],[18,18]]],[1553782438334,["zyx@DESKTOP-60KJ218",[[-1,11,"* * *\n"]],[18,18],[10,10]]],[1553782441969,["zyx@DESKTOP-60KJ218",[[-1,11,"\n"]],[11,11],[10,10]]],[1553782443819,["zyx@DESKTOP-60KJ218",[[1,11,"@toc\n\n"]],[10,10],[17,17]]],[1553782474333,["zyx@DESKTOP-60KJ218",[[1,30,"##### "]],[30,30],[36,36]]],[1553782478921,["zyx@DESKTOP-60KJ218",[[-1,11,"@toc"]],[15,15],[11,11]]],[1553782480451,["zyx@DESKTOP-60KJ218",[[-1,12,"\n"]],[11,11],[10,10]]],[1553782487163,["zyx@DESKTOP-60KJ218",[[1,30,"#"]],[30,30],[31,31]]],[1553782551718,[null,[[-1,8483,"去"],[1,8484,"\n"],[-1,11474,"\n"]],[8483,8483],[11474,11474]]],[1553782551718,[null,[[1,8483,"去"],[-1,8483,"\n"],[1,11474,"\n"]],[11474,11474],[8483,8483]]],[1553782493659,["zyx@DESKTOP-60KJ218",[[1,237,"###### "]],[237,237],[244,244]]],[1553782496501,["zyx@DESKTOP-60KJ218",[[1,647,"###### "]],[647,647],[654,654]]],[1553782499057,["zyx@DESKTOP-60KJ218",[[1,1050,"###### "]],[1050,1050],[1057,1057]]],[1553782501225,["zyx@DESKTOP-60KJ218",[[1,1157,"###### "]],[1157,1157],[1164,1164]]],[1553782503341,["zyx@DESKTOP-60KJ218",[[1,1325,"###### "]],[1325,1325],[1332,1332]]],[1553782504675,["zyx@DESKTOP-60KJ218",[[1,1495,"###### "]],[1495,1495],[1502,1502]]],[1553782507554,["zyx@DESKTOP-60KJ218",[[1,1743,"###### "]],[1743,1743],[1750,1750]]],[1553782513336,["zyx@DESKTOP-60KJ218",[[1,2490,"###### "]],[2490,2490],[2497,2497]]],[1553782514992,["zyx@DESKTOP-60KJ218",[[1,2695,"###### "]],[2695,2695],[2702,2702]]],[1553782517123,["zyx@DESKTOP-60KJ218",[[1,3140,"###### "]],[3140,3140],[3147,3147]]],[1553782519858,["zyx@DESKTOP-60KJ218",[[1,4073,"###### "]],[4073,4073],[4080,4080]]],[1553782521859,["zyx@DESKTOP-60KJ218",[[1,4286,"###### "]],[4286,4286],[4293,4293]]],[1553782525481,["zyx@DESKTOP-60KJ218",[[1,7433,"###### "]],[7433,7433],[7440,7440]]],[1553782528068,["zyx@DESKTOP-60KJ218",[[1,7980,"###### "]],[7980,7980],[7987,7987]]],[1553782529556,["zyx@DESKTOP-60KJ218",[[1,8151,"###### "]],[8151,8151],[8158,8158]]],[1553782531070,["zyx@DESKTOP-60KJ218",[[1,8253,"###### "]],[8253,8253],[8260,8260]]],[1553782532876,["zyx@DESKTOP-60KJ218",[[1,8536,"###### "]],[8536,8536],[8543,8543]]],[1553782535970,["zyx@DESKTOP-60KJ218",[[1,9950,"###### "]],[9950,9950],[9957,9957]]],[1553782537372,["zyx@DESKTOP-60KJ218",[[1,10053,"###### "]],[10053,10053],[10060,10060]]],[1553782540007,["zyx@DESKTOP-60KJ218",[[1,10849,"###### "]],[10849,10849],[10856,10856]]],[1553782541310,["zyx@DESKTOP-60KJ218",[[1,11053,"###### "]],[11053,11053],[11060,11060]]],[1553782542559,["zyx@DESKTOP-60KJ218",[[1,11198,"###### "]],[11198,11198],[11205,11205]]],[1553782611722,[null,[[-1,8602,"去"],[1,8603,"\n"],[-1,11628,"\n"]],[8602,8602],[11628,11628]]],[1553782611722,[null,[[1,8602,"去"],[-1,8602,"\n"],[1,11628,"\n"]],[11628,11628],[8602,8602]]],[1553782552425,["zyx@DESKTOP-60KJ218",[[-1,11,"\n"]],[10,10],[9,9]]],[1553782554933,["zyx@DESKTOP-60KJ218",[[1,11,"@toc\n\n"]],[10,10],[17,17]]],[1553782560277,["zyx@DESKTOP-60KJ218",[[-1,35,"#"]],[36,36],[35,35]]],[1553782563624,["zyx@DESKTOP-60KJ218",[[-1,246,"#"]],[247,247],[246,246]]],[1553782584399,["zyx@DESKTOP-60KJ218",[[-1,30,"##### "]],[30,35],[30,30]]],[1553782586280,["zyx@DESKTOP-60KJ218",[[-1,235,"##### "]],[235,241],[235,235]]],[1553782591345,["zyx@DESKTOP-60KJ218",[[-1,638,"###### "]],[638,644],[638,638]]],[1553782597234,["zyx@DESKTOP-60KJ218",[[-1,1727,"###### "]],[1727,1734],[1727,1727]]],[1553782599881,["zyx@DESKTOP-60KJ218",[[-1,2474,"**Q9.== 和 equals 的区别是什么?**\n"]],[2474,2501],[2474,2474]]],[1553782601235,["zyx@DESKTOP-60KJ218",[[1,2474,"**Q9.== 和 equals 的区别是什么?**\n"]],[2474,2474],[2474,2501]]],[1553782603080,["zyx@DESKTOP-60KJ218",[[-1,2467,"###### "]],[2467,2474],[2467,2467]]],[1553782605831,["zyx@DESKTOP-60KJ218",[[-1,2665,"###### "]],[2665,2672],[2665,2665]]],[1553782609336,["zyx@DESKTOP-60KJ218",[[-1,3103,"###### "]],[3103,3109],[3103,3103]]],[1553782646029,[null,[[-1,8558,"去"],[1,8559,"\n"],[-1,11584,"\n"]],[8558,8558],[11584,11584]]],[1553782646029,[null,[[1,8558,"去"],[-1,8558,"\n"],[1,11584,"\n"]],[11584,11584],[8558,8558]]],[1553782612440,["zyx@DESKTOP-60KJ218",[[-1,4029,"###### "]],[4029,4036],[4029,4029]]],[1553782614749,["zyx@DESKTOP-60KJ218",[[-1,4235,"###### "]],[4235,4242],[4235,4235]]],[1553782619588,["zyx@DESKTOP-60KJ218",[[-1,7375,"###### "]],[7375,7382],[7375,7375]]],[1553782622280,["zyx@DESKTOP-60KJ218",[[-1,7915,"###### "]],[7915,7922],[7915,7915]]],[1553782624793,["zyx@DESKTOP-60KJ218",[[-1,8181,"###### "]],[8181,8188],[8181,8181]]],[1553782628948,["zyx@DESKTOP-60KJ218",[[-1,8079,"###### "]],[8079,8085],[8079,8079]]],[1553782631944,["zyx@DESKTOP-60KJ218",[[-1,8450,"###### "]],[8450,8457],[8450,8450]]],[1553782635864,["zyx@DESKTOP-60KJ218",[[-1,9857,"###### "]],[9857,9864],[9857,9857]]],[1553782637281,["zyx@DESKTOP-60KJ218",[[-1,9953,"###### "]],[9953,9960],[9953,9953]]],[1553782639624,["zyx@DESKTOP-60KJ218",[[-1,10742,"###### "]],[10742,10749],[10742,10742]]],[1553782641499,["zyx@DESKTOP-60KJ218",[[-1,10939,"###### "]],[10939,10946],[10939,10939]]],[1553782642767,["zyx@DESKTOP-60KJ218",[[-1,11077,"###### "]],[11077,11084],[11077,11077]]]],null,"zyx@DESKTOP-60KJ218"],["17da09f6-cf1b-4398-b3ff-63a49efcf5c8",1553784153254,"# JavaSE篇\n\n@toc\n\n### Q&S基础部分\n\n**Q1.JDK 和 JRE 有什么区别?**\n\nJDK是功能齐全的Java软件开发包。JRE 是 Java运行时环境。\nJDK拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb),它能够创建和编译程序。\nJRE 是 Java程序运行所需的内容的集合,它包含了 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序,只运行程序。\n\n**Q2.Java的基本类型有哪些?它们各自相对应的封装类又是什么?请说明int和它的封装类之间的区别。**\n\n_Java的基本类型有8种:_\n整数型:byte、short、int、long(对应位数:8,16,32,64)\n浮点型:float、double(对应位数:32,64)\n字符型:char(对应位数:16)\n布尔类型:boolean\n\n_对应的封装类:_\n整数型包装类:Byte,Short,Integer,Long\n浮点型包装类:Float,Double\n字符型包装类:Character\n布尔类型包装类:Boolean\n\n_Integer与int的区别:_\nint 的默认值为0,而 Integer 的默认值为 null,即 Integer 可以区分出未赋值和值为0的区别,int 则无法表达出未赋值的情况。例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用 Integer。\n\n**Q3.请说出作用域 public,private,protected,以及default的区别**\n\n流传的面试题中default经常被写成friendly,这两者没有区别,但是Java中没有friendly关键字。\npublic:共有的,表明该数据对所有人开放,可以直接调\nprivate:私有的,可以理解为自己的私有财产,仅自己可以使用。\nprotected:受保护的,可以理解为有一群人组成一个社团,这个社团里的人可以使用,后代也可以使用。这个社团就相当于一个包,在同一个包中的类便可以访问,子类也可以访问。\ndefault:默认的,在同一个包中的类可以访问,同一个包中的子类也可以访问,但是当子类在其他包中,就不能访问。\n\n\n###### **Q4.一个\".java\"源文件中是否可以包括多个类(不是内部类)?有什么限制?**\n\n可以包含多个类,但是只有一个类可以使用public来修饰,并且文件名称必须与public修饰的类名称相同。\n\n###### **Q5.switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?**\n\nswitch表达式中,只能是int类型或者Integer或者枚举类型。byte、short、char可以隐式转换成int类型,因此可以使用这三种类型的表达式,那么long、String类型就不能应用。\n\n###### **Q6.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?**\n\n前者中s1+1会自动进行类型转换,结果是int型的,s1是short类型,将整型赋值给short型会出错。而后者中+=语句Java编译时会自动识别类型,并进行特殊处理,因此后者没有错误。\n\n###### **Q7.用最有效率的方法算出 2 乘以 8 等于几?用最有效的方法算出奇数和偶数 ?**\n\n2\\*8=16,我们可以得到2的二进制位10,而16的二进制数为10000,发现2的二进制数中的1向左移动三位就可以得到16的二进制数。因此我们可以使用位移运算来快速计算2\\<\\<3。\n奇数的二进制数最后一位总是1,而偶数的二进制数总是0,因此我们可以使用与运算来进行奇偶数的识别。例如这个数为n,if((n&1)= =1)时,此数就是奇数;if((n&1)= =0)时,此数为偶数。\n\n**Q8.什么是引用类型?**\n\n在Java中类型可分为两大类:值类型与引用类型。值类型就是基本数据类型(如int ,double 等),而引用类型,是指除了基本的变量类型之外的所有类型(如通过 class 定义的类型)。常用引用类型为数组,接口,类(尤其String类,最常见,最长考)。所有的类型在内存中都会分配一定的存储空间(形参在使用的时候也会分配存储空间,方法调用完成之后,这块存储空间自动消失),基本的变量类型只有一块存储空间(分配在stack中), 而引用类型有两块存储空间(一块在stack中,一块在heap中)。\n\n1) 引用是一种数据类型(保存在stack中),保存对象在内存(heap,堆空间)中的地址,这种类型即不是我们平时所说的简单数据类型也不是类实例(对象);\n2) 不同的引用可能指向同一个对象,换句话说,一个对象可以有多个引用,即该类类型的变量。\n引用其实就像是一个对象的名字或者别名 (alias),一个对象在内存中会请求一块空间来保存数据,根据对象的大小,它可能需要占用的空间大小也不等。访问对象的时候,我们不会直接是访问对象在内存中的数据,而是通过引用去访问。引用也是一种数据类型,我们可以把它想象为类似 C++ 语言中指针的东西,它指示了对象在内存中的地址——只不过我们不能够观察到这个地址究竟是什么。\n如果我们定义了不止一个引用指向同一个对象,那么这些引用是不相同的,因为引用也是一种数据类型,需要一定的内存空间(stack,栈空间)来保存。但是它们的值是相同的,都指示同一个对象在内存(heap,堆空间)的中位置。\n\n**Q9.== 和 equals 的区别是什么?**\n\n对于基本类型和引用类型 == 的作用效果是不同的,基本类型:比较的是值是否相同;引用类型:比较的是引用是否相同;\nequals \nequals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。String 重写了 Object 的 equals 方法,把引用比较改成了值比较。\n\n**Q10.Java 中操作字符串都有哪些类?它们之间有什么区别?**\n\n主要是String、StringBuffer、StringBuild类。\nString 类是 final 类型的,因此不可以继承这个类、不能修改这个类,底层源码中有针对String数据的修改方法,都是重新创建了一个String对象,而原来的String对象未曾改变。对于字符串常量,如果内容相同,Java 认为它们代表同 一个 String 对象。而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。字符串如果是变量相加,先开空间,在拼接。字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。\n\n但是为了提高效率节省空间并且可以更改对String类型数据直接更改,我们可使用用StringBuffer 类。StringBuffer线程安全,同步,效率低,开销大,因此可以改用StringBuilder。StringBuilder线程不安全,异步,效率高。\n\n**Q11.什么是同步和异步?什么是线程安全?**\n\n同步:可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。如打电话,通信双方不能断(我们是同时进行,同步),你一句我一句,这样的好处是,对方想表达的信息我马上能收到,但是,我在打着电话,我无法做别的事情。\n\n异步:执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。如收发收短信,对方不用保证此刻我一定在手机旁,同时,我也不用时刻留意手机有没有来短信。这样的话,我看着视频,然后来了短信,我就处理短信(也可以不处理),接着再看视频。\n\n线程安全:多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他操作,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。一个类或者程序所提供的接口对于线程来说是[原子操作](https://baike.baidu.com/item/%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C)或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。\n\n线程安全问题大多是由[全局变量](https://baike.baidu.com/item/%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F)及[静态变量](https://baike.baidu.com/item/%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F)引起的,局部变量逃逸也可能导致线程安全问题。\n\n若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑[线程同步](https://baike.baidu.com/item/%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5),否则的话就可能影响线程安全。\n\n**Q12.String str1=\"i\"与 String str2=new String(“i”)一样吗?**\n\nString str2 = new String(“i”)会创建2(1)个对象,String str1 = “i”创建1(0)个对象。 \n==注==:当字符串常量池中有对象hello时括号内成立!\nstr1 ==str2 的判断为false;\nstr1 .equals(str2 )为true\n\n**Q13.String 类的常用方法都有那些?**\n\n1、求字符串长度\n**public int length()**//返回该字符串的长度\n2、求字符串某一位置字符\n**public char charAt(int index)**//返回字符串中指定位置的字符;注意字符串中第一个字符索引是0,最后一个是length()-1。\n3、提取子串\n用String类的substring方法可以提取字符串中的子串,该方法有两种常用参数:\n1)**public String substring(int beginIndex)**//该方法从beginIndex位置起,从当前字符串中取出剩余的字符作为一个新的字符串返回。\n2)**public String substring(int beginIndex, int endIndex)**//该方法从beginIndex位置起,从当前字符串中取出到endIndex-1位置的字符作为一个新的字符串返回。\n4、字符串比较\n1)**public int compareTo(String anotherString)**//该方法是对字符串内容按字典顺序进行大小比较,通过返回的整数值指明当前字符串与参数字符串的大小关系。若当前对象比参数大则返回正整数,反之返回负整数,相等返回0。\n2)**public int compareToIgnore(String anotherString)**//与compareTo方法相似,但忽略大小写。\n3)**public boolean equals(Object anotherObject)**//比较当前字符串和参数字符串,在两个字符串相等的时候返回true,否则返回false。\n4)**public boolean equalsIgnoreCase(String anotherString)**//与equals方法相似,但忽略大小写。\n5、字符串连接\n**public String concat(String str)**//将参数中的字符串str连接到当前字符串的后面,效果等价于\"+\"。\n6、字符串中单个字符查找\n1)**public int indexOf(int ch/String str)**//用于查找当前字符串中字符或子串,返回字符或子串在当前字符串中从左边起首次出现的位置,若没有出现则返回-1。\n2)**public int indexOf(int ch/String str, int fromIndex)**//改方法与第一种类似,区别在于该方法从fromIndex位置向后查找。\n3)**public int lastIndexOf(int ch/String str)**//该方法与第一种类似,区别在于该方法从字符串的末尾位置向前查找。\n4)**public int lastIndexOf(int ch/String str, int fromIndex)**//该方法与第二种方法类似,区别于该方法从fromIndex位置向前查找。\n7、字符串中字符的大小写转换\n1)**public String toLowerCase()**//返回将当前字符串中所有字符转换成小写后的新串\n2)**public String toUpperCase()**//返回将当前字符串中所有字符转换成大写后的新串\n8、字符串中字符的替换\n1)**public String replace(char oldChar, char newChar)**//用字符newChar替换当前字符串中所有的oldChar字符,并返回一个新的字符串。\n2)**public String replaceFirst(String regex, String replacement)**//该方法用字符replacement的内容替换当前字符串中遇到的第一个和字符串regex相匹配的子串,应将新的字符串返回。\n3)**public String replaceAll(String regex, String replacement)**//该方法用字符replacement的内容替换当前字符串中遇到的所有和字符串regex相匹配的子串,应将新的字符串返回。\n9、其他类方法\n1)**String trim()**//截去字符串两端的空格,但对于中间的空格不处理。\n2)**boolean statWith(String prefix)**或**boolean endWith(String suffix)**//用来比较当前字符串的起始字符或子字符串prefix和终止字符或子字符串suffix是否和当前字符串相同,重载方法中同时还可以指定比较的开始位置offset。\n3)**regionMatches(boolean b, int firstStart, String other, int otherStart, int length)**//从当前字符串的firstStart位置开始比较,取长度为length的一个子字符串,other字符串从otherStart位置开始,指定另外一个长度为length的字符串,两字符串比较,当b为true时字符串不区分大小写。\n4)**contains(String** **str)**//判断参数s是否被包含在字符串中,并返回一个布尔类型的值。\n10、字符串转换为基本类型\njava.lang包中有Byte、Short、Integer、Float、Double类的调用方法:\n1)**public static byte parseByte(String s)**\n2)**public static short parseShort(String s)**\n3)**public static short parseInt(String s)**\n4)**public static long parseLong(String s)**\n5)**public static float parseFloat(String s)**\n6)**public static double parseDouble(String s)**\n11、基本类型转换为字符串类型\nString类中提供了String valueOf()放法,用作基本类型转换为字符串类型。\n1)**static String valueOf(char data[])**\n2)**static String valueOf(char data[], int offset, int count)**\n3)**static String valueOf(boolean b)**\n4)**static String valueOf(char c)**\n5)**static String valueOf(int i)**\n6)**static String valueOf(long l)**\n7)**static String valueOf(float f)**\n8)**static String valueOf(double d)**\n12、进制转换\n使用Long类中的方法得到整数之间的各种进制转换的方法:\nLong.toBinaryString(long l)\nLong.toOctalString(long l)\nLong.toHexString(long l)\nLong.toString(long l, int p)//p作为任意进制\n\n**Q14.如何将字符串反转?**\n\n```java\nimport java.util.Scanner;\n/**\n * 使用Java中的StringBuffer完成字符串的翻转\n * @author xuanxuan\n *\n */\npublic class ReverseString {\n\tpublic static void main(String[] args) {\n\t\tScanner in = new Scanner(System.in);\n\t\t//如果使用next()方法读取字符串时,读到空格就会停止,而使用nextLine()方法会读取空格\n\t\tString s = in.nextLine();\n\t\tSystem.out.println(ReverseString(s));\n\t\tin.close();\n\t}\n\t\n\tpublic static String ReverseString(String str) {\n\t\tStringBuffer bu = new StringBuffer();\n\t\tbu.append(str);\n\t\tString str1 = bu.reverse().toString();\n\t\treturn str1;\n\t}\n}\n```\n\n**Q15.final 在 java 中有什么作用?**\n\nfinal 修饰的类叫最终类,该类不能被继承。\nfinal 修饰的方法不能被重写。\nfinal 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。\n使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容 还是可以改变的。\n\n**Q16.java 中的 Math.round(-1.5) 等于多少?**\n\nCeil向上取整,floor向下取整。Round先对一个树+0.5,然后向下取整。因此这个表达式的值为-1\n\n**Q17.是否可以从一个 static 方法内部发出对非 static 方法的调用?**\n\n不可以。因为非 static 方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对 象上进行方法调用,而 static 方法调用时不需要创建对象,可以直接调用。也就是说,当一 个 static 方法被调用时,可能还没有创建任何实例对象,如果从一个 static 方法中发出对非 static 方法的调用,那个非 static 方法是关联到哪个对象上的呢?这个逻辑无法成立,所以, 一个 static 方法内部发出对非 static 方法的调用。/\n\n**Q18.Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型?**\n\nOverload是重载的意思,Override是覆盖的意思,也就是重写。\n\n重载 Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。\n\n重写 Override 表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。\n\n子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。\n\n子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是 private 类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。\n\n如果几个 Overloaded 的方法的参数列表不一样,它们的返回者类型当然也可以不一样。如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载 Overload?\n\n这是不行的,我们可以用反证法来说明这个问题, 因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如,我们调用 map.remove(key)方法时,虽然 remove 方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java 就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。 override 可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法 进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外, 我们在继承中也可能会在子类覆盖父类中的方法。\n\n在覆盖要注意以下的几点:\n\n1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;\n\n2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;\n\n3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;\n\n4、被覆盖的方法不能为 private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。\n\noverload 对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM 就会根据不同的参数样式,来选择合适的方法执行。在使用重载要注意以下的几点:\n\n1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是 fun(int,float), 但是不能为 fun(int,int)); 2、不能通过访问权限、返回类型、抛出的异常进行重载;\n\n3、方法的异常类型和数目不会对重载造成影响;\n\n4、对于继承来说,如果某一方法在父类中是访问权限是 priavte,那么就不能在子类对其进 行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。\n\n**Q19.构造器 Constructor 是否可被 override?**\n\n构造器 Constructor 不能被继承,因此不能重写 Override,但可以被重载 Overload。\n\n**Q20.abstract class 和 interface 有什么区别?**\n\nAbstract:\n* 含有 abstract 修饰符的 class 即为抽象类,abstract 类不能创建的实例对象。\n* 含有 abstract 方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。\n* 如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为 abstract 类型。\n\n接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。\n接口中的方法定义默认为 public abstract 类型,接口中的成员变量类型默认为public static final。\n\n两者区别:\n1.抽象类可以有构造方法,接口中不能有构造方法。 \n2.抽象类中可以有普通成员变量,接口中没有普通成员变量 \n3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象 的普通方法。\n4.抽象类中的抽象方法的访问类型可以是 public,protected 和(默认类型,虽然 eclipse 下不报错,但应该也不行),但接口中的抽象方法只能是 public 类型的,并且默认即 为 public abstract 类型。 \n5.抽象类中可以包含静态方法,接口中不能包含静态方法 \n6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任 意,但接口中定义的变量只能是 public static final 类型,并且默认即为 public static final 类 型。\n7.一个类可以实现多个接口,但只能继承一个抽象类。\n\n**Q21.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可 继承具体类(concrete class)?抽象类中是否可以有静态的 main 方法?**\n\n接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类中 可以有静态的 main 方法。抽象类与普通类的唯一区别:就是不能创建实例对象和允许有 abstract 方法。\n\n**Q22.Java 中实现多态的机制是什么?**\n\n靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方 法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运 行的那个对象的方法,而不是引用变量的类型中定义的方法。\n\n**Q22.说出一些常用的类,包,接口,请各举 5 个?**\n\n常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer java.util.Date,System,Class,List,HashMap\n常用的包:java.lang java.io java.util java.sql,javax.servlet,org.hibernate\n常用的接口:Remote List Map Document NodeList,Servlet,HttpServletRequest,HttpServletResponse,Transaction(Hibernate)、 Session(Hibernate),HttpSession\n\n### Q&S集合部分\n\n### Q&S线程部分\n\n### Q&S反射部分\n\n### Q&S异常部分\n\n### Q&S对象拷贝部分\n\n",[[1553784136037,["zyx@DESKTOP-60KJ218",[[1,4454,"\\"],[1,4546,"\\"],[1,4671,"\\"],[1,4801,"\\"],[1,4880,"\\"],[1,4974,"\\"],[1,5147,"\\"],[1,5246,"\\"],[1,5341,"\\"],[1,5422,"\\"],[1,5537,"\\"],[1,5595,"\\"],[1,5665,"\\"],[1,5765,"\\"],[1,5894,"\\"],[1,6028,"\\"],[1,6073,"\\"],[1,6226,"\\"],[1,6428,"\\"],[1,6554,"\\"],[1,6599,"\\"],[1,6646,"\\"],[1,6691,"\\"],[1,6736,"\\"],[1,6783,"\\"],[1,6894,"\\"],[1,6928,"\\"],[1,6935,"\\"],[1,6969,"\\"],[1,6999,"\\"],[1,7038,"\\"],[1,7074,"\\"],[1,7109,"\\"],[1,7145,"\\"],[1,7182,"\\"],[-1,10006,"*"],[1,10007,"\n-"],[-1,10058,"*"],[1,10059,"-"],[-1,10186,"*"],[1,10187,"-"],[-1,11500,"\n"],[1,11501,""]],[0,11502],[0,0]]]],null,"zyx@DESKTOP-60KJ218"],["576236f7-3c2c-420b-8ef8-0108ce2f411e",1553784153396,"# JavaSE篇\n\n@toc\n\n### Q&S基础部分\n\n**Q1.JDK 和 JRE 有什么区别?**\n\nJDK是功能齐全的Java软件开发包。JRE 是 Java运行时环境。\nJDK拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb),它能够创建和编译程序。\nJRE 是 Java程序运行所需的内容的集合,它包含了 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序,只运行程序。\n\n**Q2.Java的基本类型有哪些?它们各自相对应的封装类又是什么?请说明int和它的封装类之间的区别。**\n\n_Java的基本类型有8种:_\n整数型:byte、short、int、long(对应位数:8,16,32,64)\n浮点型:float、double(对应位数:32,64)\n字符型:char(对应位数:16)\n布尔类型:boolean\n\n_对应的封装类:_\n整数型包装类:Byte,Short,Integer,Long\n浮点型包装类:Float,Double\n字符型包装类:Character\n布尔类型包装类:Boolean\n\n_Integer与int的区别:_\nint 的默认值为0,而 Integer 的默认值为 null,即 Integer 可以区分出未赋值和值为0的区别,int 则无法表达出未赋值的情况。例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用 Integer。\n\n**Q3.请说出作用域 public,private,protected,以及default的区别**\n\n流传的面试题中default经常被写成friendly,这两者没有区别,但是Java中没有friendly关键字。\npublic:共有的,表明该数据对所有人开放,可以直接调\nprivate:私有的,可以理解为自己的私有财产,仅自己可以使用。\nprotected:受保护的,可以理解为有一群人组成一个社团,这个社团里的人可以使用,后代也可以使用。这个社团就相当于一个包,在同一个包中的类便可以访问,子类也可以访问。\ndefault:默认的,在同一个包中的类可以访问,同一个包中的子类也可以访问,但是当子类在其他包中,就不能访问。\n\n\n###### **Q4.一个\".java\"源文件中是否可以包括多个类(不是内部类)?有什么限制?**\n\n可以包含多个类,但是只有一个类可以使用public来修饰,并且文件名称必须与public修饰的类名称相同。\n\n###### **Q5.switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?**\n\nswitch表达式中,只能是int类型或者Integer或者枚举类型。byte、short、char可以隐式转换成int类型,因此可以使用这三种类型的表达式,那么long、String类型就不能应用。\n\n###### **Q6.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?**\n\n前者中s1+1会自动进行类型转换,结果是int型的,s1是short类型,将整型赋值给short型会出错。而后者中+=语句Java编译时会自动识别类型,并进行特殊处理,因此后者没有错误。\n\n###### **Q7.用最有效率的方法算出 2 乘以 8 等于几?用最有效的方法算出奇数和偶数 ?**\n\n2\\*8=16,我们可以得到2的二进制位10,而16的二进制数为10000,发现2的二进制数中的1向左移动三位就可以得到16的二进制数。因此我们可以使用位移运算来快速计算2\\<\\<3。\n奇数的二进制数最后一位总是1,而偶数的二进制数总是0,因此我们可以使用与运算来进行奇偶数的识别。例如这个数为n,if((n&1)= =1)时,此数就是奇数;if((n&1)= =0)时,此数为偶数。\n\n**Q8.什么是引用类型?**\n\n在Java中类型可分为两大类:值类型与引用类型。值类型就是基本数据类型(如int ,double 等),而引用类型,是指除了基本的变量类型之外的所有类型(如通过 class 定义的类型)。常用引用类型为数组,接口,类(尤其String类,最常见,最长考)。所有的类型在内存中都会分配一定的存储空间(形参在使用的时候也会分配存储空间,方法调用完成之后,这块存储空间自动消失),基本的变量类型只有一块存储空间(分配在stack中), 而引用类型有两块存储空间(一块在stack中,一块在heap中)。\n\n1) 引用是一种数据类型(保存在stack中),保存对象在内存(heap,堆空间)中的地址,这种类型即不是我们平时所说的简单数据类型也不是类实例(对象);\n2) 不同的引用可能指向同一个对象,换句话说,一个对象可以有多个引用,即该类类型的变量。\n引用其实就像是一个对象的名字或者别名 (alias),一个对象在内存中会请求一块空间来保存数据,根据对象的大小,它可能需要占用的空间大小也不等。访问对象的时候,我们不会直接是访问对象在内存中的数据,而是通过引用去访问。引用也是一种数据类型,我们可以把它想象为类似 C++ 语言中指针的东西,它指示了对象在内存中的地址——只不过我们不能够观察到这个地址究竟是什么。\n如果我们定义了不止一个引用指向同一个对象,那么这些引用是不相同的,因为引用也是一种数据类型,需要一定的内存空间(stack,栈空间)来保存。但是它们的值是相同的,都指示同一个对象在内存(heap,堆空间)的中位置。\n\n**Q9.== 和 equals 的区别是什么?**\n\n对于基本类型和引用类型 == 的作用效果是不同的,基本类型:比较的是值是否相同;引用类型:比较的是引用是否相同;\nequals \nequals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。String 重写了 Object 的 equals 方法,把引用比较改成了值比较。\n\n**Q10.Java 中操作字符串都有哪些类?它们之间有什么区别?**\n\n主要是String、StringBuffer、StringBuild类。\nString 类是 final 类型的,因此不可以继承这个类、不能修改这个类,底层源码中有针对String数据的修改方法,都是重新创建了一个String对象,而原来的String对象未曾改变。对于字符串常量,如果内容相同,Java 认为它们代表同 一个 String 对象。而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。字符串如果是变量相加,先开空间,在拼接。字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。\n\n但是为了提高效率节省空间并且可以更改对String类型数据直接更改,我们可使用用StringBuffer 类。StringBuffer线程安全,同步,效率低,开销大,因此可以改用StringBuilder。StringBuilder线程不安全,异步,效率高。\n\n**Q11.什么是同步和异步?什么是线程安全?**\n\n同步:可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。如打电话,通信双方不能断(我们是同时进行,同步),你一句我一句,这样的好处是,对方想表达的信息我马上能收到,但是,我在打着电话,我无法做别的事情。\n\n异步:执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。如收发收短信,对方不用保证此刻我一定在手机旁,同时,我也不用时刻留意手机有没有来短信。这样的话,我看着视频,然后来了短信,我就处理短信(也可以不处理),接着再看视频。\n\n线程安全:多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他操作,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。一个类或者程序所提供的接口对于线程来说是[原子操作](https://baike.baidu.com/item/%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C)或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。\n\n线程安全问题大多是由[全局变量](https://baike.baidu.com/item/%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F)及[静态变量](https://baike.baidu.com/item/%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F)引起的,局部变量逃逸也可能导致线程安全问题。\n\n若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑[线程同步](https://baike.baidu.com/item/%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5),否则的话就可能影响线程安全。\n\n**Q12.String str1=\"i\"与 String str2=new String(“i”)一样吗?**\n\nString str2 = new String(“i”)会创建2(1)个对象,String str1 = “i”创建1(0)个对象。 \n==注==:当字符串常量池中有对象hello时括号内成立!\nstr1 ==str2 的判断为false;\nstr1 .equals(str2 )为true\n\n**Q13.String 类的常用方法都有那些?**\n\n1、求字符串长度\n**public int length()**//返回该字符串的长度\n2、求字符串某一位置字符\n**public char charAt(int index)**//返回字符串中指定位置的字符;注意字符串中第一个字符索引是0,最后一个是length()-1。\n3、提取子串\n用String类的substring方法可以提取字符串中的子串,该方法有两种常用参数:\n1\\)**public String substring(int beginIndex)**//该方法从beginIndex位置起,从当前字符串中取出剩余的字符作为一个新的字符串返回。\n2\\)**public String substring(int beginIndex, int endIndex)**//该方法从beginIndex位置起,从当前字符串中取出到endIndex-1位置的字符作为一个新的字符串返回。\n4、字符串比较\n1\\)**public int compareTo(String anotherString)**//该方法是对字符串内容按字典顺序进行大小比较,通过返回的整数值指明当前字符串与参数字符串的大小关系。若当前对象比参数大则返回正整数,反之返回负整数,相等返回0。\n2\\)**public int compareToIgnore(String anotherString)**//与compareTo方法相似,但忽略大小写。\n3\\)**public boolean equals(Object anotherObject)**//比较当前字符串和参数字符串,在两个字符串相等的时候返回true,否则返回false。\n4\\)**public boolean equalsIgnoreCase(String anotherString)**//与equals方法相似,但忽略大小写。\n5、字符串连接\n**public String concat(String str)**//将参数中的字符串str连接到当前字符串的后面,效果等价于\"+\"。\n6、字符串中单个字符查找\n1\\)**public int indexOf(int ch/String str)**//用于查找当前字符串中字符或子串,返回字符或子串在当前字符串中从左边起首次出现的位置,若没有出现则返回-1。\n2\\)**public int indexOf(int ch/String str, int fromIndex)**//改方法与第一种类似,区别在于该方法从fromIndex位置向后查找。\n3\\)**public int lastIndexOf(int ch/String str)**//该方法与第一种类似,区别在于该方法从字符串的末尾位置向前查找。\n4\\)**public int lastIndexOf(int ch/String str, int fromIndex)**//该方法与第二种方法类似,区别于该方法从fromIndex位置向前查找。\n7、字符串中字符的大小写转换\n1\\)**public String toLowerCase()**//返回将当前字符串中所有字符转换成小写后的新串\n2\\)**public String toUpperCase()**//返回将当前字符串中所有字符转换成大写后的新串\n8、字符串中字符的替换\n1\\)**public String replace(char oldChar, char newChar)**//用字符newChar替换当前字符串中所有的oldChar字符,并返回一个新的字符串。\n2\\)**public String replaceFirst(String regex, String replacement)**//该方法用字符replacement的内容替换当前字符串中遇到的第一个和字符串regex相匹配的子串,应将新的字符串返回。\n3\\)**public String replaceAll(String regex, String replacement)**//该方法用字符replacement的内容替换当前字符串中遇到的所有和字符串regex相匹配的子串,应将新的字符串返回。\n9、其他类方法\n1\\)**String trim()**//截去字符串两端的空格,但对于中间的空格不处理。\n2\\)**boolean statWith(String prefix)**或**boolean endWith(String suffix)**//用来比较当前字符串的起始字符或子字符串prefix和终止字符或子字符串suffix是否和当前字符串相同,重载方法中同时还可以指定比较的开始位置offset。\n3\\)**regionMatches(boolean b, int firstStart, String other, int otherStart, int length)**//从当前字符串的firstStart位置开始比较,取长度为length的一个子字符串,other字符串从otherStart位置开始,指定另外一个长度为length的字符串,两字符串比较,当b为true时字符串不区分大小写。\n4\\)**contains(String** **str)**//判断参数s是否被包含在字符串中,并返回一个布尔类型的值。\n10、字符串转换为基本类型\njava.lang包中有Byte、Short、Integer、Float、Double类的调用方法:\n1\\)**public static byte parseByte(String s)**\n2\\)**public static short parseShort(String s)**\n3\\)**public static short parseInt(String s)**\n4\\)**public static long parseLong(String s)**\n5\\)**public static float parseFloat(String s)**\n6\\)**public static double parseDouble(String s)**\n11、基本类型转换为字符串类型\nString类中提供了String valueOf()放法,用作基本类型转换为字符串类型。\n1\\)**static String valueOf(char data\\[])**\n2\\)**static String valueOf(char data\\[], int offset, int count)**\n3\\)**static String valueOf(boolean b)**\n4\\)**static String valueOf(char c)**\n5\\)**static String valueOf(int i)**\n6\\)**static String valueOf(long l)**\n7\\)**static String valueOf(float f)**\n8\\)**static String valueOf(double d)**\n12、进制转换\n使用Long类中的方法得到整数之间的各种进制转换的方法:\nLong.toBinaryString(long l)\nLong.toOctalString(long l)\nLong.toHexString(long l)\nLong.toString(long l, int p)//p作为任意进制\n\n**Q14.如何将字符串反转?**\n\n```java\nimport java.util.Scanner;\n/**\n * 使用Java中的StringBuffer完成字符串的翻转\n * @author xuanxuan\n *\n */\npublic class ReverseString {\n\tpublic static void main(String[] args) {\n\t\tScanner in = new Scanner(System.in);\n\t\t//如果使用next()方法读取字符串时,读到空格就会停止,而使用nextLine()方法会读取空格\n\t\tString s = in.nextLine();\n\t\tSystem.out.println(ReverseString(s));\n\t\tin.close();\n\t}\n\t\n\tpublic static String ReverseString(String str) {\n\t\tStringBuffer bu = new StringBuffer();\n\t\tbu.append(str);\n\t\tString str1 = bu.reverse().toString();\n\t\treturn str1;\n\t}\n}\n```\n\n**Q15.final 在 java 中有什么作用?**\n\nfinal 修饰的类叫最终类,该类不能被继承。\nfinal 修饰的方法不能被重写。\nfinal 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。\n使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容 还是可以改变的。\n\n**Q16.java 中的 Math.round(-1.5) 等于多少?**\n\nCeil向上取整,floor向下取整。Round先对一个树+0.5,然后向下取整。因此这个表达式的值为-1\n\n**Q17.是否可以从一个 static 方法内部发出对非 static 方法的调用?**\n\n不可以。因为非 static 方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对 象上进行方法调用,而 static 方法调用时不需要创建对象,可以直接调用。也就是说,当一 个 static 方法被调用时,可能还没有创建任何实例对象,如果从一个 static 方法中发出对非 static 方法的调用,那个非 static 方法是关联到哪个对象上的呢?这个逻辑无法成立,所以, 一个 static 方法内部发出对非 static 方法的调用。/\n\n**Q18.Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型?**\n\nOverload是重载的意思,Override是覆盖的意思,也就是重写。\n\n重载 Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。\n\n重写 Override 表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。\n\n子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。\n\n子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是 private 类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。\n\n如果几个 Overloaded 的方法的参数列表不一样,它们的返回者类型当然也可以不一样。如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载 Overload?\n\n这是不行的,我们可以用反证法来说明这个问题, 因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如,我们调用 map.remove(key)方法时,虽然 remove 方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java 就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。 override 可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法 进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外, 我们在继承中也可能会在子类覆盖父类中的方法。\n\n在覆盖要注意以下的几点:\n\n1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;\n\n2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;\n\n3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;\n\n4、被覆盖的方法不能为 private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。\n\noverload 对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM 就会根据不同的参数样式,来选择合适的方法执行。在使用重载要注意以下的几点:\n\n1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是 fun(int,float), 但是不能为 fun(int,int)); 2、不能通过访问权限、返回类型、抛出的异常进行重载;\n\n3、方法的异常类型和数目不会对重载造成影响;\n\n4、对于继承来说,如果某一方法在父类中是访问权限是 priavte,那么就不能在子类对其进 行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。\n\n**Q19.构造器 Constructor 是否可被 override?**\n\n构造器 Constructor 不能被继承,因此不能重写 Override,但可以被重载 Overload。\n\n**Q20.abstract class 和 interface 有什么区别?**\n\nAbstract:\n\n- 含有 abstract 修饰符的 class 即为抽象类,abstract 类不能创建的实例对象。\n- 含有 abstract 方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。\n- 如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为 abstract 类型。\n\n接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。\n接口中的方法定义默认为 public abstract 类型,接口中的成员变量类型默认为public static final。\n\n两者区别:\n1.抽象类可以有构造方法,接口中不能有构造方法。 \n2.抽象类中可以有普通成员变量,接口中没有普通成员变量 \n3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象 的普通方法。\n4.抽象类中的抽象方法的访问类型可以是 public,protected 和(默认类型,虽然 eclipse 下不报错,但应该也不行),但接口中的抽象方法只能是 public 类型的,并且默认即 为 public abstract 类型。 \n5.抽象类中可以包含静态方法,接口中不能包含静态方法 \n6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任 意,但接口中定义的变量只能是 public static final 类型,并且默认即为 public static final 类 型。\n7.一个类可以实现多个接口,但只能继承一个抽象类。\n\n**Q21.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可 继承具体类(concrete class)?抽象类中是否可以有静态的 main 方法?**\n\n接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类中 可以有静态的 main 方法。抽象类与普通类的唯一区别:就是不能创建实例对象和允许有 abstract 方法。\n\n**Q22.Java 中实现多态的机制是什么?**\n\n靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方 法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运 行的那个对象的方法,而不是引用变量的类型中定义的方法。\n\n**Q22.说出一些常用的类,包,接口,请各举 5 个?**\n\n常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer java.util.Date,System,Class,List,HashMap\n常用的包:java.lang java.io java.util java.sql,javax.servlet,org.hibernate\n常用的接口:Remote List Map Document NodeList,Servlet,HttpServletRequest,HttpServletResponse,Transaction(Hibernate)、 Session(Hibernate),HttpSession\n\n### Q&S集合部分\n\n### Q&S线程部分\n\n### Q&S反射部分\n\n### Q&S异常部分\n\n### Q&S对象拷贝部分\n",[[1553784136037,["zyx@DESKTOP-60KJ218",[[1,4454,"\\"],[1,4546,"\\"],[1,4671,"\\"],[1,4801,"\\"],[1,4880,"\\"],[1,4974,"\\"],[1,5147,"\\"],[1,5246,"\\"],[1,5341,"\\"],[1,5422,"\\"],[1,5537,"\\"],[1,5595,"\\"],[1,5665,"\\"],[1,5765,"\\"],[1,5894,"\\"],[1,6028,"\\"],[1,6073,"\\"],[1,6226,"\\"],[1,6428,"\\"],[1,6554,"\\"],[1,6599,"\\"],[1,6646,"\\"],[1,6691,"\\"],[1,6736,"\\"],[1,6783,"\\"],[1,6894,"\\"],[1,6928,"\\"],[1,6935,"\\"],[1,6969,"\\"],[1,6999,"\\"],[1,7038,"\\"],[1,7074,"\\"],[1,7109,"\\"],[1,7145,"\\"],[1,7182,"\\"],[-1,10006,"*"],[1,10007,"\n-"],[-1,10058,"*"],[1,10059,"-"],[-1,10186,"*"],[1,10187,"-"],[-1,11500,"\n"],[1,11501,""]],[0,11502],[0,0]]]],null,"zyx@DESKTOP-60KJ218"],["838d6252-73e4-497f-816f-063af2da069b",1553830591590,"# JavaSE篇\n\n@toc\n\n### Q&S基础部分\n\n**Q1.JDK 和 JRE 有什么区别?**\n\nJDK是功能齐全的Java软件开发包。JRE 是 Java运行时环境。\nJDK拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb),它能够创建和编译程序。\nJRE 是 Java程序运行所需的内容的集合,它包含了 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序,只运行程序。\n\n**Q2.Java的基本类型有哪些?它们各自相对应的封装类又是什么?请说明int和它的封装类之间的区别。**\n\n_Java的基本类型有8种:_\n整数型:byte、short、int、long(对应位数:8,16,32,64)\n浮点型:float、double(对应位数:32,64)\n字符型:char(对应位数:16)\n布尔类型:boolean\n\n_对应的封装类:_\n整数型包装类:Byte,Short,Integer,Long\n浮点型包装类:Float,Double\n字符型包装类:Character\n布尔类型包装类:Boolean\n\n_Integer与int的区别:_\nint 的默认值为0,而 Integer 的默认值为 null,即 Integer 可以区分出未赋值和值为0的区别,int 则无法表达出未赋值的情况。例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用 Integer。\n\n**Q3.请说出作用域 public,private,protected,以及default的区别**\n\n流传的面试题中default经常被写成friendly,这两者没有区别,但是Java中没有friendly关键字。\npublic:共有的,表明该数据对所有人开放,可以直接调\nprivate:私有的,可以理解为自己的私有财产,仅自己可以使用。\nprotected:受保护的,可以理解为有一群人组成一个社团,这个社团里的人可以使用,后代也可以使用。这个社团就相当于一个包,在同一个包中的类便可以访问,子类也可以访问。\ndefault:默认的,在同一个包中的类可以访问,同一个包中的子类也可以访问,但是当子类在其他包中,就不能访问。\n\n\n###### **Q4.一个\".java\"源文件中是否可以包括多个类(不是内部类)?有什么限制?**\n\n可以包含多个类,但是只有一个类可以使用public来修饰,并且文件名称必须与public修饰的类名称相同。\n\n###### **Q5.switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?**\n\nswitch表达式中,只能是int类型或者Integer或者枚举类型。byte、short、char可以隐式转换成int类型,因此可以使用这三种类型的表达式,那么long、String类型就不能应用。\n\n###### **Q6.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?**\n\n前者中s1+1会自动进行类型转换,结果是int型的,s1是short类型,将整型赋值给short型会出错。而后者中+=语句Java编译时会自动识别类型,并进行特殊处理,因此后者没有错误。\n\n###### **Q7.用最有效率的方法算出 2 乘以 8 等于几?用最有效的方法算出奇数和偶数 ?**\n\n2\\*8=16,我们可以得到2的二进制位10,而16的二进制数为10000,发现2的二进制数中的1向左移动三位就可以得到16的二进制数。因此我们可以使用位移运算来快速计算2\\<\\<3。\n奇数的二进制数最后一位总是1,而偶数的二进制数总是0,因此我们可以使用与运算来进行奇偶数的识别。例如这个数为n,if((n&1)= =1)时,此数就是奇数;if((n&1)= =0)时,此数为偶数。\n\n**Q8.什么是引用类型?**\n\n在Java中类型可分为两大类:值类型与引用类型。值类型就是基本数据类型(如int ,double 等),而引用类型,是指除了基本的变量类型之外的所有类型(如通过 class 定义的类型)。常用引用类型为数组,接口,类(尤其String类,最常见,最长考)。所有的类型在内存中都会分配一定的存储空间(形参在使用的时候也会分配存储空间,方法调用完成之后,这块存储空间自动消失),基本的变量类型只有一块存储空间(分配在stack中), 而引用类型有两块存储空间(一块在stack中,一块在heap中)。\n\n1) 引用是一种数据类型(保存在stack中),保存对象在内存(heap,堆空间)中的地址,这种类型即不是我们平时所说的简单数据类型也不是类实例(对象);\n2) 不同的引用可能指向同一个对象,换句话说,一个对象可以有多个引用,即该类类型的变量。\n引用其实就像是一个对象的名字或者别名 (alias),一个对象在内存中会请求一块空间来保存数据,根据对象的大小,它可能需要占用的空间大小也不等。访问对象的时候,我们不会直接是访问对象在内存中的数据,而是通过引用去访问。引用也是一种数据类型,我们可以把它想象为类似 C++ 语言中指针的东西,它指示了对象在内存中的地址——只不过我们不能够观察到这个地址究竟是什么。\n如果我们定义了不止一个引用指向同一个对象,那么这些引用是不相同的,因为引用也是一种数据类型,需要一定的内存空间(stack,栈空间)来保存。但是它们的值是相同的,都指示同一个对象在内存(heap,堆空间)的中位置。\n\n**Q9.== 和 equals 的区别是什么?**\n\n对于基本类型和引用类型 == 的作用效果是不同的,基本类型:比较的是值是否相同;引用类型:比较的是引用是否相同;\nequals \nequals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。String 重写了 Object 的 equals 方法,把引用比较改成了值比较。\n\n**Q10.Java 中操作字符串都有哪些类?它们之间有什么区别?**\n\n主要是String、StringBuffer、StringBuild类。\nString 类是 final 类型的,因此不可以继承这个类、不能修改这个类,底层源码中有针对String数据的修改方法,都是重新创建了一个String对象,而原来的String对象未曾改变。对于字符串常量,如果内容相同,Java 认为它们代表同 一个 String 对象。而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。字符串如果是变量相加,先开空间,在拼接。字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。\n\n但是为了提高效率节省空间并且可以更改对String类型数据直接更改,我们可使用用StringBuffer 类。StringBuffer线程安全,同步,效率低,开销大,因此可以改用StringBuilder。StringBuilder线程不安全,异步,效率高。\n\n**Q11.什么是同步和异步?什么是线程安全?**\n\n同步:可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。如打电话,通信双方不能断(我们是同时进行,同步),你一句我一句,这样的好处是,对方想表达的信息我马上能收到,但是,我在打着电话,我无法做别的事情。\n\n异步:执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。如收发收短信,对方不用保证此刻我一定在手机旁,同时,我也不用时刻留意手机有没有来短信。这样的话,我看着视频,然后来了短信,我就处理短信(也可以不处理),接着再看视频。\n\n线程安全:多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他操作,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。一个类或者程序所提供的接口对于线程来说是[原子操作](https://baike.baidu.com/item/%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C)或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。\n\n线程安全问题大多是由[全局变量](https://baike.baidu.com/item/%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F)及[静态变量](https://baike.baidu.com/item/%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F)引起的,局部变量逃逸也可能导致线程安全问题。\n\n若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑[线程同步](https://baike.baidu.com/item/%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5),否则的话就可能影响线程安全。\n\n**Q12.String str1=\"i\"与 String str2=new String(“i”)一样吗?**\n\nString str2 = new String(“i”)会创建2(1)个对象,String str1 = “i”创建1(0)个对象。 \n==注==:当字符串常量池中有对象hello时括号内成立!\nstr1 ==str2 的判断为false;\nstr1 .equals(str2 )为true\n\n**Q13.String 类的常用方法都有那些?**\n\n1、求字符串长度\n**public int length()**//返回该字符串的长度\n2、求字符串某一位置字符\n**public char charAt(int index)**//返回字符串中指定位置的字符;注意字符串中第一个字符索引是0,最后一个是length()-1。\n3、提取子串\n用String类的substring方法可以提取字符串中的子串,该方法有两种常用参数:\n1\\)**public String substring(int beginIndex)**//该方法从beginIndex位置起,从当前字符串中取出剩余的字符作为一个新的字符串返回。\n2\\)**public String substring(int beginIndex, int endIndex)**//该方法从beginIndex位置起,从当前字符串中取出到endIndex-1位置的字符作为一个新的字符串返回。\n4、字符串比较\n1\\)**public int compareTo(String anotherString)**//该方法是对字符串内容按字典顺序进行大小比较,通过返回的整数值指明当前字符串与参数字符串的大小关系。若当前对象比参数大则返回正整数,反之返回负整数,相等返回0。\n2\\)**public int compareToIgnore(String anotherString)**//与compareTo方法相似,但忽略大小写。\n3\\)**public boolean equals(Object anotherObject)**//比较当前字符串和参数字符串,在两个字符串相等的时候返回true,否则返回false。\n4\\)**public boolean equalsIgnoreCase(String anotherString)**//与equals方法相似,但忽略大小写。\n5、字符串连接\n**public String concat(String str)**//将参数中的字符串str连接到当前字符串的后面,效果等价于\"+\"。\n6、字符串中单个字符查找\n1\\)**public int indexOf(int ch/String str)**//用于查找当前字符串中字符或子串,返回字符或子串在当前字符串中从左边起首次出现的位置,若没有出现则返回-1。\n2\\)**public int indexOf(int ch/String str, int fromIndex)**//改方法与第一种类似,区别在于该方法从fromIndex位置向后查找。\n3\\)**public int lastIndexOf(int ch/String str)**//该方法与第一种类似,区别在于该方法从字符串的末尾位置向前查找。\n4\\)**public int lastIndexOf(int ch/String str, int fromIndex)**//该方法与第二种方法类似,区别于该方法从fromIndex位置向前查找。\n7、字符串中字符的大小写转换\n1\\)**public String toLowerCase()**//返回将当前字符串中所有字符转换成小写后的新串\n2\\)**public String toUpperCase()**//返回将当前字符串中所有字符转换成大写后的新串\n8、字符串中字符的替换\n1\\)**public String replace(char oldChar, char newChar)**//用字符newChar替换当前字符串中所有的oldChar字符,并返回一个新的字符串。\n2\\)**public String replaceFirst(String regex, String replacement)**//该方法用字符replacement的内容替换当前字符串中遇到的第一个和字符串regex相匹配的子串,应将新的字符串返回。\n3\\)**public String replaceAll(String regex, String replacement)**//该方法用字符replacement的内容替换当前字符串中遇到的所有和字符串regex相匹配的子串,应将新的字符串返回。\n9、其他类方法\n1\\)**String trim()**//截去字符串两端的空格,但对于中间的空格不处理。\n2\\)**boolean statWith(String prefix)**或**boolean endWith(String suffix)**//用来比较当前字符串的起始字符或子字符串prefix和终止字符或子字符串suffix是否和当前字符串相同,重载方法中同时还可以指定比较的开始位置offset。\n3\\)**regionMatches(boolean b, int firstStart, String other, int otherStart, int length)**//从当前字符串的firstStart位置开始比较,取长度为length的一个子字符串,other字符串从otherStart位置开始,指定另外一个长度为length的字符串,两字符串比较,当b为true时字符串不区分大小写。\n4\\)**contains(String** **str)**//判断参数s是否被包含在字符串中,并返回一个布尔类型的值。\n10、字符串转换为基本类型\njava.lang包中有Byte、Short、Integer、Float、Double类的调用方法:\n1\\)**public static byte parseByte(String s)**\n2\\)**public static short parseShort(String s)**\n3\\)**public static short parseInt(String s)**\n4\\)**public static long parseLong(String s)**\n5\\)**public static float parseFloat(String s)**\n6\\)**public static double parseDouble(String s)**\n11、基本类型转换为字符串类型\nString类中提供了String valueOf()放法,用作基本类型转换为字符串类型。\n1\\)**static String valueOf(char data\\[])**\n2\\)**static String valueOf(char data\\[], int offset, int count)**\n3\\)**static String valueOf(boolean b)**\n4\\)**static String valueOf(char c)**\n5\\)**static String valueOf(int i)**\n6\\)**static String valueOf(long l)**\n7\\)**static String valueOf(float f)**\n8\\)**static String valueOf(double d)**\n12、进制转换\n使用Long类中的方法得到整数之间的各种进制转换的方法:\nLong.toBinaryString(long l)\nLong.toOctalString(long l)\nLong.toHexString(long l)\nLong.toString(long l, int p)//p作为任意进制\n\n**Q14.如何将字符串反转?**\n\n```java\nimport java.util.Scanner;\n/**\n * 使用Java中的StringBuffer完成字符串的翻转\n * @author xuanxuan\n *\n */\npublic class ReverseString {\n\tpublic static void main(String[] args) {\n\t\tScanner in = new Scanner(System.in);\n\t\t//如果使用next()方法读取字符串时,读到空格就会停止,而使用nextLine()方法会读取空格\n\t\tString s = in.nextLine();\n\t\tSystem.out.println(ReverseString(s));\n\t\tin.close();\n\t}\n\t\n\tpublic static String ReverseString(String str) {\n\t\tStringBuffer bu = new StringBuffer();\n\t\tbu.append(str);\n\t\tString str1 = bu.reverse().toString();\n\t\treturn str1;\n\t}\n}\n```\n\n**Q15.final 在 java 中有什么作用?**\n\nfinal 修饰的类叫最终类,该类不能被继承。\nfinal 修饰的方法不能被重写。\nfinal 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。\n使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容 还是可以改变的。\n\n**Q16.java 中的 Math.round(-1.5) 等于多少?**\n\nCeil向上取整,floor向下取整。Round先对一个树+0.5,然后向下取整。因此这个表达式的值为-1\n\n**Q17.是否可以从一个 static 方法内部发出对非 static 方法的调用?**\n\n不可以。因为非 static 方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对 象上进行方法调用,而 static 方法调用时不需要创建对象,可以直接调用。也就是说,当一 个 static 方法被调用时,可能还没有创建任何实例对象,如果从一个 static 方法中发出对非 static 方法的调用,那个非 static 方法是关联到哪个对象上的呢?这个逻辑无法成立,所以, 一个 static 方法内部发出对非 static 方法的调用。/\n\n**Q18.Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型?**\n\nOverload是重载的意思,Override是覆盖的意思,也就是重写。\n\n重载 Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。\n\n重写 Override 表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。\n\n子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。\n\n子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是 private 类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。\n\n如果几个 Overloaded 的方法的参数列表不一样,它们的返回者类型当然也可以不一样。如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载 Overload?\n\n这是不行的,我们可以用反证法来说明这个问题, 因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如,我们调用 map.remove(key)方法时,虽然 remove 方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java 就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。 override 可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法 进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外, 我们在继承中也可能会在子类覆盖父类中的方法。\n\n在覆盖要注意以下的几点:\n\n1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;\n\n2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;\n\n3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;\n\n4、被覆盖的方法不能为 private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。\n\noverload 对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM 就会根据不同的参数样式,来选择合适的方法执行。在使用重载要注意以下的几点:\n\n1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是 fun(int,float), 但是不能为 fun(int,int)); 2、不能通过访问权限、返回类型、抛出的异常进行重载;\n\n3、方法的异常类型和数目不会对重载造成影响;\n\n4、对于继承来说,如果某一方法在父类中是访问权限是 priavte,那么就不能在子类对其进 行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。\n\n**Q19.构造器 Constructor 是否可被 override?**\n\n构造器 Constructor 不能被继承,因此不能重写 Override,但可以被重载 Overload。\n\n**Q20.abstract class 和 interface 有什么区别?**\n\nAbstract:\n\n- 含有 abstract 修饰符的 class 即为抽象类,abstract 类不能创建的实例对象。\n- 含有 abstract 方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。\n- 如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为 abstract 类型。\n\n接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。\n接口中的方法定义默认为 public abstract 类型,接口中的成员变量类型默认为public static final。\n\n两者区别:\n1.抽象类可以有构造方法,接口中不能有构造方法。 \n2.抽象类中可以有普通成员变量,接口中没有普通成员变量 \n3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象 的普通方法。\n4.抽象类中的抽象方法的访问类型可以是 public,protected 和(默认类型,虽然 eclipse 下不报错,但应该也不行),但接口中的抽象方法只能是 public 类型的,并且默认即 为 public abstract 类型。 \n5.抽象类中可以包含静态方法,接口中不能包含静态方法 \n6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任 意,但接口中定义的变量只能是 public static final 类型,并且默认即为 public static final 类 型。\n7.一个类可以实现多个接口,但只能继承一个抽象类。\n\n**Q21.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可 继承具体类(concrete class)?抽象类中是否可以有静态的 main 方法?**\n\n接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类中 可以有静态的 main 方法。抽象类与普通类的唯一区别:就是不能创建实例对象和允许有 abstract 方法。\n\n**Q22.Java 中实现多态的机制是什么?**\n\n靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方 法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运 行的那个对象的方法,而不是引用变量的类型中定义的方法。\n\n**Q22.说出一些常用的类,包,接口,请各举 5 个?**\n\n常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer java.util.Date,System,Class,List,HashMap\n常用的包:java.lang java.io java.util java.sql,javax.servlet,org.hibernate\n常用的接口:Remote List Map Document NodeList,Servlet,HttpServletRequest,HttpServletResponse,Transaction(Hibernate)、 Session(Hibernate),HttpSession\n\n### Q&S集合部分\n\n### Q&S线程部分\n\n### Q&S反射部分\n\n### Q&S异常部分\n\n### Q&S对象拷贝部分\n",[[1553830537419,["zyx@DESKTOP-60KJ218",[[1,11471,"\n"]],[11469,11469],[11470,11470]]],[1553830538382,["zyx@DESKTOP-60KJ218",[[1,11472,"\n"]],[11470,11470],[11471,11471]]],[1553830543121,["zyx@DESKTOP-60KJ218",[[1,11471,"**Q22.说出一些常用的类,包,接口,请各举 5 个?**"]],[11471,11471],[11501,11501]]],[1553830545599,["zyx@DESKTOP-60KJ218",[[-1,11475,"2"]],[11476,11476],[11475,11475]]],[1553830545741,["zyx@DESKTOP-60KJ218",[[1,11475,"3"]],[11475,11475],[11476,11476]]],[1553830560614,["zyx@DESKTOP-60KJ218",[[-1,11477,"说出一些常用的类,包,接口,请各举 5 个?"]],[11499,11499],[11477,11477]]],[1553830565214,["zyx@DESKTOP-60KJ218",[[1,11477,"Java累的"]],[11477,11477],[11483,11483]]],[1553830565933,["zyx@DESKTOP-60KJ218",[[-1,11481,"累的"]],[11483,11483],[11481,11481]]],[1553830570021,["zyx@DESKTOP-60KJ218",[[1,11481,"类的初始化顺序"]],[11481,11481],[11488,11488]]],[1553830572054,["zyx@DESKTOP-60KJ218",[[1,11492,"\n"]],[11490,11490],[11491,11491]]],[1553830573446,["zyx@DESKTOP-60KJ218",[[1,11493,"\n"]],[11491,11491],[11492,11492]]],[1553830584702,["zyx@DESKTOP-60KJ218",[[1,11492,"积累静态变"]],[11492,11492],[11497,11497]]],[1553830585542,["zyx@DESKTOP-60KJ218",[[-1,11492,"积累静态变"]],[11497,11497],[11492,11492]]],[1553830585861,["zyx@DESKTOP-60KJ218",[[-1,11493,"\n"]],[11492,11492],[11491,11491]]],[1553830594570,["zyx@DESKTOP-60KJ218",[[1,11491,"基类金泰变量"]],[11491,11491],[11497,11497]]],[1553830596677,["zyx@DESKTOP-60KJ218",[[1,11491,"\n"]],[11491,11491],[11492,11492]]],[1553830598293,["zyx@DESKTOP-60KJ218",[[-1,11494,"金泰"]],[11496,11496],[11494,11494]]],[1553830599796,["zyx@DESKTOP-60KJ218",[[1,11494,"静态"]],[11494,11494],[11496,11496]]],[1553830605229,["zyx@DESKTOP-60KJ218",[[-1,11496,"变量"]],[11498,11498],[11496,11496]]],[1553830619189,["zyx@DESKTOP-60KJ218",[[1,11496,"代码块、静态成员字段"]],[11496,11496],[11506,11506]]],[1553830619527,["zyx@DESKTOP-60KJ218",[[1,11508,"\n"]],[11506,11506],[11507,11507]]],[1553830626868,["zyx@DESKTOP-60KJ218",[[1,11492,"1."]],[11492,11492],[11494,11494]]],[1553830629000,["zyx@DESKTOP-60KJ218",[[1,11509,"+"]],[11509,11509],[11510,11510]]],[1553830630063,["zyx@DESKTOP-60KJ218",[[-1,11509,"+"]],[11510,11510],[11509,11509]]],[1553830632839,["zyx@DESKTOP-60KJ218",[[1,11509,"=》"]],[11509,11509],[11511,11511]]],[1553830638981,["zyx@DESKTOP-60KJ218",[[-1,11492,"1."]],[11494,11494],[11492,11492]]],[1553830646641,["zyx@DESKTOP-60KJ218",[[1,11509,"子类"]],[11509,11509],[11511,11511]]],[1553830658025,["zyx@DESKTOP-60KJ218",[[1,11511,"静态代码块、静态成员字段"]],[11511,11511],[11523,11523]]],[1553830658285,["zyx@DESKTOP-60KJ218",[[1,11525,"\n"]],[11523,11523],[11524,11524]]],[1553830659358,["zyx@DESKTOP-60KJ218",[[1,11524,"+"]],[11524,11524],[11525,11525]]],[1553830660217,["zyx@DESKTOP-60KJ218",[[-1,11524,"+"]],[11525,11525],[11524,11524]]],[1553830683222,["zyx@DESKTOP-60KJ218",[[1,11524,"=》基类普通代码块、不同成员字段"]],[11524,11524],[11540,11540]]],[1553830683512,["zyx@DESKTOP-60KJ218",[[1,11542,"\n"]],[11540,11540],[11541,11541]]],[1553830690736,["zyx@DESKTOP-60KJ218",[[1,11541,"=》基类构造函数"]],[11541,11541],[11549,11549]]],[1553830695382,["zyx@DESKTOP-60KJ218",[[1,11551,"\n"]],[11549,11549],[11550,11550]]],[1553830696224,["zyx@DESKTOP-60KJ218",[[1,11550,"+"]],[11550,11550],[11551,11551]]],[1553830696743,["zyx@DESKTOP-60KJ218",[[-1,11550,"+"]],[11551,11551],[11550,11550]]],[1553830700849,["zyx@DESKTOP-60KJ218",[[1,11550,"=》子类的"]],[11550,11550],[11555,11555]]],[1553830701894,["zyx@DESKTOP-60KJ218",[[-1,11554,"的"]],[11555,11555],[11554,11554]]],[1553830706966,["zyx@DESKTOP-60KJ218",[[1,11554,"普通代码块、"]],[11554,11554],[11560,11560]]],[1553830709381,["zyx@DESKTOP-60KJ218",[[-1,11534,"不同"]],[11536,11536],[11534,11534]]],[1553830711193,["zyx@DESKTOP-60KJ218",[[1,11534,"普通"]],[11534,11534],[11536,11536]]],[1553830714965,["zyx@DESKTOP-60KJ218",[[1,11560,"普通尘缘"]],[11560,11560],[11564,11564]]],[1553830715661,["zyx@DESKTOP-60KJ218",[[-1,11562,"尘缘"]],[11564,11564],[11562,11562]]],[1553830718647,["zyx@DESKTOP-60KJ218",[[1,11562,"成员字段"]],[11562,11562],[11566,11566]]],[1553830769270,["zyx@DESKTOP-60KJ218",[[1,11567,"="]],[11567,11567],[11568,11568]]],[1553830790466,["zyx@DESKTOP-60KJ218",[[1,11568,"》子类构造函数"]],[11568,11568],[11575,11575]]],[1553830898173,["zyx@DESKTOP-60KJ218",[[-1,11492,"基类静态代码块、静态成员字段\n=》子类静态代码块、静态成员字段\n=》基类普通代码块、普通成员字段\n=》基类构造函数\n=》子类普通代码块、普通成员字段\n=》子类构造函数"]],[11492,11575],[11492,11492]]],[1553830903296,["zyx@DESKTOP-60KJ218",[[1,11492,"普通类中"]],[11492,11492],[11496,11496]]],[1553830903528,["zyx@DESKTOP-60KJ218",[[1,11497,"\n"]],[11496,11496],[11497,11497]]],[1553830904125,["zyx@DESKTOP-60KJ218",[[-1,11497,"\n"]],[11497,11497],[11496,11496]]],[1553830904765,["zyx@DESKTOP-60KJ218",[[1,11496,":"]],[11496,11496],[11497,11497]]],[1553830905030,["zyx@DESKTOP-60KJ218",[[1,11498,"\n"]],[11497,11497],[11498,11498]]],[1553830906852,["zyx@DESKTOP-60KJ218",[[1,11492,"-"]],[11492,11492],[11493,11493]]],[1553830908117,["zyx@DESKTOP-60KJ218",[[-1,11492,"-"]],[11493,11493],[11492,11492]]],[1553830908995,["zyx@DESKTOP-60KJ218",[[1,11492,"——"]],[11492,11492],[11494,11494]]],[1553830909740,["zyx@DESKTOP-60KJ218",[[-1,11492,"——"]],[11494,11494],[11492,11492]]],[1553830910514,["zyx@DESKTOP-60KJ218",[[1,11492,"__"]],[11492,11492],[11493,11493]]],[1553830915348,["zyx@DESKTOP-60KJ218",[[1,11493,"普通类中"]],[11493,11493],[11497,11497]]],[1553830922316,["zyx@DESKTOP-60KJ218",[[-1,11498,"普通类中:"]],[11502,11502],[11498,11498]]],[1553830923613,["zyx@DESKTOP-60KJ218",[[1,11497,":"]],[11497,11497],[11498,11498]]],[1553830940265,["zyx@DESKTOP-60KJ218",[[1,11500,"静态代码块"]],[11500,11500],[11505,11505]]],[1553830943607,["zyx@DESKTOP-60KJ218",[[1,11506,"\n"]],[11505,11505],[11506,11506]]],[1553830946047,["zyx@DESKTOP-60KJ218",[[1,11506,"静态代码"]],[11506,11506],[11510,11510]]],[1553830946435,["zyx@DESKTOP-60KJ218",[[-1,11508,"代码"]],[11510,11510],[11508,11508]]],[1553830947653,["zyx@DESKTOP-60KJ218",[[1,11508,"变量"]],[11508,11508],[11510,11510]]],[1553830947862,["zyx@DESKTOP-60KJ218",[[1,11511,"\n"]],[11510,11510],[11511,11511]]],[1553830952435,["zyx@DESKTOP-60KJ218",[[1,11511,"普通代码块"]],[11511,11511],[11516,11516]]],[1553830952629,["zyx@DESKTOP-60KJ218",[[1,11517,"\n"]],[11516,11516],[11517,11517]]],[1553830957166,["zyx@DESKTOP-60KJ218",[[1,11517,"普通变量"]],[11517,11517],[11521,11521]]],[1553830957349,["zyx@DESKTOP-60KJ218",[[1,11522,"\n"]],[11521,11521],[11522,11522]]],[1553830961473,["zyx@DESKTOP-60KJ218",[[1,11522,"构造函数"]],[11522,11522],[11526,11526]]],[1553830961670,["zyx@DESKTOP-60KJ218",[[1,11527,"\n"]],[11526,11526],[11527,11527]]],[1553830962486,["zyx@DESKTOP-60KJ218",[[1,11528,"\n"]],[11527,11527],[11528,11528]]],[1553830964878,["zyx@DESKTOP-60KJ218",[[1,11528,"__"]],[11528,11528],[11529,11529]]],[1553830970045,["zyx@DESKTOP-60KJ218",[[1,11529,"含有子类的"]],[11529,11529],[11534,11534]]],[1553830983526,["zyx@DESKTOP-60KJ218",[[-1,11506,"静态变量"]],[11506,11510],[11506,11506]]],[1553830984830,["zyx@DESKTOP-60KJ218",[[1,11500,"\n"]],[11500,11500],[11501,11501]]],[1553830985598,["zyx@DESKTOP-60KJ218",[[1,11500,"静态变量"]],[11500,11500],[11504,11504]]],[1553830987119,["zyx@DESKTOP-60KJ218",[[-1,11511,"\n"]],[11511,11511],[11510,11510]]],[1553830991439,["zyx@DESKTOP-60KJ218",[[-1,11517,"普通变量"]],[11517,11521],[11517,11517]]],[1553830992486,["zyx@DESKTOP-60KJ218",[[1,11511,"\n"]],[11511,11511],[11512,11512]]],[1553830993431,["zyx@DESKTOP-60KJ218",[[1,11511,"普通变量"]],[11511,11511],[11515,11515]]],[1553830994686,["zyx@DESKTOP-60KJ218",[[-1,11522,"\n"]],[11522,11522],[11521,11521]]],[1553830997907,["zyx@DESKTOP-60KJ218",[[1,11534,":"]],[11534,11534],[11535,11535]]],[1553830999919,["zyx@DESKTOP-60KJ218",[[1,11537,"\n"]],[11536,11536],[11537,11537]]],[1553831011758,["zyx@DESKTOP-60KJ218",[[1,11537,"* 父类静态变量\n* 父类静态代码块\n* 子类静态变量\n* 子类静态代码块\n* 父类普通变量\n* 父类普通代码块\n* 父类构造函数\n* 子类普通变量\n* 子类普通代码块\n* 子类构造函数"]],[11537,11537],[11650,11650]]],[1553831021329,["zyx@DESKTOP-60KJ218",[[1,11500,"* "],[1,11505,"* "],[1,11511,"* "],[1,11516,"* "],[1,11522,"* "],[-1,11526,"\n"]],[11500,11527],[11546,11546]]],[1553831026262,["zyx@DESKTOP-60KJ218",[[1,11547,"* \n"]],[11546,11546],[11549,11549]]],[1553831028167,["zyx@DESKTOP-60KJ218",[[-1,11547,"* "]],[11549,11549],[11547,11547]]],[1553831031742,["zyx@DESKTOP-60KJ218",[[1,11671,"* \n"]],[11670,11670],[11673,11673]]],[1553831032760,["zyx@DESKTOP-60KJ218",[[-1,11671,"* "]],[11673,11673],[11672,11672]]],[1553831033877,["zyx@DESKTOP-60KJ218",[[1,11672,"\n"]],[11672,11672],[11673,11673]]],[1553831039955,["zyx@DESKTOP-60KJ218",[[1,11672,"——"]],[11672,11672],[11674,11674]]],[1553831041181,["zyx@DESKTOP-60KJ218",[[-1,11672,"——"]],[11674,11674],[11672,11672]]],[1553831042015,["zyx@DESKTOP-60KJ218",[[1,11672,"_)"]],[11672,11672],[11674,11674]]],[1553831042096,["zyx@DESKTOP-60KJ218",[[-1,11673,")"],[1,11674,"_"]],[11674,11674],[11673,11673]]],[1553831044171,["zyx@DESKTOP-60KJ218",[[1,11673,"hanyou"]],[11673,11673],[11679,11679]]],[1553831045548,["zyx@DESKTOP-60KJ218",[[-1,11673,"hanyou"]],[11679,11679],[11673,11673]]],[1553831049180,["zyx@DESKTOP-60KJ218",[[1,11673,"含有接口的"]],[11673,11673],[11678,11678]]],[1553831050966,["zyx@DESKTOP-60KJ218",[[1,11680,"\n"]],[11679,11679],[11680,11680]]],[1553831103086,["zyx@DESKTOP-60KJ218",[[1,11677,"、抽象类、实现类"]],[11677,11677],[11685,11685]]],[1553831139232,["zyx@DESKTOP-60KJ218",[[1,11688,"* 接口静态变量\n* 抽象类静态变量\n* 抽象类静态代码块\n* 实现类静态变量\n* 实习类静态代码块\n* 抽象类普通变量\n* 抽象类普通代码块\n* 抽象类构造函数\n* 实现类普通变量\n* 实现类普通代码块\n* 实现类构造函数"]],[11688,11688],[11822,11822]]],[1553831141366,["zyx@DESKTOP-60KJ218",[[1,11823,"* \n"]],[11822,11822],[11825,11825]]],[1553831142495,["zyx@DESKTOP-60KJ218",[[-1,11823,"* "]],[11825,11825],[11824,11824]]],[1553831212367,["zyx@DESKTOP-60KJ218",[[1,11824,"\n"]],[11823,11823],[11824,11824]]],[1553831212582,["zyx@DESKTOP-60KJ218",[[1,11824,"**Q23.Java类的初始化顺序**"]],[11824,11824],[11843,11843]]],[1553831213230,["zyx@DESKTOP-60KJ218",[[1,11844,"\n"]],[11843,11843],[11844,11844]]],[1553831214160,["zyx@DESKTOP-60KJ218",[[1,11845,"\n"]],[11844,11844],[11845,11845]]],[1553831225574,["zyx@DESKTOP-60KJ218",[[-1,11830,"Java类的初始化顺序"]],[11841,11841],[11830,11830]]],[1553831228198,["zyx@DESKTOP-60KJ218",[[1,11830,"private、"]],[11830,11830],[11838,11838]]],[1553831229869,["zyx@DESKTOP-60KJ218",[[-1,11837,"、"]],[11838,11838],[11837,11837]]],[1553831243094,["zyx@DESKTOP-60KJ218",[[1,11837,"可以通过反射访问,那么private的意义是什么"]],[11837,11837],[11861,11861]]],[1553831244334,["zyx@DESKTOP-60KJ218",[[1,11866,"\n"]],[11863,11863],[11864,11864]]],[1553831245006,["zyx@DESKTOP-60KJ218",[[1,11867,"\n"]],[11864,11864],[11865,11865]]],[1553831268860,["zyx@DESKTOP-60KJ218",[[1,11865,"private其实质是以"]],[11865,11865],[11877,11877]]],[1553831269725,["zyx@DESKTOP-60KJ218",[[-1,11874,"质是以"]],[11877,11877],[11874,11874]]],[1553831309654,["zyx@DESKTOP-60KJ218",[[1,11874,"只是一种Java编写规范,并不具备绝对安全的特征,当外部类对对象进行调用时,可以看到"]],[11874,11874],[11916,11916]]],[1553831316109,["zyx@DESKTOP-60KJ218",[[1,11916,"清晰的类结构。"]],[11916,11916],[11923,11923]]],[1553831316750,["zyx@DESKTOP-60KJ218",[[1,11926,"\n"]],[11923,11923],[11924,11924]]],[1553831317215,["zyx@DESKTOP-60KJ218",[[1,11927,"\n"]],[11924,11924],[11925,11925]]],[1553831320894,["zyx@DESKTOP-60KJ218",[[1,11925,"**Q23.private可以通过反射访问,那么private的意义是什么**\n"]],[11925,11925],[11965,11965]]],[1553831322728,["zyx@DESKTOP-60KJ218",[[1,11968,"\n"]],[11965,11965],[11966,11966]]],[1553831323990,["zyx@DESKTOP-60KJ218",[[-1,11968,"\n"]],[11968,11968],[11967,11967]]],[1553831330405,["zyx@DESKTOP-60KJ218",[[-1,11929,"3"]],[11930,11930],[11929,11929]]],[1553831330565,["zyx@DESKTOP-60KJ218",[[1,11929,"4"]],[11929,11929],[11930,11930]]],[1553831359623,["zyx@DESKTOP-60KJ218",[[-1,11929,"4"]],[11930,11930],[11929,11929]]],[1553831360754,["zyx@DESKTOP-60KJ218",[[1,11929,"4"]],[11929,11929],[11930,11930]]],[1553831366718,["zyx@DESKTOP-60KJ218",[[-1,11931,"private可以通过反射访问,那么private的意义是什么"]],[11962,11962],[11931,11931]]],[1553831370323,["zyx@DESKTOP-60KJ218",[[1,11931,"局部变量"]],[11931,11931],[11935,11935]]],[1553831385119,["zyx@DESKTOP-60KJ218",[[1,11935,"为何要显示赋值,否则编译不通过"]],[11935,11935],[11950,11950]]],[1553831389065,["zyx@DESKTOP-60KJ218",[[1,11956,"\n"]],[11953,11953],[11954,11954]]],[1553831411407,["zyx@DESKTOP-60KJ218",[[1,11954,"成员变量可以不经过初始化赋值,儿砸"]],[11954,11954],[11971,11971]]],[1553831412390,["zyx@DESKTOP-60KJ218",[[-1,11966,"赋值,儿砸"]],[11971,11971],[11966,11966]]],[1553831444582,["zyx@DESKTOP-60KJ218",[[-1,11954,"成员变量可以不经过初始化"]],[11966,11966],[11954,11954]]],[1553831450908,["zyx@DESKTOP-60KJ218",[[1,11954,"局部变量的赋值具有"]],[11954,11954],[11963,11963]]],[1553831452551,["zyx@DESKTOP-60KJ218",[[-1,11961,"具有"]],[11963,11963],[11961,11961]]],[1553831457111,["zyx@DESKTOP-60KJ218",[[1,11961,"和取值是由先"]],[11961,11961],[11967,11967]]],[1553831457569,["zyx@DESKTOP-60KJ218",[[-1,11964,"是由先"]],[11967,11967],[11964,11964]]],[1553831462021,["zyx@DESKTOP-60KJ218",[[1,11964,"是由局队形的"]],[11964,11964],[11970,11970]]],[1553831462750,["zyx@DESKTOP-60KJ218",[[-1,11966,"局队形的"]],[11970,11970],[11966,11966]]],[1553831472654,["zyx@DESKTOP-60KJ218",[[1,11966,"绝对性的先后顺序,有"]],[11966,11966],[11976,11976]]],[1553831473046,["zyx@DESKTOP-60KJ218",[[-1,11975,"有"]],[11976,11976],[11975,11975]]],[1553831489101,["zyx@DESKTOP-60KJ218",[[1,11975,"是由编译器来决定"]],[11975,11975],[11983,11983]]],[1553831498606,["zyx@DESKTOP-60KJ218",[[-1,11975,"是"]],[11976,11976],[11975,11975]]],[1553831503992,["zyx@DESKTOP-60KJ218",[[1,11982,",这是一红"]],[11982,11982],[11987,11987]]],[1553831504535,["zyx@DESKTOP-60KJ218",[[-1,11985,"一红"]],[11987,11987],[11985,11985]]],[1553831518684,["zyx@DESKTOP-60KJ218",[[1,11985,"一种约束,防止局部变量忘记赋值。"]],[11985,11985],[12001,12001]]],[1553831522255,["zyx@DESKTOP-60KJ218",[[-1,11989,","]],[11990,11990],[11989,11989]]],[1553831531513,["zyx@DESKTOP-60KJ218",[[1,11989,"。编译不通过是因为要"]],[11989,11989],[11999,11999]]],[1553831534319,["zyx@DESKTOP-60KJ218",[[-1,12009,"。"]],[12010,12010],[12009,12009]]],[1553831543184,["zyx@DESKTOP-60KJ218",[[1,12009,",而引起的失误。"]],[12009,12009],[12017,12017]]],[1553831544930,["zyx@DESKTOP-60KJ218",[[1,12020,"\n"]],[12017,12017],[12018,12018]]],[1553831545127,["zyx@DESKTOP-60KJ218",[[1,12021,"\n"]],[12018,12018],[12019,12019]]],[1553831549839,["zyx@DESKTOP-60KJ218",[[1,12019,"**Q24.局部变量为何要显示赋值,否则编译不通过**"]],[12019,12019],[12046,12046]]],[1553831552111,["zyx@DESKTOP-60KJ218",[[-1,12023,"4"]],[12024,12024],[12023,12023]]],[1553831552291,["zyx@DESKTOP-60KJ218",[[1,12023,"5"]],[12023,12023],[12024,12024]]],[1553831558527,["zyx@DESKTOP-60KJ218",[[-1,12025,"局部变量为何要显示赋值,否则编译不通过"]],[12044,12044],[12025,12025]]],[1553831622797,["zyx@DESKTOP-60KJ218",[[1,12025,"静态变量与实例变量的区别"]],[12025,12025],[12037,12037]]],[1553831624654,["zyx@DESKTOP-60KJ218",[[1,12042,"\n"]],[12039,12039],[12040,12040]]],[1553831624803,["zyx@DESKTOP-60KJ218",[[1,12043,"\n"]],[12040,12040],[12041,12041]]],[1553831633959,["zyx@DESKTOP-60KJ218",[[1,12041,"静态变量使用static生命"]],[12041,12041],[12055,12055]]],[1553831634795,["zyx@DESKTOP-60KJ218",[[-1,12053,"生命"]],[12055,12055],[12053,12053]]],[1553831669702,["zyx@DESKTOP-60KJ218",[[1,12053,"声明时,属于类,也称为类变量或者全局变量,"]],[12053,12053],[12074,12074]]],[1553831675070,["zyx@DESKTOP-60KJ218",[[1,12074,"程序只要加载成"]],[12074,12074],[12081,12081]]],[1553831675615,["zyx@DESKTOP-60KJ218",[[-1,12080,"成"]],[12081,12081],[12080,12080]]],[1553831682160,["zyx@DESKTOP-60KJ218",[[1,12080,",静态变量就可以使用,"]],[12080,12080],[12091,12091]]],[1553831684551,["zyx@DESKTOP-60KJ218",[[-1,12090,","]],[12091,12091],[12090,12090]]],[1553831688240,["zyx@DESKTOP-60KJ218",[[1,12090,"。<别人》"]],[12090,12090],[12095,12095]]],[1553831689519,["zyx@DESKTOP-60KJ218",[[-1,12092,"别人》"]],[12095,12095],[12092,12092]]],[1553831690701,["zyx@DESKTOP-60KJ218",[[1,12092,"br>"]],[12092,12092],[12095,12095]]],[1553831690984,["zyx@DESKTOP-60KJ218",[[1,12098,"\n"]],[12095,12095],[12096,12096]]],[1553831694145,["zyx@DESKTOP-60KJ218",[[1,12096,"实例变量的"]],[12096,12096],[12101,12101]]],[1553831695783,["zyx@DESKTOP-60KJ218",[[-1,12100,"的"]],[12101,12101],[12100,12100]]],[1553831707750,["zyx@DESKTOP-60KJ218",[[1,12100,"属于某个对象属性,必须常见"]],[12100,12100],[12113,12113]]],[1553831708351,["zyx@DESKTOP-60KJ218",[[-1,12111,"常见"]],[12113,12113],[12111,12111]]],[1553831720576,["zyx@DESKTOP-60KJ218",[[1,12111,"创建实例对象,其实实例变量才会"]],[12111,12111],[12126,12126]]],[1553831732982,["zyx@DESKTOP-60KJ218",[[-1,12118,"其实"]],[12120,12120],[12118,12118]]],[1553831735614,["zyx@DESKTOP-60KJ218",[[-1,12122,"才"]],[12123,12123],[12122,12122]]],[1553831738885,["zyx@DESKTOP-60KJ218",[[1,12123,"分配"]],[12123,12123],[12125,12125]]],[1553831754718,["zyx@DESKTOP-60KJ218",[[-1,12117,",实例变量会分配"]],[12125,12125],[12117,12117]]],[1553831755989,["zyx@DESKTOP-60KJ218",[[1,12117,"。"]],[12117,12117],[12118,12118]]],[1553831758240,["zyx@DESKTOP-60KJ218",[[1,12121,"\n"]],[12118,12118],[12119,12119]]],[1553831758402,["zyx@DESKTOP-60KJ218",[[1,12122,"\n"]],[12119,12119],[12120,12120]]],[1553831788567,["zyx@DESKTOP-60KJ218",[[1,12120,"**Q25.静态变量与实例变量的区别**"]],[12120,12120],[12140,12140]]],[1553831792878,["zyx@DESKTOP-60KJ218",[[-1,12126,"静态变量与实例变量的区别"]],[12138,12138],[12126,12126]]],[1553831798706,["zyx@DESKTOP-60KJ218",[[1,12126,"解释一下什么是构造器"]],[12126,12126],[12136,12136]]],[1553831799873,["zyx@DESKTOP-60KJ218",[[1,12141,"\n"]],[12138,12138],[12139,12139]]],[1553831800049,["zyx@DESKTOP-60KJ218",[[1,12142,"\n"]],[12139,12139],[12140,12140]]],[1553831806925,["zyx@DESKTOP-60KJ218",[[1,12140,"在穿件对象是执行初始化,"]],[12140,12140],[12152,12152]]],[1553831810553,["zyx@DESKTOP-60KJ218",[[-1,12141,"穿件"]],[12143,12143],[12141,12141]]],[1553831811950,["zyx@DESKTOP-60KJ218",[[1,12141,"创建"]],[12141,12141],[12143,12143]]],[1553831815496,["zyx@DESKTOP-60KJ218",[[-1,12145,"是"]],[12146,12146],[12145,12145]]],[1553831816720,["zyx@DESKTOP-60KJ218",[[1,12145,"时"]],[12145,12145],[12146,12146]]],[1553831836184,["zyx@DESKTOP-60KJ218",[[1,12152,"通过new关键字来调用构造器,构造器返回该类对兴华"]],[12152,12152],[12177,12177]]],[1553831837847,["zyx@DESKTOP-60KJ218",[[-1,12172,"该类对兴华"]],[12177,12177],[12172,12172]]],[1553831850286,["zyx@DESKTOP-60KJ218",[[1,12172,"该类对象,但这个对象"]],[12172,12172],[12182,12182]]],[1553831865712,["zyx@DESKTOP-60KJ218",[[1,12182,"并不全由构造器负责,"]],[12182,12182],[12192,12192]]],[1553831869159,["zyx@DESKTOP-60KJ218",[[-1,12191,","]],[12192,12192],[12191,12191]]],[1553831885149,["zyx@DESKTOP-60KJ218",[[1,12191,"。构造器不能被继承,因此不能重写,但是可以重载。"]],[12191,12191],[12215,12215]]],[1553831895256,["zyx@DESKTOP-60KJ218",[[-1,12124,"5"]],[12125,12125],[12124,12124]]],[1553831895385,["zyx@DESKTOP-60KJ218",[[1,12124,"6"]],[12124,12124],[12125,12125]]],[1553831909254,["zyx@DESKTOP-60KJ218",[[1,12215,"一个子类在显示调用父类"]],[12215,12215],[12226,12226]]],[1553831917514,["zyx@DESKTOP-60KJ218",[[1,12226,"构造器时,必须用super"]],[12226,12226],[12239,12239]]],[1553831918417,["zyx@DESKTOP-60KJ218",[[1,12242,"\n"]],[12239,12239],[12240,12240]]],[1553831918567,["zyx@DESKTOP-60KJ218",[[1,12243,"\n"]],[12240,12240],[12241,12241]]],[1553831938312,["zyx@DESKTOP-60KJ218",[[1,12242,"**Q26.解释一下什么是构造器**\n"]],[12241,12241],[12260,12260]]],[1553831939736,["zyx@DESKTOP-60KJ218",[[-1,12241,"\n"]],[12241,12241],[12240,12240]]],[1553831941655,["zyx@DESKTOP-60KJ218",[[-1,12245,"6"]],[12246,12246],[12245,12245]]],[1553831942679,["zyx@DESKTOP-60KJ218",[[1,12245,"7"]],[12245,12245],[12246,12246]]],[1553831945110,["zyx@DESKTOP-60KJ218",[[-1,12247,"解释一下什么是构造器"]],[12257,12257],[12247,12247]]],[1553831947854,["zyx@DESKTOP-60KJ218",[[1,12247,"1、"]],[12247,12247],[12249,12249]]],[1553831948777,["zyx@DESKTOP-60KJ218",[[-1,12248,"、"]],[12249,12249],[12248,12248]]],[1553831951944,["zyx@DESKTOP-60KJ218",[[1,12248,"/0he "]],[12248,12248],[12253,12253]]],[1553831953447,["zyx@DESKTOP-60KJ218",[[-1,12250,"he "]],[12253,12253],[12250,12250]]],[1553831966919,["zyx@DESKTOP-60KJ218",[[1,12250,"和1.0/0.0有什么区别"]],[12250,12250],[12263,12263]]],[1553831968240,["zyx@DESKTOP-60KJ218",[[1,12268,"\n"]],[12265,12265],[12266,12266]]],[1553831969465,["zyx@DESKTOP-60KJ218",[[1,12269,"\n"]],[12266,12266],[12267,12267]]],[1553831986214,["zyx@DESKTOP-60KJ218",[[1,12267,"1/0会爆出异常,而1.0/0.0时"]],[12267,12267],[12285,12285]]],[1553831987608,["zyx@DESKTOP-60KJ218",[[-1,12284,"时"]],[12285,12285],[12284,12284]]],[1553831989143,["zyx@DESKTOP-60KJ218",[[1,12284,"是 "]],[12284,12284],[12286,12286]]],[1553831989736,["zyx@DESKTOP-60KJ218",[[-1,12285," "]],[12286,12286],[12285,12285]]],[1553831991137,["zyx@DESKTOP-60KJ218",[[1,12285,"无穷大"]],[12285,12285],[12288,12288]]],[1553831991929,["zyx@DESKTOP-60KJ218",[[1,12291,"\n"]],[12288,12288],[12289,12289]]],[1553831992081,["zyx@DESKTOP-60KJ218",[[1,12292,"\n"]],[12289,12289],[12290,12290]]],[1553832120881,["zyx@DESKTOP-60KJ218",[[1,12290,"**Q27.1/0和1.0/0.0有什么区别**"]],[12290,12290],[12314,12314]]],[1553832122831,["zyx@DESKTOP-60KJ218",[[-1,12294,"7"]],[12295,12295],[12294,12294]]],[1553832123028,["zyx@DESKTOP-60KJ218",[[1,12294,"8"]],[12294,12294],[12295,12295]]],[1553832130078,["zyx@DESKTOP-60KJ218",[[-1,12296,"1/0和1.0/0.0有什么区别"]],[12312,12312],[12296,12296]]],[1553832133270,["zyx@DESKTOP-60KJ218",[[1,12296,"将字节流"]],[12296,12296],[12300,12300]]],[1553832134119,["zyx@DESKTOP-60KJ218",[[-1,12297,"字节流"]],[12300,12300],[12297,12297]]],[1553832150427,["zyx@DESKTOP-60KJ218",[[1,12297,"GBK字节流转换为UT"]],[12297,12297],[12308,12308]]],[1553832151820,["zyx@DESKTOP-60KJ218",[[1,12308,"F-8"]],[12308,12308],[12311,12311]]],[1553832155081,["zyx@DESKTOP-60KJ218",[[1,12316,"\n"]],[12313,12313],[12314,12314]]],[1553832155575,["zyx@DESKTOP-60KJ218",[[1,12317,"\n"]],[12314,12314],[12315,12315]]],[1553832214144,["zyx@DESKTOP-60KJ218",[[1,12315,"```java\nbyte[] str , dst;\ndst = new String(src , \"GBK\").getBytes(\"UTF-8\");\n```"]],[12315,12315],[12395,12395]]],[1553832303585,["zyx@DESKTOP-60KJ218",[[1,12396,"\n"]],[12394,12394],[12395,12395]]],[1553832303768,["zyx@DESKTOP-60KJ218",[[1,12395,"**Q28.将GBK字节流转换为UTF-8**"]],[12395,12395],[12418,12418]]],[1553832308033,["zyx@DESKTOP-60KJ218",[[-1,12401,"将GBK字节流转换为UTF-8"]],[12416,12416],[12401,12401]]],[1553832309982,["zyx@DESKTOP-60KJ218",[[1,12401,"erwei"]],[12401,12401],[12406,12406]]],[1553832311384,["zyx@DESKTOP-60KJ218",[[-1,12401,"erwei"]],[12406,12406],[12401,12401]]],[1553832315335,["zyx@DESKTOP-60KJ218",[[1,12401,"二维数组的定义"]],[12401,12401],[12408,12408]]],[1553832316802,["zyx@DESKTOP-60KJ218",[[1,12412,"\n"]],[12410,12410],[12411,12411]]],[1553832317298,["zyx@DESKTOP-60KJ218",[[1,12413,"\n"]],[12411,12411],[12412,12412]]],[1553832320751,["zyx@DESKTOP-60KJ218",[[1,12412,"floar"]],[12412,12412],[12417,12417]]],[1553832321617,["zyx@DESKTOP-60KJ218",[[-1,12416,"r"]],[12417,12417],[12416,12416]]],[1553832321756,["zyx@DESKTOP-60KJ218",[[1,12416,"t"]],[12416,12416],[12417,12417]]],[1553832323105,["zyx@DESKTOP-60KJ218",[[-1,12412,"float"]],[12417,12417],[12412,12412]]],[1553832403216,["zyx@DESKTOP-60KJ218",[[1,12412,"```java\nfloat f[][] = new float[6][6];\nfloat []f[] = new float[6][6];\nfloat [][]f = new float[6][6];\nfloat [][]f = new float[6][];\n```"]],[12412,12412],[12548,12548]]],[1553832518344,["zyx@DESKTOP-60KJ218",[[1,12548,"\n"]],[12548,12548],[12549,12549]]],[1553832519201,["zyx@DESKTOP-60KJ218",[[1,12549,"\n"]],[12548,12548],[12549,12549]]],[1553832796375,["zyx@DESKTOP-60KJ218",[[1,12548," "]],[12548,12548],[12549,12549]]]],null,"zyx@DESKTOP-60KJ218"],["18b99c71-f54f-4063-9d29-a7231aa2717e",1553940274017,"# JavaSE篇\n\n@toc\n\n### Q&S基础部分\n\n**Q1.JDK 和 JRE 有什么区别?**\n\nJDK是功能齐全的Java软件开发包。JRE 是 Java运行时环境。\nJDK拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb),它能够创建和编译程序。\nJRE 是 Java程序运行所需的内容的集合,它包含了 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序,只运行程序。\n\n**Q2.Java的基本类型有哪些?它们各自相对应的封装类又是什么?请说明int和它的封装类之间的区别。**\n\n_Java的基本类型有8种:_\n整数型:byte、short、int、long(对应位数:8,16,32,64)\n浮点型:float、double(对应位数:32,64)\n字符型:char(对应位数:16)\n布尔类型:boolean\n\n_对应的封装类:_\n整数型包装类:Byte,Short,Integer,Long\n浮点型包装类:Float,Double\n字符型包装类:Character\n布尔类型包装类:Boolean\n\n_Integer与int的区别:_\nint 的默认值为0,而 Integer 的默认值为 null,即 Integer 可以区分出未赋值和值为0的区别,int 则无法表达出未赋值的情况。例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用 Integer。\n\n**Q3.请说出作用域 public,private,protected,以及default的区别**\n\n流传的面试题中default经常被写成friendly,这两者没有区别,但是Java中没有friendly关键字。\npublic:共有的,表明该数据对所有人开放,可以直接调\nprivate:私有的,可以理解为自己的私有财产,仅自己可以使用。\nprotected:受保护的,可以理解为有一群人组成一个社团,这个社团里的人可以使用,后代也可以使用。这个社团就相当于一个包,在同一个包中的类便可以访问,子类也可以访问。\ndefault:默认的,在同一个包中的类可以访问,同一个包中的子类也可以访问,但是当子类在其他包中,就不能访问。\n\n\n###### **Q4.一个\".java\"源文件中是否可以包括多个类(不是内部类)?有什么限制?**\n\n可以包含多个类,但是只有一个类可以使用public来修饰,并且文件名称必须与public修饰的类名称相同。\n\n###### **Q5.switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?**\n\nswitch表达式中,只能是int类型或者Integer或者枚举类型。byte、short、char可以隐式转换成int类型,因此可以使用这三种类型的表达式,那么long、String类型就不能应用。\n\n###### **Q6.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?**\n\n前者中s1+1会自动进行类型转换,结果是int型的,s1是short类型,将整型赋值给short型会出错。而后者中+=语句Java编译时会自动识别类型,并进行特殊处理,因此后者没有错误。\n\n###### **Q7.用最有效率的方法算出 2 乘以 8 等于几?用最有效的方法算出奇数和偶数 ?**\n\n2\\*8=16,我们可以得到2的二进制位10,而16的二进制数为10000,发现2的二进制数中的1向左移动三位就可以得到16的二进制数。因此我们可以使用位移运算来快速计算2\\<\\<3。\n奇数的二进制数最后一位总是1,而偶数的二进制数总是0,因此我们可以使用与运算来进行奇偶数的识别。例如这个数为n,if((n&1)= =1)时,此数就是奇数;if((n&1)= =0)时,此数为偶数。\n\n**Q8.什么是引用类型?**\n\n在Java中类型可分为两大类:值类型与引用类型。值类型就是基本数据类型(如int ,double 等),而引用类型,是指除了基本的变量类型之外的所有类型(如通过 class 定义的类型)。常用引用类型为数组,接口,类(尤其String类,最常见,最长考)。所有的类型在内存中都会分配一定的存储空间(形参在使用的时候也会分配存储空间,方法调用完成之后,这块存储空间自动消失),基本的变量类型只有一块存储空间(分配在stack中), 而引用类型有两块存储空间(一块在stack中,一块在heap中)。\n\n1) 引用是一种数据类型(保存在stack中),保存对象在内存(heap,堆空间)中的地址,这种类型即不是我们平时所说的简单数据类型也不是类实例(对象);\n2) 不同的引用可能指向同一个对象,换句话说,一个对象可以有多个引用,即该类类型的变量。\n引用其实就像是一个对象的名字或者别名 (alias),一个对象在内存中会请求一块空间来保存数据,根据对象的大小,它可能需要占用的空间大小也不等。访问对象的时候,我们不会直接是访问对象在内存中的数据,而是通过引用去访问。引用也是一种数据类型,我们可以把它想象为类似 C++ 语言中指针的东西,它指示了对象在内存中的地址——只不过我们不能够观察到这个地址究竟是什么。\n如果我们定义了不止一个引用指向同一个对象,那么这些引用是不相同的,因为引用也是一种数据类型,需要一定的内存空间(stack,栈空间)来保存。但是它们的值是相同的,都指示同一个对象在内存(heap,堆空间)的中位置。\n\n**Q9.== 和 equals 的区别是什么?**\n\n对于基本类型和引用类型 == 的作用效果是不同的,基本类型:比较的是值是否相同;引用类型:比较的是引用是否相同;\nequals \nequals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。String 重写了 Object 的 equals 方法,把引用比较改成了值比较。\n\n**Q10.Java 中操作字符串都有哪些类?它们之间有什么区别?**\n\n主要是String、StringBuffer、StringBuild类。\nString 类是 final 类型的,因此不可以继承这个类、不能修改这个类,底层源码中有针对String数据的修改方法,都是重新创建了一个String对象,而原来的String对象未曾改变。对于字符串常量,如果内容相同,Java 认为它们代表同 一个 String 对象。而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。字符串如果是变量相加,先开空间,在拼接。字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。\n\n但是为了提高效率节省空间并且可以更改对String类型数据直接更改,我们可使用用StringBuffer 类。StringBuffer线程安全,同步,效率低,开销大,因此可以改用StringBuilder。StringBuilder线程不安全,异步,效率高。\n\n**Q11.什么是同步和异步?什么是线程安全?**\n\n同步:可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。如打电话,通信双方不能断(我们是同时进行,同步),你一句我一句,这样的好处是,对方想表达的信息我马上能收到,但是,我在打着电话,我无法做别的事情。\n\n异步:执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。如收发收短信,对方不用保证此刻我一定在手机旁,同时,我也不用时刻留意手机有没有来短信。这样的话,我看着视频,然后来了短信,我就处理短信(也可以不处理),接着再看视频。\n\n线程安全:多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他操作,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。一个类或者程序所提供的接口对于线程来说是[原子操作](https://baike.baidu.com/item/%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C)或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。\n\n线程安全问题大多是由[全局变量](https://baike.baidu.com/item/%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F)及[静态变量](https://baike.baidu.com/item/%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F)引起的,局部变量逃逸也可能导致线程安全问题。\n\n若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑[线程同步](https://baike.baidu.com/item/%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5),否则的话就可能影响线程安全。\n\n**Q12.String str1=\"i\"与 String str2=new String(“i”)一样吗?**\n\nString str2 = new String(“i”)会创建2(1)个对象,String str1 = “i”创建1(0)个对象。 \n==注==:当字符串常量池中有对象hello时括号内成立!\nstr1 ==str2 的判断为false;\nstr1 .equals(str2 )为true\n\n**Q13.String 类的常用方法都有那些?**\n\n1、求字符串长度\n**public int length()**//返回该字符串的长度\n2、求字符串某一位置字符\n**public char charAt(int index)**//返回字符串中指定位置的字符;注意字符串中第一个字符索引是0,最后一个是length()-1。\n3、提取子串\n用String类的substring方法可以提取字符串中的子串,该方法有两种常用参数:\n1\\)**public String substring(int beginIndex)**//该方法从beginIndex位置起,从当前字符串中取出剩余的字符作为一个新的字符串返回。\n2\\)**public String substring(int beginIndex, int endIndex)**//该方法从beginIndex位置起,从当前字符串中取出到endIndex-1位置的字符作为一个新的字符串返回。\n4、字符串比较\n1\\)**public int compareTo(String anotherString)**//该方法是对字符串内容按字典顺序进行大小比较,通过返回的整数值指明当前字符串与参数字符串的大小关系。若当前对象比参数大则返回正整数,反之返回负整数,相等返回0。\n2\\)**public int compareToIgnore(String anotherString)**//与compareTo方法相似,但忽略大小写。\n3\\)**public boolean equals(Object anotherObject)**//比较当前字符串和参数字符串,在两个字符串相等的时候返回true,否则返回false。\n4\\)**public boolean equalsIgnoreCase(String anotherString)**//与equals方法相似,但忽略大小写。\n5、字符串连接\n**public String concat(String str)**//将参数中的字符串str连接到当前字符串的后面,效果等价于\"+\"。\n6、字符串中单个字符查找\n1\\)**public int indexOf(int ch/String str)**//用于查找当前字符串中字符或子串,返回字符或子串在当前字符串中从左边起首次出现的位置,若没有出现则返回-1。\n2\\)**public int indexOf(int ch/String str, int fromIndex)**//改方法与第一种类似,区别在于该方法从fromIndex位置向后查找。\n3\\)**public int lastIndexOf(int ch/String str)**//该方法与第一种类似,区别在于该方法从字符串的末尾位置向前查找。\n4\\)**public int lastIndexOf(int ch/String str, int fromIndex)**//该方法与第二种方法类似,区别于该方法从fromIndex位置向前查找。\n7、字符串中字符的大小写转换\n1\\)**public String toLowerCase()**//返回将当前字符串中所有字符转换成小写后的新串\n2\\)**public String toUpperCase()**//返回将当前字符串中所有字符转换成大写后的新串\n8、字符串中字符的替换\n1\\)**public String replace(char oldChar, char newChar)**//用字符newChar替换当前字符串中所有的oldChar字符,并返回一个新的字符串。\n2\\)**public String replaceFirst(String regex, String replacement)**//该方法用字符replacement的内容替换当前字符串中遇到的第一个和字符串regex相匹配的子串,应将新的字符串返回。\n3\\)**public String replaceAll(String regex, String replacement)**//该方法用字符replacement的内容替换当前字符串中遇到的所有和字符串regex相匹配的子串,应将新的字符串返回。\n9、其他类方法\n1\\)**String trim()**//截去字符串两端的空格,但对于中间的空格不处理。\n2\\)**boolean statWith(String prefix)**或**boolean endWith(String suffix)**//用来比较当前字符串的起始字符或子字符串prefix和终止字符或子字符串suffix是否和当前字符串相同,重载方法中同时还可以指定比较的开始位置offset。\n3\\)**regionMatches(boolean b, int firstStart, String other, int otherStart, int length)**//从当前字符串的firstStart位置开始比较,取长度为length的一个子字符串,other字符串从otherStart位置开始,指定另外一个长度为length的字符串,两字符串比较,当b为true时字符串不区分大小写。\n4\\)**contains(String** **str)**//判断参数s是否被包含在字符串中,并返回一个布尔类型的值。\n10、字符串转换为基本类型\njava.lang包中有Byte、Short、Integer、Float、Double类的调用方法:\n1\\)**public static byte parseByte(String s)**\n2\\)**public static short parseShort(String s)**\n3\\)**public static short parseInt(String s)**\n4\\)**public static long parseLong(String s)**\n5\\)**public static float parseFloat(String s)**\n6\\)**public static double parseDouble(String s)**\n11、基本类型转换为字符串类型\nString类中提供了String valueOf()放法,用作基本类型转换为字符串类型。\n1\\)**static String valueOf(char data\\[])**\n2\\)**static String valueOf(char data\\[], int offset, int count)**\n3\\)**static String valueOf(boolean b)**\n4\\)**static String valueOf(char c)**\n5\\)**static String valueOf(int i)**\n6\\)**static String valueOf(long l)**\n7\\)**static String valueOf(float f)**\n8\\)**static String valueOf(double d)**\n12、进制转换\n使用Long类中的方法得到整数之间的各种进制转换的方法:\nLong.toBinaryString(long l)\nLong.toOctalString(long l)\nLong.toHexString(long l)\nLong.toString(long l, int p)//p作为任意进制\n\n**Q14.如何将字符串反转?**\n\n```java\nimport java.util.Scanner;\n/**\n * 使用Java中的StringBuffer完成字符串的翻转\n * @author xuanxuan\n *\n */\npublic class ReverseString {\n\tpublic static void main(String[] args) {\n\t\tScanner in = new Scanner(System.in);\n\t\t//如果使用next()方法读取字符串时,读到空格就会停止,而使用nextLine()方法会读取空格\n\t\tString s = in.nextLine();\n\t\tSystem.out.println(ReverseString(s));\n\t\tin.close();\n\t}\n\t\n\tpublic static String ReverseString(String str) {\n\t\tStringBuffer bu = new StringBuffer();\n\t\tbu.append(str);\n\t\tString str1 = bu.reverse().toString();\n\t\treturn str1;\n\t}\n}\n```\n\n**Q15.final 在 java 中有什么作用?**\n\nfinal 修饰的类叫最终类,该类不能被继承。\nfinal 修饰的方法不能被重写。\nfinal 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。\n使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容 还是可以改变的。\n\n**Q16.java 中的 Math.round(-1.5) 等于多少?**\n\nCeil向上取整,floor向下取整。Round先对一个树+0.5,然后向下取整。因此这个表达式的值为-1\n\n**Q17.是否可以从一个 static 方法内部发出对非 static 方法的调用?**\n\n不可以。因为非 static 方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对 象上进行方法调用,而 static 方法调用时不需要创建对象,可以直接调用。也就是说,当一 个 static 方法被调用时,可能还没有创建任何实例对象,如果从一个 static 方法中发出对非 static 方法的调用,那个非 static 方法是关联到哪个对象上的呢?这个逻辑无法成立,所以, 一个 static 方法内部发出对非 static 方法的调用。/\n\n**Q18.Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型?**\n\nOverload是重载的意思,Override是覆盖的意思,也就是重写。\n\n重载 Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。\n\n重写 Override 表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。\n\n子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。\n\n子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是 private 类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。\n\n如果几个 Overloaded 的方法的参数列表不一样,它们的返回者类型当然也可以不一样。如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载 Overload?\n\n这是不行的,我们可以用反证法来说明这个问题, 因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如,我们调用 map.remove(key)方法时,虽然 remove 方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java 就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。 override 可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法 进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外, 我们在继承中也可能会在子类覆盖父类中的方法。\n\n在覆盖要注意以下的几点:\n\n1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;\n\n2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;\n\n3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;\n\n4、被覆盖的方法不能为 private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。\n\noverload 对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM 就会根据不同的参数样式,来选择合适的方法执行。在使用重载要注意以下的几点:\n\n1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是 fun(int,float), 但是不能为 fun(int,int)); 2、不能通过访问权限、返回类型、抛出的异常进行重载;\n\n3、方法的异常类型和数目不会对重载造成影响;\n\n4、对于继承来说,如果某一方法在父类中是访问权限是 priavte,那么就不能在子类对其进 行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。\n\n**Q19.构造器 Constructor 是否可被 override?**\n\n构造器 Constructor 不能被继承,因此不能重写 Override,但可以被重载 Overload。\n\n**Q20.abstract class 和 interface 有什么区别?**\n\nAbstract:\n\n- 含有 abstract 修饰符的 class 即为抽象类,abstract 类不能创建的实例对象。\n- 含有 abstract 方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。\n- 如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为 abstract 类型。\n\n接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。\n接口中的方法定义默认为 public abstract 类型,接口中的成员变量类型默认为public static final。\n\n两者区别:\n1.抽象类可以有构造方法,接口中不能有构造方法。 \n2.抽象类中可以有普通成员变量,接口中没有普通成员变量 \n3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象 的普通方法。\n4.抽象类中的抽象方法的访问类型可以是 public,protected 和(默认类型,虽然 eclipse 下不报错,但应该也不行),但接口中的抽象方法只能是 public 类型的,并且默认即 为 public abstract 类型。 \n5.抽象类中可以包含静态方法,接口中不能包含静态方法 \n6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任 意,但接口中定义的变量只能是 public static final 类型,并且默认即为 public static final 类 型。\n7.一个类可以实现多个接口,但只能继承一个抽象类。\n\n**Q21.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可 继承具体类(concrete class)?抽象类中是否可以有静态的 main 方法?**\n\n接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类中 可以有静态的 main 方法。抽象类与普通类的唯一区别:就是不能创建实例对象和允许有 abstract 方法。\n\n**Q22.Java 中实现多态的机制是什么?**\n\n靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方 法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运 行的那个对象的方法,而不是引用变量的类型中定义的方法。\n\n**Q22.说出一些常用的类,包,接口,请各举 5 个?**\n\n常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer java.util.Date,System,Class,List,HashMap\n常用的包:java.lang java.io java.util java.sql,javax.servlet,org.hibernate\n常用的接口:Remote List Map Document NodeList,Servlet,HttpServletRequest,HttpServletResponse,Transaction(Hibernate)、 Session(Hibernate),HttpSession\n\n**Q23.Java类的初始化顺序**\n\n_普通类中:_\n* 静态变量\n* 静态代码块\n* 普通变量\n* 普通代码块\n* 构造函数\n\n_含有子类的:_\n* 父类静态变量\n* 父类静态代码块\n* 子类静态变量\n* 子类静态代码块\n* 父类普通变量\n* 父类普通代码块\n* 父类构造函数\n* 子类普通变量\n* 子类普通代码块\n* 子类构造函数\n\n_含有接口、抽象类、实现类的_\n* 接口静态变量\n* 抽象类静态变量\n* 抽象类静态代码块\n* 实现类静态变量\n* 实习类静态代码块\n* 抽象类普通变量\n* 抽象类普通代码块\n* 抽象类构造函数\n* 实现类普通变量\n* 实现类普通代码块\n* 实现类构造函数\n\n**Q23.private可以通过反射访问,那么private的意义是什么**\n\nprivate其实只是一种Java编写规范,并不具备绝对安全的特征,当外部类对对象进行调用时,可以看到清晰的类结构。\n\n**Q24.局部变量为何要显示赋值,否则编译不通过**\n\n局部变量的赋值和取值是由绝对性的先后顺序,由编译器来决定,这是一种约束。编译不通过是因为要防止局部变量忘记赋值,而引起的失误。\n\n**Q25.静态变量与实例变量的区别**\n\n静态变量使用static声明时,属于类,也称为类变量或者全局变量,程序只要加载,静态变量就可以使用。<br>\n实例变量属于某个对象属性,必须创建实例对象。\n\n**Q26.解释一下什么是构造器**\n\n在创建对象时执行初始化,通过new关键字来调用构造器,构造器返回该类对象,但这个对象并不全由构造器负责。构造器不能被继承,因此不能重写,但是可以重载。一个子类在显示调用父类构造器时,必须用super\n\n**Q27.1/0和1.0/0.0有什么区别**\n\n1/0会爆出异常,而1.0/0.0是无穷大\n\n**Q28.将GBK字节流转换为UTF-8**\n\n```java\nbyte[] str , dst;\ndst = new String(src , \"GBK\").getBytes(\"UTF-8\");\n```\n\n**Q28.二维数组的定义**\n\n```java\nfloat f[][] = new float[6][6];\nfloat []f[] = new float[6][6];\nfloat [][]f = new float[6][6];\nfloat [][]f = new float[6][];\n```\n\n \n\n### Q&S集合部分\n\n### Q&S线程部分\n\n### Q&S反射部分\n\n### Q&S异常部分\n\n### Q&S对象拷贝部分\n",[[1553940219743,["zyx@DESKTOP-60KJ218",[[1,407,"(单独是"]],[407,407],[411,411]]],[1553940220055,["zyx@DESKTOP-60KJ218",[[-1,410,"是"]],[411,411],[410,410]]],[1553940226744,["zyx@DESKTOP-60KJ218",[[1,410,"使用的时候是int"]],[410,410],[419,419]]],[1553940232629,["zyx@DESKTOP-60KJ218",[[1,416,"会转换成"]],[416,416],[420,420]]],[1553940240764,["zyx@DESKTOP-60KJ218",[[1,423,"类型,树果实"]],[423,423],[429,429]]],[1553940241410,["zyx@DESKTOP-60KJ218",[[-1,426,"树果实"]],[429,429],[426,426]]],[1553940248825,["zyx@DESKTOP-60KJ218",[[1,426,"如果是数组,则会是"]],[426,426],[435,435]]],[1553940252607,["zyx@DESKTOP-60KJ218",[[-1,434,"是"]],[435,435],[434,434]]],[1553940267759,["zyx@DESKTOP-60KJ218",[[1,434,"转换成byte类型,因此有"]],[434,434],[447,447]]],[1553940270548,["zyx@DESKTOP-60KJ218",[[-1,446,"有"]],[447,447],[446,446]]],[1553940288353,["zyx@DESKTOP-60KJ218",[[1,446,"对应两种位数,32和8位。)"]],[446,446],[460,460]]],[1553940289967,["zyx@DESKTOP-60KJ218",[[-1,458,"。"]],[459,459],[458,458]]],[1553940697987,["zyx@DESKTOP-60KJ218",[[1,12600,"Q29。"]],[12600,12600],[12604,12604]]],[1553940699272,["zyx@DESKTOP-60KJ218",[[-1,12603,"。"]],[12604,12604],[12603,12603]]],[1553940705723,["zyx@DESKTOP-60KJ218",[[1,12603,".String"]],[12603,12603],[12610,12610]]],[1553940706972,["zyx@DESKTOP-60KJ218",[[1,12611," "]],[12610,12610],[12611,12611]]],[1553940707669,["zyx@DESKTOP-60KJ218",[[1,12611,"str"]],[12611,12611],[12614,12614]]],[1553940708405,["zyx@DESKTOP-60KJ218",[[1,12615," "]],[12614,12614],[12615,12615]]],[1553940708569,["zyx@DESKTOP-60KJ218",[[1,12615,"="]],[12615,12615],[12616,12616]]],[1553940708651,["zyx@DESKTOP-60KJ218",[[1,12617," "]],[12616,12616],[12617,12617]]],[1553940709326,["zyx@DESKTOP-60KJ218",[[1,12617,"new"]],[12617,12617],[12620,12620]]],[1553940709491,["zyx@DESKTOP-60KJ218",[[1,12621," "]],[12620,12620],[12621,12621]]],[1553940713147,["zyx@DESKTOP-60KJ218",[[1,12621,"String(\""]],[12621,12621],[12629,12629]]],[1553940713234,["zyx@DESKTOP-60KJ218",[[-1,12628,"\""],[1,12629,"“"]],[12629,12629],[12629,12629]]],[1553940718954,["zyx@DESKTOP-60KJ218",[[1,12629,"abc\""]],[12629,12629],[12633,12633]]],[1553940719045,["zyx@DESKTOP-60KJ218",[[-1,12632,"\""],[1,12633,"”"]],[12633,12633],[12633,12633]]],[1553940727468,["zyx@DESKTOP-60KJ218",[[1,12633,")在内存中如何分配?"]],[12633,12633],[12643,12643]]],[1553940727669,["zyx@DESKTOP-60KJ218",[[1,12643,"\n"]],[12643,12643],[12644,12644]]],[1553940736269,["zyx@DESKTOP-60KJ218",[[1,12644,"“"]],[12644,12644],[12645,12645]]],[1553940736956,["zyx@DESKTOP-60KJ218",[[-1,12644,"“"]],[12645,12645],[12644,12644]]],[1553940738555,["zyx@DESKTOP-60KJ218",[[1,12644,"\""]],[12644,12644],[12645,12645]]],[1553940738641,["zyx@DESKTOP-60KJ218",[[-1,12644,"\""],[1,12645,"“"]],[12645,12645],[12645,12645]]],[1553940742528,["zyx@DESKTOP-60KJ218",[[1,12645,"abc\""]],[12645,12645],[12649,12649]]],[1553940742578,["zyx@DESKTOP-60KJ218",[[-1,12648,"\""],[1,12649,"”"]],[12649,12649],[12649,12649]]],[1553940751972,["zyx@DESKTOP-60KJ218",[[1,12649,"保存在常量池中,str"]],[12649,12649],[12660,12660]]],[1553940763849,["zyx@DESKTOP-60KJ218",[[1,12660,"作为对象被保存在对重"]],[12660,12660],[12670,12670]]],[1553940764533,["zyx@DESKTOP-60KJ218",[[-1,12668,"对重"]],[12670,12670],[12668,12668]]],[1553940792390,["zyx@DESKTOP-60KJ218",[[1,12668,"堆中,然而Java7后,将常量池放在了堆了"]],[12668,12668],[12689,12689]]],[1553940792923,["zyx@DESKTOP-60KJ218",[[-1,12688,"了"]],[12689,12689],[12688,12688]]],[1553940794688,["zyx@DESKTOP-60KJ218",[[1,12688,"里。"]],[12688,12688],[12690,12690]]],[1553940799300,["zyx@DESKTOP-60KJ218",[[1,12600,"**"],[1,12643,"**"]],[12600,12643],[12600,12647]]],[1553940801029,["zyx@DESKTOP-60KJ218",[[1,12648,"\n"]],[12647,12647],[12648,12648]]],[1553941158666,["zyx@DESKTOP-60KJ218",[[1,12698,"\n"]],[12696,12696],[12697,12697]]],[1553941159107,["zyx@DESKTOP-60KJ218",[[1,12699,"\n"]],[12697,12697],[12698,12698]]],[1553941169894,["zyx@DESKTOP-60KJ218",[[1,12698,"Q30.下列程序中"]],[12698,12698],[12707,12707]]],[1553941175894,["zyx@DESKTOP-60KJ218",[[1,12707,"有什么错误?"]],[12707,12707],[12713,12713]]],[1553941180125,["zyx@DESKTOP-60KJ218",[[1,12698,"**"],[1,12713,"**"]],[12698,12713],[12698,12717]]],[1553941181745,["zyx@DESKTOP-60KJ218",[[1,12719,"\n"]],[12717,12717],[12718,12718]]],[1553941181895,["zyx@DESKTOP-60KJ218",[[1,12720,"\n"]],[12718,12718],[12719,12719]]],[1553941278933,["zyx@DESKTOP-60KJ218",[[1,12719,"```java\n父类{方法1}\n\n子类extends父类{重写方法1,方法2}\n\n父类 对象 = new子类();\n\n\n```"]],[12719,12719],[12784,12784]]],[1553941281886,["zyx@DESKTOP-60KJ218",[[1,12784,"\n"]],[12784,12784],[12785,12785]]],[1553941289078,["zyx@DESKTOP-60KJ218",[[1,12784,"对象只能电泳"]],[12784,12784],[12790,12790]]],[1553941289791,["zyx@DESKTOP-60KJ218",[[-1,12788,"电泳"]],[12790,12790],[12788,12788]]],[1553941292810,["zyx@DESKTOP-60KJ218",[[1,12788,"调用"]],[12788,12788],[12790,12790]]],[1553941296260,["zyx@DESKTOP-60KJ218",[[1,12790,"方法1"]],[12790,12790],[12793,12793]]],[1553941313245,["zyx@DESKTOP-60KJ218",[[1,12784,"此代码不能通过编译,"]],[12784,12784],[12794,12794]]],[1553941327180,["zyx@DESKTOP-60KJ218",[[-1,12794,"对象只能调用方法1"]],[12803,12803],[12794,12794]]],[1553941329625,["zyx@DESKTOP-60KJ218",[[1,12794,"对"]],[12794,12794],[12795,12795]]],[1553941329933,["zyx@DESKTOP-60KJ218",[[-1,12794,"对"]],[12795,12795],[12794,12794]]],[1553941340329,["zyx@DESKTOP-60KJ218",[[1,12794,"编译器认为对象是父类类型,"]],[12794,12794],[12807,12807]]],[1553941346859,["zyx@DESKTOP-60KJ218",[[1,12771," "]],[12771,12771],[12772,12772]]],[1553941355463,["zyx@DESKTOP-60KJ218",[[1,12808,"弗雷中"]],[12808,12808],[12811,12811]]],[1553941356265,["zyx@DESKTOP-60KJ218",[[-1,12808,"弗雷中"]],[12811,12811],[12808,12808]]],[1553941380092,["zyx@DESKTOP-60KJ218",[[1,12808,"父类中没有子类中的方法2,队形"]],[12808,12808],[12823,12823]]],[1553941381085,["zyx@DESKTOP-60KJ218",[[-1,12821,"队形"]],[12823,12823],[12821,12821]]],[1553941389987,["zyx@DESKTOP-60KJ218",[[1,12821,"对象只能调用重写的"]],[12821,12821],[12830,12830]]],[1553941390480,["zyx@DESKTOP-60KJ218",[[-1,12827,"重写的"]],[12830,12830],[12827,12827]]],[1553941397238,["zyx@DESKTOP-60KJ218",[[1,12827,"父类中的方法1."]],[12827,12827],[12835,12835]]],[1553941398812,["zyx@DESKTOP-60KJ218",[[-1,12834,"."]],[12835,12835],[12834,12834]]],[1553941399643,["zyx@DESKTOP-60KJ218",[[1,12834,","]],[12834,12834],[12835,12835]]],[1553941400380,["zyx@DESKTOP-60KJ218",[[-1,12834,","]],[12835,12835],[12834,12834]]],[1553941400822,["zyx@DESKTOP-60KJ218",[[1,12834,"."]],[12834,12834],[12835,12835]]],[1553941401832,["zyx@DESKTOP-60KJ218",[[-1,12834,"."]],[12835,12835],[12834,12834]]],[1553941403124,["zyx@DESKTOP-60KJ218",[[1,12834,"。"]],[12834,12834],[12835,12835]]],[1553941404504,["zyx@DESKTOP-60KJ218",[[1,12836,"\n"]],[12835,12835],[12836,12836]]],[1553941405512,["zyx@DESKTOP-60KJ218",[[1,12837,"\n"]],[12836,12836],[12837,12837]]],[1553941451023,["zyx@DESKTOP-60KJ218",[[1,12837,"Q31.JDBCzhong"]],[12837,12837],[12850,12850]]],[1553941451947,["zyx@DESKTOP-60KJ218",[[-1,12845,"zhong"]],[12850,12850],[12845,12845]]],[1553941464424,["zyx@DESKTOP-60KJ218",[[1,12845,"中获取结果集的操作有哪些?"]],[12845,12845],[12858,12858]]],[1553941468052,["zyx@DESKTOP-60KJ218",[[1,12837,"**"],[1,12858,"**"]],[12837,12858],[12837,12862]]],[1553941469601,["zyx@DESKTOP-60KJ218",[[-1,12837,"**Q31.JDBC中获取结果集的操作有哪些?**"],[1,12862,"\n"]],[12837,12862],[12838,12838]]],[1553941470790,["zyx@DESKTOP-60KJ218",[[1,12837,"**Q31.JDBC中获取结果集的操作有哪些?**"],[-1,12837,"\n"]],[12838,12838],[12837,12862]]],[1553941472246,["zyx@DESKTOP-60KJ218",[[1,12863,"\n"]],[12862,12862],[12863,12863]]],[1553941472708,["zyx@DESKTOP-60KJ218",[[1,12864,"\n"]],[12863,12863],[12864,12864]]],[1553941646129,["zyx@DESKTOP-60KJ218",[[1,12864,"```java\n1.Statement sta = con.createStatment();\n ResultSet rs = sta.executeQuery(\"SQL语句\");\n\n2.PreparedStatement pst = con.prepareStatement(\"SQL语句\");\n ResultSet rs = pst.executeQuery();\n```\n"]],[12864,12864],[13056,13056]]],[1553942015959,["zyx@DESKTOP-60KJ218",[[1,13055,"**Q31.JDBC中获取结果集的操作有哪些?**"]],[13055,13055],[13080,13080]]],[1553942017222,["zyx@DESKTOP-60KJ218",[[1,13081,"\n"]],[13080,13080],[13081,13081]]],[1553942017521,["zyx@DESKTOP-60KJ218",[[1,13081,"**Q31.JDBC中获取结果集的操作有哪些?**"]],[13081,13081],[13106,13106]]],[1553942018120,["zyx@DESKTOP-60KJ218",[[1,13107,"\n"]],[13106,13106],[13107,13107]]],[1553942018427,["zyx@DESKTOP-60KJ218",[[1,13107,"**Q31.JDBC中获取结果集的操作有哪些?**"]],[13107,13107],[13132,13132]]],[1553942018987,["zyx@DESKTOP-60KJ218",[[1,13133,"\n"]],[13132,13132],[13133,13133]]],[1553942019213,["zyx@DESKTOP-60KJ218",[[1,13133,"**Q31.JDBC中获取结果集的操作有哪些?**"]],[13133,13133],[13158,13158]]],[1553942022319,["zyx@DESKTOP-60KJ218",[[-1,13059,"1"]],[13060,13060],[13059,13059]]],[1553942022474,["zyx@DESKTOP-60KJ218",[[1,13059,"2"]],[13059,13059],[13060,13060]]],[1553942024031,["zyx@DESKTOP-60KJ218",[[-1,13085,"1"]],[13086,13086],[13085,13085]]],[1553942024256,["zyx@DESKTOP-60KJ218",[[1,13085,"3"]],[13085,13085],[13086,13086]]],[1553942024996,["zyx@DESKTOP-60KJ218",[[-1,13111,"1"]],[13112,13112],[13111,13111]]],[1553942025536,["zyx@DESKTOP-60KJ218",[[1,13111,"4"]],[13111,13111],[13112,13112]]],[1553942026180,["zyx@DESKTOP-60KJ218",[[-1,13137,"1"]],[13138,13138],[13137,13137]]],[1553942026474,["zyx@DESKTOP-60KJ218",[[1,13137,"5"]],[13137,13137],[13138,13138]]],[1553942034610,["zyx@DESKTOP-60KJ218",[[-1,13062,"DBC中获取结果集的操作有哪些"],[1,13077,"a"]],[13062,13077],[13063,13063]]],[1553942037999,["zyx@DESKTOP-60KJ218",[[1,13063,"vazh"]],[13063,13063],[13067,13067]]],[1553942038957,["zyx@DESKTOP-60KJ218",[[-1,13065,"zh"]],[13067,13067],[13065,13065]]],[1553942048018,["zyx@DESKTOP-60KJ218",[[1,13065,"中的IO流有几种"]],[13065,13065],[13073,13073]]],[1553942059886,["zyx@DESKTOP-60KJ218",[[-1,13083,"JDBC中获取结果集的操作有哪些"]],[13099,13099],[13083,13083]]],[1553942073019,["zyx@DESKTOP-60KJ218",[[1,13083,"BIO\\NIO\\AIO中"]],[13083,13083],[13095,13095]]],[1553942076283,["zyx@DESKTOP-60KJ218",[[1,13095,"的区别"]],[13095,13095],[13098,13098]]],[1553942084047,["zyx@DESKTOP-60KJ218",[[-1,13108,"JDBC中获取结果集的操作有哪些"],[1,13124,"F"]],[13108,13124],[13109,13109]]],[1553942094870,["zyx@DESKTOP-60KJ218",[[1,13109,"iles的常用方法"]],[13109,13109],[13118,13118]]],[1553942100408,["zyx@DESKTOP-60KJ218",[[-1,13122,"**Q35.JDBC中获取结果集的操作有哪些?**"]],[13122,13147],[13122,13122]]],[1553942101135,["zyx@DESKTOP-60KJ218",[[-1,13122,"\n"]],[13122,13122],[13121,13121]]],[1553942120168,["zyx@DESKTOP-60KJ218",[[1,13188,"\n"]],[13187,13187],[13188,13188]]],[1553942120486,["zyx@DESKTOP-60KJ218",[[1,13188,"### Q&S对象拷贝部分"]],[13188,13188],[13201,13201]]],[1553942122210,["zyx@DESKTOP-60KJ218",[[1,13188,"\n"]],[13187,13187],[13188,13188]]],[1553942125735,["zyx@DESKTOP-60KJ218",[[-1,13196,"对象拷贝部分"],[1,13202,"J"]],[13196,13202],[13197,13197]]],[1553942128892,["zyx@DESKTOP-60KJ218",[[1,13197,"ava常考"]],[13197,13197],[13202,13202]]],[1553942133433,["zyx@DESKTOP-60KJ218",[[1,13202,"排序"]],[13202,13202],[13204,13204]]],[1553942225044,["zyx@DESKTOP-60KJ218",[[-1,4506,"\\"],[-1,4599,"\\"],[-1,4725,"\\"],[-1,4856,"\\"],[-1,4936,"\\"],[-1,5031,"\\"],[-1,5205,"\\"],[-1,5305,"\\"],[-1,5401,"\\"],[-1,5483,"\\"],[-1,5599,"\\"],[-1,5658,"\\"],[-1,5729,"\\"],[-1,5830,"\\"],[-1,5960,"\\"],[-1,6095,"\\"],[-1,6141,"\\"],[-1,6295,"\\"],[-1,6498,"\\"],[-1,6625,"\\"],[-1,6671,"\\"],[-1,6719,"\\"],[-1,6765,"\\"],[-1,6811,"\\"],[-1,6859,"\\"],[-1,6971,"\\"],[-1,7014,"\\"],[-1,7080,"\\"],[-1,7120,"\\"],[-1,7157,"\\"],[-1,7193,"\\"],[-1,7230,"\\"],[-1,7268,"\\"],[-1,11552,"* "],[1,11555,"\n-"],[-1,11561,"* "],[1,11564,"-"],[-1,11571,"* "],[1,11574,"-"],[-1,11580,"* "],[1,11583,"-"],[-1,11590,"* "],[1,11593,"-"],[-1,11609,"* "],[1,11612,"\n-"],[-1,11620,"* "],[1,11623,"-"],[-1,11632,"* "],[1,11635,"-"],[-1,11643,"* "],[1,11646,"-"],[-1,11655,"* "],[1,11658,"-"],[-1,11666,"* "],[1,11669,"-"],[-1,11678,"* "],[1,11681,"-"],[-1,11689,"* "],[1,11692,"-"],[-1,11700,"* "],[1,11703,"-"],[-1,11712,"* "],[1,11715,"-"],[-1,11740,"* "],[1,11743,"\n-"],[-1,11751,"* "],[1,11754,"-"],[-1,11763,"* "],[1,11766,"-"],[-1,11776,"* "],[1,11779,"-"],[-1,11788,"* "],[1,11791,"-"],[-1,11801,"* "],[1,11804,"-"],[-1,11813,"* "],[1,11816,"-"],[-1,11826,"* "],[1,11829,"-"],[-1,11838,"* "],[1,11841,"-"],[-1,11850,"* "],[1,11853,"-"],[-1,11863,"* "],[1,11866,"-"],[-1,12778,"\n\n"],[1,13055,"\n"],[1,13087,"\\"],[1,13090,"\\"],[1,13121,"\n"]],[0,13205],[0,0]]],[1553942233408,["zyx@DESKTOP-60KJ218",[[1,12994,"\n"]],[12993,12993],[12994,12994]]],[1553942234092,["zyx@DESKTOP-60KJ218",[[1,12995,"\n"]],[12994,12994],[12995,12995]]],[1553942235564,["zyx@DESKTOP-60KJ218",[[1,12996,"\n"]],[12994,12994],[12995,12995]]],[1553942245440,["zyx@DESKTOP-60KJ218",[[-1,12987,"有"]],[12988,12988],[12987,12987]]],[1553942248416,["zyx@DESKTOP-60KJ218",[[1,12987,"分"]],[12987,12987],[12988,12988]]],[1553942305781,["zyx@DESKTOP-60KJ218",[[1,12995,"按流向分(站在程序角度考虑)\n\n 输入流(input)\n\n 输出流(output)\n\n按类型分:\n\n 字节流(InputStream/OutputStream)\n\n 任何文件都可以通过字节流进行传输。\n\n 字符流(Reader/Writer)\n\n 非纯文本文件,不能用字符流,会导致文件格式破坏,不能正常执行。\n\n 节点流(低级流:直接跟输入输出源对接)\n\n FileInputStream/FileOutputStream/FileReader/FileWriter/PrintStream/PrintWriter.\n\n 处理流(高级流:建立在低级流的基础上)\n\n 转换流:InputStreamReader/OutputStreamWriter,字节流转字符流/字符流转字节流\n\n 缓冲流:BufferedInputStream/BufferedOutputStream BufferedReader/BufferedReader可对节点流经行包装,使读写更快\n--------------------- \n作者:tang834133957 \n来源:CSDN \n原文:https://blog.csdn.net/tang834133957/article/details/81271514 \n版权声明:本文为博主原创文章,转载请附上博文链接!"]],[12995,12995],[13623,13623]]],[1553942445489,["zyx@DESKTOP-60KJ218",[[1,13178,"\n"]],[13177,13177],[13178,13178]]],[1553942449930,["zyx@DESKTOP-60KJ218",[[1,13178,"按功能分"]],[13178,13178],[13182,13182]]],[1553942453825,["zyx@DESKTOP-60KJ218",[[-1,13187,"节点流(低级流:直接跟输入输出源对接)\n"]],[13187,13207],[13187,13187]]],[1553942456423,["zyx@DESKTOP-60KJ218",[[1,13187,"节点流(低级流:直接跟输入输出源对接)\n"]],[13187,13187],[13187,13207]]],[1553942457580,["zyx@DESKTOP-60KJ218",[[-1,13178,"按功能分"]],[13182,13182],[13178,13178]]],[1553942460931,["zyx@DESKTOP-60KJ218",[[1,13179,"\n"]],[13177,13177],[13178,13178]]],[1553942465022,["zyx@DESKTOP-60KJ218",[[1,13178,"按类型分:"]],[13178,13178],[13183,13183]]],[1553942467926,["zyx@DESKTOP-60KJ218",[[-1,13179,"类型"]],[13181,13181],[13179,13179]]],[1553942469648,["zyx@DESKTOP-60KJ218",[[1,13179,"功能"]],[13179,13179],[13181,13181]]],[1553942479887,["zyx@DESKTOP-60KJ218",[[-1,13490,"--------------------- \n作者:tang834133957 \n来源:CSDN \n原文:https://blog.csdn.net/tang834133957/article/details/81271514 \n版权声明:本文为博主原创文章,转载请附上博文链接!"]],[13490,13630],[13490,13490]]],[1553942481129,["zyx@DESKTOP-60KJ218",[[-1,13491,"\n"]],[13490,13490],[13489,13489]]],[1553942483852,["zyx@DESKTOP-60KJ218",[[1,13518,"\n"]],[13517,13517],[13518,13518]]],[1553942484297,["zyx@DESKTOP-60KJ218",[[1,13519,"\n"]],[13518,13518],[13519,13519]]],[1553942485762,["zyx@DESKTOP-60KJ218",[[1,13520,"\n"]],[13519,13519],[13520,13520]]],[1553942542468,["zyx@DESKTOP-60KJ218",[[1,13518,"同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。"]],[13518,13518],[13547,13547]]],[1553942623242,["zyx@DESKTOP-60KJ218",[[1,13548,"BIO\n\n 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有的话,客户端会线程会等待请求结束后才继续执行。"]],[13548,13548],[13732,13732]]],[1553942629234,["zyx@DESKTOP-60KJ218",[[-1,13553," "]],[13558,13558],[13553,13553]]],[1553942629652,["zyx@DESKTOP-60KJ218",[[-1,13552,"\n"]],[13553,13553],[13552,13552]]],[1553942633365,["zyx@DESKTOP-60KJ218",[[1,13548,"**"],[1,13551,"**"]],[13548,13551],[13548,13555]]],[1553942662914,["zyx@DESKTOP-60KJ218",[[-1,13652,"一堆"]],[13654,13654],[13652,13652]]],[1553942924743,["zyx@DESKTOP-60KJ218",[[-1,13712,"线程会"]],[13715,13715],[13712,13712]]],[1553942956351,["zyx@DESKTOP-60KJ218",[[1,13712,"使用服务端相应的线程来处理请求,"]],[13712,13712],[13728,13728]]],[1553942960757,["zyx@DESKTOP-60KJ218",[[-1,13728,"等待"]],[13730,13730],[13728,13728]]],[1553942961922,["zyx@DESKTOP-60KJ218",[[1,13728,"在"]],[13728,13728],[13729,13729]]],[1553942967735,["zyx@DESKTOP-60KJ218",[[1,13739,"其他请求"]],[13739,13739],[13743,13743]]],[1553942969224,["zyx@DESKTOP-60KJ218",[[1,13746,"\n"]],[13744,13744],[13745,13745]]],[1553942970039,["zyx@DESKTOP-60KJ218",[[1,13747,"\n"]],[13745,13745],[13746,13746]]],[1553942971001,["zyx@DESKTOP-60KJ218",[[-1,13747,"\n"]],[13746,13746],[13745,13745]]],[1553942980003,["zyx@DESKTOP-60KJ218",[[1,13745,"NIO\n\n NIO本身是基于事件驱动思想来完成的,其主要想解决的是BIO的大并发问题: 在使用同步I/O的网络应用中,如果要同时处理多个客户端请求,或是在客户端要同时和多个服务器进行通讯,就必须使用多线程来处理。也就是说,将每一个客户端请求分配给一个线程来单独处理。这样做虽然可以达到我们的要求,但同时又会带来另外一个问题。由于每创建一个线程,就要为这个线程分配一定的内存空间(也叫工作存储器),而且操作系统本身也对线程的总数有一定的限制。如果客户端的请求过多,服务端程序可能会因为不堪重负而拒绝客户端的请求,甚至服务器可能会因此而瘫痪。"]],[13745,13745],[14017,14017]]],[1553942983170,["zyx@DESKTOP-60KJ218",[[-1,13750," "]],[13754,13754],[13750,13750]]],[1553942983679,["zyx@DESKTOP-60KJ218",[[-1,13749,"\n"]],[13750,13750],[13749,13749]]],[1553942985486,["zyx@DESKTOP-60KJ218",[[1,13745,"**"],[1,13748,"**"]],[13745,13748],[13745,13752]]],[1553942996553,["zyx@DESKTOP-60KJ218",[[-1,13784,"大"]],[13785,13785],[13784,13784]]],[1553943012953,["zyx@DESKTOP-60KJ218",[[-1,13790,"在使用同步I/O的网络应用中,"]],[13790,13805],[13790,13790]]],[1553943056371,["zyx@DESKTOP-60KJ218",[[1,14000,"NIO基于Reactor,当socket有流可读或可写入socket时,操作系统会相应的通知引用程序进行处理,应用再将流读取到缓冲区或写入操作系统。 也就是说,这个时候,已经不是一个连接就要对应一个处理线程了,而是有效的请求,对应一个线程,当连接没有数据时,是没有工作线程来处理的。"]],[14000,14000],[14142,14142]]],[1553943058704,["zyx@DESKTOP-60KJ218",[[1,14000,"\n"]],[14000,14000],[14001,14001]]],[1553943065956,["zyx@DESKTOP-60KJ218",[[-1,13789," 如果要同时处理多个客户端请求,或是在客户端要同时和多个服务器进行通讯,就必须使用多线程来处理。也就是说,将每一个客户端请求分配给一个线程来单独处理。这样做虽然可以达到我们的要求,但同时又会带来另外一个问题。由于每创建一个线程,就要为这个线程分配一定的内存空间(也叫工作存储器),而且操作系统本身也对线程的总数有一定的限制。如果客户端的请求过多,服务端程序可能会因为不堪重负而拒绝客户端的请求,甚至服务器可能会因此而瘫痪。"]],[13789,14000],[13789,13789]]],[1553943067735,["zyx@DESKTOP-60KJ218",[[1,13745,"\n"]],[13744,13744],[13745,13745]]],[1553943069958,["zyx@DESKTOP-60KJ218",[[1,13745,"缺点"],[-1,13865," "],[1,13866," "]],[13745,13745],[13747,13747]]],[1553943071027,["zyx@DESKTOP-60KJ218",[[1,13747,": 如果要同时处理多个客户端请求,或是在客户端要同时和多个服务器进行通讯,就必须使用多线程来处理。也就是说,将每一个客户端请求分配给一个线程来单独处理。这样做虽然可以达到我们的要求,但同时又会带来另外一个问题。由于每创建一个线程,就要为这个线程分配一定的内存空间(也叫工作存储器),而且操作系统本身也对线程的总数有一定的限制。如果客户端的请求过多,服务端程序可能会因为不堪重负而拒绝客户端的请求,甚至服务器可能会因此而瘫痪。"]],[13747,13747],[13959,13959]]],[1553943074766,["zyx@DESKTOP-60KJ218",[[1,13745,"**"],[1,13748,"**"]],[13745,13748],[13745,13752]]],[1553943079137,["zyx@DESKTOP-60KJ218",[[1,13745,"_"],[1,13752,"_"]],[13745,13752],[13745,13754]]],[1553943087026,["zyx@DESKTOP-60KJ218",[[-1,14009,":"]],[14010,14010],[14009,14009]]],[1553943087762,["zyx@DESKTOP-60KJ218",[[1,14009,","]],[14009,14009],[14010,14010]]],[1553943092765,["zyx@DESKTOP-60KJ218",[[-1,14005,"并发问题"]],[14009,14009],[14005,14005]]],[1553943094890,["zyx@DESKTOP-60KJ218",[[1,14005,"缺点"]],[14005,14005],[14007,14007]]],[1553943107324,["zyx@DESKTOP-60KJ218",[[-1,14084," "]],[14085,14085],[14084,14084]]],[1553943107885,["zyx@DESKTOP-60KJ218",[[-1,14083," "]],[14084,14084],[14083,14083]]],[1553943242093,["zyx@DESKTOP-60KJ218",[[-1,13680,"相应"]],[13680,13682],[13680,13680]]],[1553943243026,["zyx@DESKTOP-60KJ218",[[1,13678,"相应"]],[13678,13678],[13680,13680]]],[1553943244605,["zyx@DESKTOP-60KJ218",[[-1,13678,"相应"]],[13680,13680],[13678,13678]]],[1553943250421,["zyx@DESKTOP-60KJ218",[[1,13678,"相对应的"]],[13678,13678],[13682,13682]]],[1553943410948,["zyx@DESKTOP-60KJ218",[[1,14137,"读取或写入"]],[14137,14137],[14142,14142]]],[1553943414735,["zyx@DESKTOP-60KJ218",[[-1,14144,"是"]],[14145,14145],[14144,14144]]],[1553943416845,["zyx@DESKTOP-60KJ218",[[1,14144,"就没有"]],[14144,14144],[14147,14147]]],[1553943550808,["zyx@DESKTOP-60KJ218",[[-1,13549,"*BIO**\n在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立线程等待请求,而客户端发送请求后,先咨询服务端是否有相对应的"],[1,13682," Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个"],[1,13684,"进行处理"],[-1,13687,"没有则会一直等待或者遭到拒绝请求,如果有的话,客户端会使用服务端相应的线程来处理请求,在请求结束后才继续执行其他请求。\n_**缺点:**_ 如果要同时处理多个客户端请求,或是在客户端要同时和多个服务器进行通讯,就必须使用多线程来处理。也就是说,将每"],[1,13811,"这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。\n\n* Java NIO : 同步非阻塞,服务器实现模式为"],[-1,13813,"客户端"],[-1,13818,"分配给"],[-1,13825,"来单独处理。这样做虽然可以达到我们的要求,但同时又会带来另外一个问题。由于每创建一个线程,就要为这个线程分配一定的内存空间(也叫工作存储器),而且操作系统本身也对线程的总数有一定的限制。如果"],[1,13920,",即"],[1,13923,"发送"],[1,13924,"连接"],[-1,13926,"过多,服务端程序可能会因为不堪重负而拒绝客户端的请求,甚至服务器可能会因此而瘫痪。\n**NIO**\nNIO本身是基于事件驱动思想来完成的,其主要想解决的是BIO的缺点,\nNIO基于Reactor,当socket有流可读或可写入socket时,操作系统会相应的通知引用程序"],[1,14061,"都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程"],[-1,14065,",应用再将流读取到缓冲区或写入操作系统。也就是说,这个时候,已经不是"],[1,14099,"。\n\n* Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为"],[-1,14101,"连接就要对应一个处理线程了,而是"],[-1,14119,"的"],[-1,14122,",对应"],[-1,14130,"当连接没有数据读取或写入时,就没有没有工作线程来处理的。"],[1,14158,"客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,"]],[13548,14158],[13829,13829]]],[1553943556550,["zyx@DESKTOP-60KJ218",[[-1,13518,"同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。"]],[13518,13547],[13518,13518]]],[1553943557239,["zyx@DESKTOP-60KJ218",[[-1,13518,"\n"]],[13518,13518],[13517,13517]]],[1553943559547,["zyx@DESKTOP-60KJ218",[[-1,13798,","]],[13799,13799],[13798,13798]]],[1553943560461,["zyx@DESKTOP-60KJ218",[[1,13798,"。"]],[13798,13798],[13799,13799]]],[1553943561538,["zyx@DESKTOP-60KJ218",[[1,13800,"* \n"]],[13799,13799],[13802,13802]]],[1553943562659,["zyx@DESKTOP-60KJ218",[[-1,13800,"* "]],[13802,13802],[13801,13801]]],[1553943573780,["zyx@DESKTOP-60KJ218",[[1,13801,"BIO、NIO、AIO适用场景分析:\n\n* BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。\n\n* NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。\n\n* AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。"]],[13801,13801],[14037,14037]]],[1553943582075,["zyx@DESKTOP-60KJ218",[[1,14039," \n*"]],[14037,14037],[14040,14040]]],[1553943583229,["zyx@DESKTOP-60KJ218",[[-1,14038,"* "]],[14040,14040],[14039,14039]]],[1553943584137,["zyx@DESKTOP-60KJ218",[[1,14039,"\n"]],[14039,14039],[14040,14040]]],[1553943585950,["zyx@DESKTOP-60KJ218",[[-1,14039,"\n"]],[14039,14039],[14038,14038]]],[1553943594583,["zyx@DESKTOP-60KJ218",[[1,13801,"_"],[1,13819,"_"]],[13801,13819],[13801,13821]]],[1553943601065,["zyx@DESKTOP-60KJ218",[[1,14062,"\n"]],[14061,14061],[14062,14062]]],[1553943603525,["zyx@DESKTOP-60KJ218",[[1,14063,"\n"]],[14061,14061],[14062,14062]]],[1553943690361,["zyx@DESKTOP-60KJ218",[[1,14062,"(一)访问文件名或路径\n\n1)String getName() 返回File对象所表示的文件名或文件路径\n\n2)String getPath() 返回File对象所对应的相对路径名。\n\n3)File getAbsoluteFile() 返回File对象的绝对路径文件\n\n4)String getAbsolutePath() 返回File对象所对应的绝对路径名\n\n5)String getParent() 返回File对象所对应目录的父目录\n\n6) boolean renameTo(File dest) 重命名File对象的文件或目录\n\n(二)文件检测\n\n1boolean exists() 判断File对象的文件或目录是否存在\n\n2)bool canWrite() 判断File对象是否可写\n\n3)boolean canRead()判断File对象是否可读\n\n4)boolean isDirectory() 判断File对象是否是目录\n\n5)boolean isFile() 判断File对象是否是文件\n\n6)boolean isAbsolute() 判断File对象是否采用绝对路径\n\n(三)文件信息\n\n1)long length() ; File对象对应文件的长度\n\n2)long lastNodified() File对象最后修改的时间\n\n(四)文件操作\n\n1)boolean createNewFile() ; 检查文件是否存在,当文件不存在时创建一个新的文件\n\n2) boolean delete() 删除File对象所对应的文件或目录 \n\n(五)目录操作\n\n1)boolean mkdir() 创建一个File对象所对应的路径\n\n2)String[] list() 列出File对象所有的子文件名和路径名\n\n3)File[] listFile() 列出File对象的所有子文件或路径\n\n4)static File[] listRoots() 列出系统所有的根路径\n--------------------- \n作者:道不玄 \n来源:CSDN \n原文:https://blog.csdn.net/hdfgo/article/details/78960063 \n版权声明:本文为博主原创文章,转载请附上博文链接!"]],[14062,14062],[15073,15073]]],[1553943698549,["zyx@DESKTOP-60KJ218",[[-1,14951,"--------------------- \n作者:道不玄 \n来源:CSDN \n原文:https://blog.csdn.net/hdfgo/article/details/78960063 \n版权声明:本文为博主原创文章,转载请附上博文链接!"]],[14951,15073],[14951,14951]]],[1553943701080,["zyx@DESKTOP-60KJ218",[[1,14953,"\n"]],[14952,14952],[14953,14953]]],[1553945769901,["zyx@DESKTOP-60KJ218",[[-1,14953,"\n"]],[14952,14952],[14951,14951]]],[1553945773501,["zyx@DESKTOP-60KJ218",[[1,14966,"\n"]],[14965,14965],[14966,14966]]],[1553945773666,["zyx@DESKTOP-60KJ218",[[1,14967,"\n"]],[14966,14966],[14967,14967]]],[1553945778973,["zyx@DESKTOP-60KJ218",[[1,14966,"QS1"]],[14966,14966],[14969,14969]]],[1553945780668,["zyx@DESKTOP-60KJ218",[[-1,14967,"S1"]],[14969,14969],[14967,14967]]],[1553945797714,["zyx@DESKTOP-60KJ218",[[1,14967,"1.Java中的容器:"]],[14967,14967],[14978,14978]]],[1553945798773,["zyx@DESKTOP-60KJ218",[[-1,14977,":"]],[14978,14978],[14977,14977]]],[1553945799552,["zyx@DESKTOP-60KJ218",[[1,14979,"\n"]],[14977,14977],[14978,14978]]],[1553945802477,["zyx@DESKTOP-60KJ218",[[1,14966,"**"],[1,14977,"**"]],[14966,14977],[14966,14981]]],[1553945805016,["zyx@DESKTOP-60KJ218",[[1,14984,"\n"]],[14982,14982],[14983,14983]]],[1553945810446,["zyx@DESKTOP-60KJ218",[[1,14979,"有哪些?"]],[14979,14979],[14983,14983]]],[1553945813592,["zyx@DESKTOP-60KJ218",[[1,14989,"\n"]],[14986,14986],[14987,14987]]],[1553945818862,["zyx@DESKTOP-60KJ218",[[1,14987,"数组\\、"]],[14987,14987],[14991,14991]]],[1553945819545,["zyx@DESKTOP-60KJ218",[[-1,14989,"\\、"]],[14991,14991],[14989,14989]]],[1553945838468,["zyx@DESKTOP-60KJ218",[[1,14989,"、String、List、Set、Map"]],[14989,14989],[15009,15009]]],[1553945857981,["zyx@DESKTOP-60KJ218",[[1,14996,"(底层是字符"]],[14996,14996],[15002,15002]]],[1553945858637,["zyx@DESKTOP-60KJ218",[[-1,15000,"字符"]],[15002,15002],[15000,15000]]],[1553945864549,["zyx@DESKTOP-60KJ218",[[1,15000,"char类型数组)"]],[15000,15000],[15009,15009]]],[1553945883721,["zyx@DESKTOP-60KJ218",[[1,15014,"(线性表,"]],[15014,15014],[15019,15019]]],[1553945887263,["zyx@DESKTOP-60KJ218",[[-1,15018,","]],[15019,15019],[15018,15018]]],[1553945887651,["zyx@DESKTOP-60KJ218",[[1,15018,")"]],[15018,15018],[15019,15019]]],[1553945891701,["zyx@DESKTOP-60KJ218",[[1,15023,"()"]],[15023,15023],[15025,15025]]],[1553945909005,["zyx@DESKTOP-60KJ218",[[1,15024,"无须存储,元素不能重复"]],[15024,15024],[15035,15035]]],[1553945911284,["zyx@DESKTOP-60KJ218",[[1,15040,"("]],[15040,15040],[15041,15041]]],[1553945917553,["zyx@DESKTOP-60KJ218",[[-1,15024,"无须"]],[15026,15026],[15024,15024]]],[1553945919836,["zyx@DESKTOP-60KJ218",[[1,15024,"无序"]],[15024,15024],[15026,15026]]],[1553945924785,["zyx@DESKTOP-60KJ218",[[1,15041,"无序存储,"]],[15041,15041],[15046,15046]]],[1553945931354,["zyx@DESKTOP-60KJ218",[[1,15046,"元素不能重复)"]],[15046,15046],[15053,15053]]],[1553945938557,["zyx@DESKTOP-60KJ218",[[-1,15048,"不能"]],[15050,15050],[15048,15048]]],[1553945940034,["zyx@DESKTOP-60KJ218",[[1,15048,"可以"]],[15048,15048],[15050,15050]]],[1553945969402,["zyx@DESKTOP-60KJ218",[[1,15055,"**Q1.Java中的容器有哪些?**"]],[15055,15055],[15074,15074]]],[1553945971188,["zyx@DESKTOP-60KJ218",[[1,15059,"2"]],[15059,15059],[15060,15060]]],[1553945972950,["zyx@DESKTOP-60KJ218",[[-1,15058,"12"]],[15060,15060],[15058,15058]]],[1553945973469,["zyx@DESKTOP-60KJ218",[[1,15058,"2"]],[15058,15058],[15059,15059]]],[1553945984061,["zyx@DESKTOP-60KJ218",[[-1,15060,"Java中的容器有哪些"],[1,15071,"Collection 和 Collections 有什么区别"]],[15060,15072],[15091,15091]]],[1553945986450,["zyx@DESKTOP-60KJ218",[[1,15094,"\n"]],[15093,15093],[15094,15094]]],[1553945986616,["zyx@DESKTOP-60KJ218",[[1,15095,"\n"]],[15094,15094],[15095,15095]]],[1553945989573,["zyx@DESKTOP-60KJ218",[[1,15096,"\n"]],[15095,15095],[15096,15096]]],[1553946015825,["zyx@DESKTOP-60KJ218",[[1,15095,"1、java.util.Collection 是一个**集合接口(集合类的一个顶级接口)**。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。\n\n Collection \n├List \n│├LinkedList \n│├ArrayList \n│└Vector \n│ └Stack \n└Set\n\n2、Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。\n\n1) 排序(Sort)\n使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此列表内的所有元素都必须是使用指定比较器可相互比较的"]],[15095,15095],[15507,15507]]],[1553946029066,["zyx@DESKTOP-60KJ218",[[-1,15121,"**"]],[15123,15123],[15121,15121]]],[1553946030557,["zyx@DESKTOP-60KJ218",[[-1,15137,"**"]],[15139,15139],[15137,15137]]],[1553946033705,["zyx@DESKTOP-60KJ218",[[1,15117,"_"],[1,15137,"_"]],[15117,15137],[15117,15139]]],[1553946034716,["zyx@DESKTOP-60KJ218",[[1,15117,"=="],[1,15139,"=="]],[15117,15139],[15117,15143]]],[1553946039779,["zyx@DESKTOP-60KJ218",[[1,15117,"_"],[1,15143,"_"]],[15117,15143],[15117,15145]]],[1553946043382,["zyx@DESKTOP-60KJ218",[[-1,15117,"_"],[-1,15144,"_"]],[15117,15145],[15117,15143]]],[1553946043875,["zyx@DESKTOP-60KJ218",[[-1,15117,"=="],[-1,15141,"=="]],[15117,15143],[15117,15139]]],[1553946044663,["zyx@DESKTOP-60KJ218",[[-1,15117,"_"],[-1,15138,"_"]],[15117,15139],[15117,15137]]],[1553946045783,["zyx@DESKTOP-60KJ218",[[1,15117,"=="],[1,15137,"=="]],[15117,15137],[15117,15141]]],[1553946049355,["zyx@DESKTOP-60KJ218",[[1,15117,"_"],[1,15141,"_"]],[15117,15141],[15117,15143]]],[1553946050786,["zyx@DESKTOP-60KJ218",[[-1,15117,"_"],[-1,15142,"_"]],[15117,15143],[15117,15141]]],[1553946052635,["zyx@DESKTOP-60KJ218",[[1,15119,"=="],[1,15139,"=="]],[15117,15141],[15117,15145]]],[1553946053700,["zyx@DESKTOP-60KJ218",[[1,15117,"++"],[1,15145,"++"]],[15117,15145],[15117,15149]]],[1553946055689,["zyx@DESKTOP-60KJ218",[[-1,15117,"++"],[-1,15147,"++"]],[15117,15149],[15117,15145]]],[1553946056859,["zyx@DESKTOP-60KJ218",[[1,15117,"++"],[1,15145,"++"]],[15117,15145],[15117,15149]]],[1553946057446,["zyx@DESKTOP-60KJ218",[[-1,15117,"++"],[-1,15147,"++"]],[15117,15149],[15117,15145]]],[1553946057980,["zyx@DESKTOP-60KJ218",[[-1,15119,"=="],[-1,15141,"=="]],[15117,15145],[15117,15141]]],[1553946059650,["zyx@DESKTOP-60KJ218",[[1,15117,"_"],[1,15141,"_"]],[15117,15141],[15117,15143]]],[1553946060395,["zyx@DESKTOP-60KJ218",[[-1,15117,"_"],[-1,15142,"_"]],[15117,15143],[15117,15141]]],[1553946060863,["zyx@DESKTOP-60KJ218",[[-1,15117,"=="],[-1,15139,"=="]],[15117,15141],[15117,15137]]],[1553946063500,["zyx@DESKTOP-60KJ218",[[1,15117,"++"],[1,15137,"++"]],[15117,15137],[15117,15141]]],[1553946066065,["zyx@DESKTOP-60KJ218",[[-1,15117,"++"],[-1,15139,"++"]],[15117,15141],[15117,15137]]],[1553946068677,["zyx@DESKTOP-60KJ218",[[1,15117,"**"],[1,15137,"**"]],[15117,15137],[15117,15141]]],[1553946072901,["zyx@DESKTOP-60KJ218",[[-1,15117,"**"],[-1,15139,"**"]],[15117,15141],[15117,15137]]],[1553946073256,["zyx@DESKTOP-60KJ218",[[1,15137,"**"]],[15137,15137],[15139,15139]]],[1553946074130,["zyx@DESKTOP-60KJ218",[[1,15121,"**"]],[15121,15121],[15123,15123]]],[1553946074486,["zyx@DESKTOP-60KJ218",[[-1,15095,"1、java.util.Collection 是一个**集合接口(集合类的一个顶级接口)**。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。\n\n Collection \n├List \n│├LinkedList \n│├ArrayList \n│└Vector \n│ └Stack \n└Set\n\n2、Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。\n\n1) 排序(Sort)\n使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此列表内的所有元素都必须是使用指定比较器可相互比较的"]],[15507,15507],[15095,15095]]],[1553946090218,["zyx@DESKTOP-60KJ218",[[1,15095,"1、java.util.Collection 是一个**集合接口(集合类的一个顶级接口)**。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。\n\n Collection \n├List \n│├LinkedList \n│├ArrayList \n│└Vector \n│ └Stack \n└Set\n\n2、Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。\n\n1) 排序(Sort)\n使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此列表内的所有元素都必须是使用指定比较器可相互比较的"]],[15095,15095],[15507,15507]]],[1553946202382,["zyx@DESKTOP-60KJ218",[[1,15509,"\n"]],[15507,15507],[15508,15508]]],[1553946202612,["zyx@DESKTOP-60KJ218",[[1,15508,"2) 混排(Shuffling)\n混排算法所做的正好与 sort 相反: 它打乱在一个 List 中可能有的任何排列的踪迹。也就是说,基于随机源的输入重排该 List, 这样的排列具有相同的可能性(假设随机源是公正的)。这个算法在实现一个碰运气的游戏中是非常有用的。"]],[15508,15508],[15641,15641]]],[1553946204656,["zyx@DESKTOP-60KJ218",[[1,15643,"\n"]],[15641,15641],[15642,15642]]],[1553946213918,["zyx@DESKTOP-60KJ218",[[1,15642,"3) 反转(Reverse)\n使用Reverse方法可以根据元素的自然顺序 对指定列表按降序进行排序。\nCollections.reverse(list)"]],[15642,15642],[15719,15719]]],[1553946218698,["zyx@DESKTOP-60KJ218",[[1,15641,"Collections.Shuffling(list)"]],[15641,15641],[15668,15668]]],[1553946221851,["zyx@DESKTOP-60KJ218",[[-1,15720,"\n"]],[15721,15721],[15720,15720]]],[1553946223240,["zyx@DESKTOP-60KJ218",[[1,15747,"\n"]],[15745,15745],[15746,15746]]],[1553946228900,["zyx@DESKTOP-60KJ218",[[1,15746,"4) 替换所以的元素(Fill)\n使用指定元素替换指定列表中的所有元素。\n\nCollections.fill(li,\"aaa\");"]],[15746,15746],[15811,15811]]],[1553946230785,["zyx@DESKTOP-60KJ218",[[-1,15783,"\n"]],[15784,15784],[15783,15783]]],[1553946231023,["zyx@DESKTOP-60KJ218",[[-1,15782,"\n"]],[15783,15783],[15782,15782]]],[1553946238464,["zyx@DESKTOP-60KJ218",[[1,15810,"5) 拷贝(Copy)\n用两个参数,一个目标 List 和一个源 List, 将源的元素拷贝到目标,并覆盖它的内容。目标 List 至少与源一样长。如果它更长,则在目标 List 中的剩余元素不受影响。\nCollections.copy(list,li): 前面一个参数是目标列表 ,后一个是源列表。"]],[15810,15810],[15960,15960]]],[1553946241106,["zyx@DESKTOP-60KJ218",[[-1,15911,"\n"]],[15912,15912],[15911,15911]]],[1553946242967,["zyx@DESKTOP-60KJ218",[[1,15960,"\n"]],[15959,15959],[15960,15960]]],[1553946251730,["zyx@DESKTOP-60KJ218",[[1,15960,"6) 返回Collections中最小元素(min)\n根据指定比较器产生的顺序,返回给定 collection 的最小元素。collection 中的所有元素都必须是通过指定比较器可相互比较的。\nCollections.min(list)\n\n7) 返回Collections中最小元素(max)\n根据指定比较器产生的顺序,返回给定 collection 的最大元素。collection 中的所有元素都必须是通过指定比较器可相互比较的。\nCollections.max(list)\n\n8) lastIndexOfSubList\n返回指定源列表中最后一次出现指定目标列表的起始位置\nint count = Collections.lastIndexOfSubList(list,li);\n\n9) IndexOfSubList\n返回指定源列表中第一次出现指定目标列表的起始位置\nint count = Collections.indexOfSubList(list,li);\n\n10) Rotate\n根据指定的距离循环移动指定列表中的元素\nCollections.rotate(list,-1);\n如果是负数,则正向移动,正数则方向移动"]],[15960,15960],[16476,16476]]],[1553946255426,["zyx@DESKTOP-60KJ218",[[-1,16021,"。"]],[16022,16022],[16021,16021]]],[1553946258115,["zyx@DESKTOP-60KJ218",[[-1,15252," "],[1,15253," "],[-1,15263," "],[1,15266," "],[-1,15272," "],[1,15275," "],[-1,15288," "],[1,15291," "],[-1,15303," "],[1,15306," "],[-1,15315," "],[1,15318," "],[-1,15327," "],[1,15330," "],[-1,15439," "],[1,15440," "],[1,16021,"。"]],[16021,16021],[16022,16022]]],[1553946261762,["zyx@DESKTOP-60KJ218",[[-1,16303,"\n"]],[16303,16303],[16302,16302]]],[1553946262697,["zyx@DESKTOP-60KJ218",[[-1,16201,"\n"]],[16201,16201],[16200,16200]]],[1553946263541,["zyx@DESKTOP-60KJ218",[[-1,16080,"\n"]],[16080,16080],[16079,16079]]],[1553946264852,["zyx@DESKTOP-60KJ218",[[-1,16393,"\n"]],[16393,16393],[16392,16392]]],[1553946268016,["zyx@DESKTOP-60KJ218",[[-1,16452,"\n"]],[16453,16453],[16452,16452]]],[1553946270436,["zyx@DESKTOP-60KJ218",[[1,16471,"。"]],[16471,16471],[16472,16472]]],[1553946275982,["zyx@DESKTOP-60KJ218",[[-1,15407,"\n"]],[15407,15407],[15406,15406]]],[1553946281526,["zyx@DESKTOP-60KJ218",[[1,16472,"\n"]],[16471,16471],[16472,16472]]],[1553946281717,["zyx@DESKTOP-60KJ218",[[1,16473,"\n"]],[16472,16472],[16473,16473]]],[1553946288124,["zyx@DESKTOP-60KJ218",[[1,16473,"**Q2.Collection 和 Collections 有什么区别?**"]],[16473,16473],[16511,16511]]],[1553946289863,["zyx@DESKTOP-60KJ218",[[-1,16476,"2"]],[16477,16477],[16476,16476]]],[1553946290011,["zyx@DESKTOP-60KJ218",[[1,16476,"3"]],[16476,16476],[16477,16477]]],[1553946337977,["zyx@DESKTOP-60KJ218",[[1,16512,"\n"]],[16511,16511],[16512,16512]]],[1553946338557,["zyx@DESKTOP-60KJ218",[[1,16512,"## List:1.可以允许重复的对象。\n\n## 2.可以插入多个null元素。\n\n## 3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。\n\n## 4.常用的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适。"]],[16512,16512],[16730,16730]]],[1553946341407,["zyx@DESKTOP-60KJ218",[[-1,16512,"## "]],[16512,16515],[16512,16512]]],[1553946342412,["zyx@DESKTOP-60KJ218",[[-1,16531,"## "]],[16531,16535],[16531,16531]]],[1553946343234,["zyx@DESKTOP-60KJ218",[[-1,16551,"## "]],[16551,16557],[16551,16551]]],[1553946345066,["zyx@DESKTOP-60KJ218",[[-1,16594,"## "]],[16594,16605],[16594,16594]]],[1553946346530,["zyx@DESKTOP-60KJ218",[[-1,16554," "]],[16555,16555],[16554,16554]]],[1553946347794,["zyx@DESKTOP-60KJ218",[[-1,16551," "]],[16551,16555],[16551,16551]]],[1553946349320,["zyx@DESKTOP-60KJ218",[[-1,16531," "]],[16531,16534],[16531,16531]]],[1553946350731,["zyx@DESKTOP-60KJ218",[[-1,16530,"\n"]],[16530,16530],[16529,16529]]],[1553946351549,["zyx@DESKTOP-60KJ218",[[-1,16546,"\n"]],[16546,16546],[16545,16545]]],[1553946352343,["zyx@DESKTOP-60KJ218",[[-1,16583,"\n"]],[16583,16583],[16582,16582]]],[1553946355412,["zyx@DESKTOP-60KJ218",[[-1,16517,"1."]],[16519,16519],[16517,16517]]],[1553946357035,["zyx@DESKTOP-60KJ218",[[-1,16528,"2."]],[16528,16530],[16528,16528]]],[1553946358313,["zyx@DESKTOP-60KJ218",[[-1,16542,"3."]],[16542,16544],[16542,16542]]],[1553946359478,["zyx@DESKTOP-60KJ218",[[-1,16577,"4."]],[16577,16579],[16577,16577]]],[1553946361582,["zyx@DESKTOP-60KJ218",[[1,16517,"\n"]],[16517,16517],[16518,16518]]],[1553946368665,["zyx@DESKTOP-60KJ218",[[1,16518,"* "],[1,16529,"* "],[1,16543,"* "],[1,16578,"* "]],[16518,16688],[16520,16696]]],[1553946372858,["zyx@DESKTOP-60KJ218",[[1,16512,"**"],[1,16517,"**"]],[16512,16517],[16512,16521]]],[1553946373165,["zyx@DESKTOP-60KJ218",[[1,16512,"_"],[1,16521,"_"]],[16512,16521],[16512,16523]]],[1553946375589,["zyx@DESKTOP-60KJ218",[[1,16703,"* \n"]],[16702,16702],[16705,16705]]],[1553946376751,["zyx@DESKTOP-60KJ218",[[-1,16703,"* "]],[16705,16705],[16704,16704]]],[1553946377915,["zyx@DESKTOP-60KJ218",[[1,16704,"\n"]],[16704,16704],[16705,16705]]],[1553946388611,["zyx@DESKTOP-60KJ218",[[1,16704,"## Set:1.不允许重复对象\n\n## 2\\. 无序容器,你无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一个排序顺序。\n\n## 3. 只允许一个 null 元素\n\n## 4.Set 接口最流行的几个实现类是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基于 HashMap 实现的 HashSet;TreeSet 还实现了 SortedSet 接口,因此 TreeSet 是一个根据其 compare() 和 compareTo() 的定义进行排序的有序容器。"]],[16704,16704],[17003,17003]]],[1553946390569,["zyx@DESKTOP-60KJ218",[[-1,16704,"## "]],[16704,16707],[16704,16704]]],[1553946392102,["zyx@DESKTOP-60KJ218",[[1,16708,"\n"]],[16708,16708],[16709,16709]]],[1553946393912,["zyx@DESKTOP-60KJ218",[[-1,16720,"## "]],[16720,16728],[16720,16720]]],[1553946396114,["zyx@DESKTOP-60KJ218",[[-1,16792,"## "]],[16792,16803],[16792,16792]]],[1553946397637,["zyx@DESKTOP-60KJ218",[[-1,16810,"## "]],[16810,16821],[16810,16810]]],[1553946398077,["zyx@DESKTOP-60KJ218",[[-1,16809,"\n"]],[16810,16810],[16809,16809]]],[1553946399035,["zyx@DESKTOP-60KJ218",[[-1,16791,"\n"]],[16791,16791],[16790,16790]]],[1553946400003,["zyx@DESKTOP-60KJ218",[[-1,16719,"\n"]],[16719,16719],[16718,16718]]],[1553947239818,["zyx@DESKTOP-60KJ218",[[-1,16720,"\\"]],[16721,16721],[16720,16720]]],[1553947241692,["zyx@DESKTOP-60KJ218",[[-1,16721," "]],[16722,16722],[16721,16721]]],[1553947247157,["zyx@DESKTOP-60KJ218",[[-1,16790," "]],[16791,16791],[16790,16790]]],[1553947253379,["zyx@DESKTOP-60KJ218",[[-1,16846,"及 "]],[16848,16848],[16846,16846]]],[1553947255709,["zyx@DESKTOP-60KJ218",[[1,16846,"及 "]],[16846,16846],[16848,16848]]],[1553947261459,["zyx@DESKTOP-60KJ218",[[1,16966,"\n"]],[16965,16965],[16966,16966]]],[1553947262181,["zyx@DESKTOP-60KJ218",[[1,16967,"\n"]],[16966,16966],[16967,16967]]],[1553947273247,["zyx@DESKTOP-60KJ218",[[1,16967,"## 1.Map不是collection的子接口或者实现类。Map是一个接口。\n\n## 2.Map 的 每个 Entry 都持有两个对象,也就是一个键一个值,Map 可能会持有相同的值对象但键对象必须是唯一的。\n\n## 3. TreeMap 也通过 Comparator 或者 Comparable 维护了一个排序顺序。\n\n## 4. Map 里你可以拥有随意个 null 值但最多只能有一个 null 键。\n\n## 5.Map 接口最流行的几个实现类是 HashMap、LinkedHashMap、Hashtable 和 TreeMap。(HashMap、TreeMap最常用)"]],[16967,16967],[17258,17258]]],[1553947275341,["zyx@DESKTOP-60KJ218",[[-1,16967,"## "]],[16967,16970],[16967,16967]]],[1553947276876,["zyx@DESKTOP-60KJ218",[[-1,17005,"## "]],[17005,17008],[17005,17005]]],[1553947278165,["zyx@DESKTOP-60KJ218",[[-1,17068,"## "]],[17068,17071],[17068,17068]]],[1553947279602,["zyx@DESKTOP-60KJ218",[[-1,17121,"## "]],[17121,17124],[17121,17121]]],[1553947280322,["zyx@DESKTOP-60KJ218",[[-1,17120,"\n"]],[17121,17121],[17120,17120]]],[1553947281897,["zyx@DESKTOP-60KJ218",[[-1,17161,"## "]],[17161,17164],[17161,17161]]],[1553947282474,["zyx@DESKTOP-60KJ218",[[-1,17160,"\n"]],[17161,17161],[17160,17160]]],[1553947283624,["zyx@DESKTOP-60KJ218",[[-1,17067,"\n"]],[17067,17067],[17066,17066]]],[1553947284988,["zyx@DESKTOP-60KJ218",[[-1,17004,"\n"]],[17004,17004],[17003,17003]]],[1553947286965,["zyx@DESKTOP-60KJ218",[[-1,16599," "],[1,16600," "],[-1,16762," "],[1,16763," "],[-1,16966,""],[1,16966,"M"],[-1,17068," "],[1,17069," "],[-1,17092," "],[1,17093," "],[-1,17120," "],[1,17121," "]],[16966,16966],[16967,16967]]],[1553947289611,["zyx@DESKTOP-60KJ218",[[1,16967,"ap:"]],[16967,16967],[16970,16970]]],[1553947292508,["zyx@DESKTOP-60KJ218",[[1,16966,"\n"]],[16966,16966],[16967,16967]]],[1553947294518,["zyx@DESKTOP-60KJ218",[[-1,17073," "]],[17074,17074],[17073,17073]]],[1553947296274,["zyx@DESKTOP-60KJ218",[[-1,17124," "]],[17125,17125],[17124,17124]]],[1553947299237,["zyx@DESKTOP-60KJ218",[[1,17243,"\n"]],[17242,17242],[17243,17243]]],[1553947299929,["zyx@DESKTOP-60KJ218",[[1,17244,"\n"]],[17243,17243],[17244,17244]]],[1553947306847,["zyx@DESKTOP-60KJ218",[[-1,16709,"1."]],[16711,16711],[16709,16709]]],[1553947307706,["zyx@DESKTOP-60KJ218",[[-1,16717,"2."]],[16719,16719],[16717,16717]]],[1553947308711,["zyx@DESKTOP-60KJ218",[[-1,16784,"3."]],[16786,16786],[16784,16784]]],[1553947309605,["zyx@DESKTOP-60KJ218",[[-1,16798,"4."]],[16800,16800],[16798,16798]]],[1553947312238,["zyx@DESKTOP-60KJ218",[[-1,16964,"1."]],[16966,16966],[16964,16964]]],[1553947313808,["zyx@DESKTOP-60KJ218",[[-1,16999,"2."]],[17001,17001],[16999,16999]]],[1553947314923,["zyx@DESKTOP-60KJ218",[[-1,17059,"3."]],[17061,17061],[17059,17059]]],[1553947316059,["zyx@DESKTOP-60KJ218",[[-1,17108,"4."]],[17110,17110],[17108,17108]]],[1553947317232,["zyx@DESKTOP-60KJ218",[[-1,17145,"5."]],[17147,17147],[17145,17145]]],[1553947322454,["zyx@DESKTOP-60KJ218",[[1,16964,"* "],[1,16999,"* "],[1,17059,"* "],[1,17108,"* "],[1,17145,"* "]],[16964,17225],[16966,17235]]],[1553947326048,["zyx@DESKTOP-60KJ218",[[1,16709,"* "],[1,16717,"* "],[1,16784,"* "],[1,16798,"* "]],[16709,16957],[16711,16965]]],[1553947333451,["zyx@DESKTOP-60KJ218",[[1,16704,"**"],[1,16708,"**"]],[16704,16708],[16704,16712]]],[1553947334005,["zyx@DESKTOP-60KJ218",[[1,16704,"_"],[1,16712,"_"]],[16704,16712],[16704,16714]]],[1553947337323,["zyx@DESKTOP-60KJ218",[[1,16973,"**"],[1,16977,"**"]],[16973,16977],[16973,16981]]],[1553947337675,["zyx@DESKTOP-60KJ218",[[1,16973,"_"],[1,16981,"_"]],[16973,16981],[16973,16983]]],[1553947345466,["zyx@DESKTOP-60KJ218",[[1,17256,"**Q3.Collection 和 Collections 有什么区别?**"]],[17256,17256],[17294,17294]]],[1553947347395,["zyx@DESKTOP-60KJ218",[[-1,17259,"3"]],[17260,17260],[17259,17259]]],[1553947347577,["zyx@DESKTOP-60KJ218",[[1,17259,"4"]],[17259,17259],[17260,17260]]],[1553947357706,["zyx@DESKTOP-60KJ218",[[-1,17261,"Collection 和 Collection"],[-1,17285," 有什么区别?"]],[17261,17292],[17262,17262]]],[1553947357992,["zyx@DESKTOP-60KJ218",[[1,17262,"he"]],[17262,17262],[17264,17264]]],[1553947359309,["zyx@DESKTOP-60KJ218",[[-1,17260,".she"]],[17264,17264],[17260,17260]]],[1553947366194,["zyx@DESKTOP-60KJ218",[[1,17260,".什么场景下使用;"]],[17260,17260],[17269,17269]]],[1553947367257,["zyx@DESKTOP-60KJ218",[[-1,17268,";"]],[17269,17269],[17268,17268]]],[1553947375979,["zyx@DESKTOP-60KJ218",[[1,17268,"list、set、map?"]],[17268,17268],[17281,17281]]],[1553947386513,["zyx@DESKTOP-60KJ218",[[-1,16478,"Collection 和 Collections"],[1,16502,"L"]],[16478,16502],[16479,16479]]],[1553947393102,["zyx@DESKTOP-60KJ218",[[1,16479,"ist、Set、Map"]],[16479,16479],[16490,16490]]],[1553947396746,["zyx@DESKTOP-60KJ218",[[1,17272,"\n"]],[17271,17271],[17272,17272]]],[1553947418911,["zyx@DESKTOP-60KJ218",[[1,17272,"1. ## 如果你经常会使用索引来对容器中的元素进行访问,那么 List 是你的正确的选择。如果你已经知道索引了的话,那么 List 的实现类比如 ArrayList 可以提供更快速的访问,如果经常添加删除元素的,那么肯定要选择LinkedList。\n\n2. ## 如果你想容器中的元素能够按照它们插入的次序进行有序存储,那么还是 List,因为 List 是一个有序容器,它按照插入顺序进行存储。\n\n3. ## 如果你想保证插入元素的唯一性,也就是你不想有重复值的出现,那么可以选择一个 Set 的实现类,比如 HashSet、LinkedHashSet 或者 TreeSet。所有 Set 的实现类都遵循了统一约束比如唯一性,而且还提供了额外的特性比如 TreeSet 还是一个 SortedSet,所有存储于 TreeSet 中的元素可以使用 Java 里的 Comparator 或者 Comparable 进行排序。LinkedHashSet 也按照元素的插入顺序对它们进行存储。\n\n4. ## 如果你以键和值的形式进行数据存储那么 Map 是你正确的选择。你可以根据你的后续需要从 Hashtable、HashMap、TreeMap 中进行选择。"]],[17272,17272],[17805,17805]]],[1553947421877,["zyx@DESKTOP-60KJ218",[[-1,17276,"## "]],[17279,17279],[17276,17276]]],[1553947423585,["zyx@DESKTOP-60KJ218",[[-1,17402,"# "]],[17404,17404],[17402,17402]]],[1553947426062,["zyx@DESKTOP-60KJ218",[[-1,17474,"## "]],[17477,17477],[17474,17474]]],[1553947426872,["zyx@DESKTOP-60KJ218",[[-1,17401,"#"]],[17402,17402],[17401,17401]]],[1553947429819,["zyx@DESKTOP-60KJ218",[[-1,17717,"## "]],[17720,17720],[17717,17717]]],[1553947439012,["zyx@DESKTOP-60KJ218",[[1,4506,"\\"],[1,4598,"\\"],[1,4723,"\\"],[1,4853,"\\"],[1,4932,"\\"],[1,5026,"\\"],[1,5199,"\\"],[1,5298,"\\"],[1,5393,"\\"],[1,5474,"\\"],[1,5589,"\\"],[1,5647,"\\"],[1,5717,"\\"],[1,5817,"\\"],[1,5946,"\\"],[1,6080,"\\"],[1,6125,"\\"],[1,6278,"\\"],[1,6480,"\\"],[1,6606,"\\"],[1,6651,"\\"],[1,6698,"\\"],[1,6743,"\\"],[1,6788,"\\"],[1,6835,"\\"],[1,6946,"\\"],[1,6988,"\\"],[1,7053,"\\"],[1,7092,"\\"],[1,7128,"\\"],[1,7163,"\\"],[1,7199,"\\"],[1,7236,"\\"],[-1,13518,"* "],[1,13521,"\n-"],[-1,13624,"* "],[1,13627,"-"],[-1,13716,"* "],[1,13719,"-"],[-1,13823,"* "],[1,13826,"-"],[-1,13901,"* "],[1,13904,"-"],[-1,13970,"* "],[1,13973,"-"],[-1,14288,")"],[1,14289,"."],[-1,14718,")"],[1,14719,"."],[1,14828,"\\"],[1,14873,"\\"],[1,14923,"\\"],[-1,14950,"\n"],[-1,15263," "],[1,15266,"\\"],[-1,15272," "],[1,15275,"\\"],[-1,15288," "],[1,15291,"\\"],[-1,15303," "],[1,15306,"\\"],[-1,15315," "],[1,15318,"\\"],[-1,15327," "],[1,15330,"\\"],[-1,15407,"1)"],[1,15409,"\n1."],[1,15419," "],[-1,15508,")"],[1,15509,"."],[1,15524," "],[-1,15669,")"],[1,15670,"."],[1,15683," "],[-1,15746,")"],[1,15747,"."],[1,15762," "],[-1,15810,")"],[1,15811,"."],[1,15821," "],[-1,15960,")"],[1,15961,"."],[1,15986," "],[1,16057," "],[-1,16080,")"],[1,16081,"."],[1,16106," "],[1,16177," "],[-1,16200,")"],[1,16201,"."],[1,16221," "],[1,16247," "],[-1,16301,")"],[1,16302,"."],[1,16318," "],[1,16343," "],[-1,16394,")"],[1,16395,"."],[1,16403," "],[1,16423," "],[-1,16512,"*"],[1,16513,"\n-"],[-1,16525,"*"],[1,16526,"-"],[-1,16541,"*"],[1,16542,"-"],[-1,16578,"*"],[1,16579,"-"],[-1,16703,"*"],[1,16704,"\n-"],[-1,16713,"*"],[1,16714,"-"],[-1,16782,"*"],[1,16783,"-"],[-1,16798,"*"],[1,16799,"-"],[-1,16972,"*"],[1,16973,"\n-"],[-1,17009,"*"],[1,17010,"-"],[-1,17071,"*"],[1,17072,"-"],[-1,17122,"*"],[1,17123,"-"],[-1,17161,"*"],[1,17162,"-"],[1,17272,"\n"],[-1,17274," "],[-1,17399," "],[-1,17472," "],[-1,17716," "],[1,17793,"\n"]],[0,17864],[0,0]]],[1553947594244,["zyx@DESKTOP-60KJ218",[[1,17854,"5. \n"]],[17853,17853],[17857,17857]]],[1553947595381,["zyx@DESKTOP-60KJ218",[[-1,17854,"5. "]],[17857,17857],[17855,17855]]],[1553947596399,["zyx@DESKTOP-60KJ218",[[1,17855,"HashMap 和 Hashtable 有什么区别?"]],[17855,17855],[17881,17881]]],[1553947604884,["zyx@DESKTOP-60KJ218",[[1,17855,"Q5."]],[17855,17855],[17858,17858]]],[1553947608298,["zyx@DESKTOP-60KJ218",[[1,17855,"**"],[1,17884,"**"]],[17855,17884],[17855,17888]]],[1553947609988,["zyx@DESKTOP-60KJ218",[[1,17889,"\n"]],[17888,17888],[17889,17889]]],[1553947616322,["zyx@DESKTOP-60KJ218",[[1,17890,"\n"]],[17889,17889],[17890,17890]]],[1553947631269,["zyx@DESKTOP-60KJ218",[[1,17889,"共同点:都完成了Map结构"]],[17889,17889],[17902,17902]]],[1553947631743,["zyx@DESKTOP-60KJ218",[[-1,17899,"p结构"]],[17902,17902],[17899,17899]]],[1553947633299,["zyx@DESKTOP-60KJ218",[[1,17899,"P"]],[17899,17899],[17900,17900]]],[1553947633885,["zyx@DESKTOP-60KJ218",[[-1,17899,"P"]],[17900,17900],[17899,17899]]],[1553947638222,["zyx@DESKTOP-60KJ218",[[1,17899,"p接口的实现"]],[17899,17899],[17905,17905]]],[1553947638835,["zyx@DESKTOP-60KJ218",[[1,17907,"\n"]],[17905,17905],[17906,17906]]],[1553947644757,["zyx@DESKTOP-60KJ218",[[1,17906,"区别:"]],[17906,17906],[17909,17909]]],[1553947645356,["zyx@DESKTOP-60KJ218",[[1,17911,"\n"]],[17909,17909],[17910,17910]]],[1553947653980,["zyx@DESKTOP-60KJ218",[[1,17910,"HashMap雨荨"]],[17910,17910],[17919,17919]]],[1553947654660,["zyx@DESKTOP-60KJ218",[[-1,17917,"雨荨"]],[17919,17919],[17917,17917]]],[1553947661108,["zyx@DESKTOP-60KJ218",[[1,17917,"允许空间之"]],[17917,17917],[17922,17922]]],[1553947663057,["zyx@DESKTOP-60KJ218",[[-1,17919,"空间之"]],[17922,17922],[17919,17919]]],[1553947673343,["zyx@DESKTOP-60KJ218",[[1,17919,"空键值"]],[17919,17919],[17922,17922]]],[1553947696606,["zyx@DESKTOP-60KJ218",[[1,17922,",异步处理,非线程安全,只有一个新城的"]],[17922,17922],[17941,17941]]],[1553947697646,["zyx@DESKTOP-60KJ218",[[-1,17938,"新城的"]],[17941,17941],[17938,17938]]],[1553947701807,["zyx@DESKTOP-60KJ218",[[1,17938,"线程的情况下,"]],[17938,17938],[17945,17945]]],[1553947705128,["zyx@DESKTOP-60KJ218",[[-1,17944,","]],[17945,17945],[17944,17944]]],[1553947729039,["zyx@DESKTOP-60KJ218",[[1,17944,"效率高于HashTable。HashTable通过不"]],[17944,17944],[17970,17970]]],[1553947729948,["zyx@DESKTOP-60KJ218",[[-1,17967,"通过不"]],[17970,17970],[17967,17967]]],[1553947731628,["zyx@DESKTOP-60KJ218",[[1,17967,"同步,"]],[17967,17967],[17970,17970]]],[1553947751981,["zyx@DESKTOP-60KJ218",[[1,17970,"线程安全。"]],[17970,17970],[17975,17975]]],[1553947752224,["zyx@DESKTOP-60KJ218",[[1,17977,"\n"]],[17975,17975],[17976,17976]]],[1553947758495,["zyx@DESKTOP-60KJ218",[[1,17976,"HashMao"]],[17976,17976],[17983,17983]]],[1553947758605,["zyx@DESKTOP-60KJ218",[[1,17985,"\n"]],[17983,17983],[17984,17984]]],[1553947759008,["zyx@DESKTOP-60KJ218",[[-1,17985,"\n"]],[17984,17984],[17983,17983]]],[1553947759648,["zyx@DESKTOP-60KJ218",[[-1,17982,"o"]],[17983,17983],[17982,17982]]],[1553947779498,["zyx@DESKTOP-60KJ218",[[1,17982,"p将HashTable中的contains方法更爱为"]],[17982,17982],[18008,18008]]],[1553947781433,["zyx@DESKTOP-60KJ218",[[-1,18003,"方法更爱为"]],[18008,18008],[18003,18003]]],[1553947796707,["zyx@DESKTOP-60KJ218",[[1,18003,"方法更改为containsvalue和contains"]],[18003,18003],[18030,18030]]],[1553947800389,["zyx@DESKTOP-60KJ218",[[1,18030,"key。"]],[18030,18030],[18034,18034]]],[1553947801318,["zyx@DESKTOP-60KJ218",[[1,18036,"\n"]],[18034,18034],[18035,18035]]],[1553947811323,["zyx@DESKTOP-60KJ218",[[1,18035,"HashMap是Map接口的的"]],[18035,18035],[18050,18050]]],[1553947812068,["zyx@DESKTOP-60KJ218",[[-1,18049,"的"]],[18050,18050],[18049,18049]]],[1553947829271,["zyx@DESKTOP-60KJ218",[[1,18049,"一个实现,HashTable基于陈旧的类"]],[18049,18049],[18069,18069]]],[1553947829697,["zyx@DESKTOP-60KJ218",[[-1,18068,"类"]],[18069,18069],[18068,18068]]],[1553947840500,["zyx@DESKTOP-60KJ218",[[1,18068,"Dictionary抽象类。"]],[18068,18068],[18082,18082]]],[1553947846378,["zyx@DESKTOP-60KJ218",[[1,17910,"* "],[1,17976,"* "],[1,18035,"* "]],[17910,18082],[17912,18088]]],[1553947853508,["zyx@DESKTOP-60KJ218",[[1,18089,"* \n"]],[18088,18088],[18091,18091]]],[1553947854107,["zyx@DESKTOP-60KJ218",[[-1,18089,"* "]],[18091,18091],[18090,18090]]],[1553947870137,["zyx@DESKTOP-60KJ218",[[1,18090,"Q6.HashMap 和 Hashtable 的"]],[18090,18090],[18114,18114]]],[1553947871065,["zyx@DESKTOP-60KJ218",[[-1,18112," 的"]],[18114,18114],[18112,18112]]],[1553947876650,["zyx@DESKTOP-60KJ218",[[1,18112,"的实现原理?*"]],[18112,18112],[18119,18119]]],[1553947877331,["zyx@DESKTOP-60KJ218",[[-1,18118,"*"]],[18119,18119],[18118,18118]]],[1553947886049,["zyx@DESKTOP-60KJ218",[[1,18118,"(1.7和1.8的区别)"]],[18118,18118],[18130,18130]]],[1553947886571,["zyx@DESKTOP-60KJ218",[[1,18131,"\n"]],[18130,18130],[18131,18131]]],[1553947890508,["zyx@DESKTOP-60KJ218",[[1,18090,"**"],[1,18130,"**"]],[18090,18130],[18090,18134]]],[1553947897479,["zyx@DESKTOP-60KJ218",[[1,17889,"\n"]],[17888,17888],[17889,17889]]],[1553947900223,["zyx@DESKTOP-60KJ218",[[1,18137,"\n"]],[18136,18136],[18137,18137]]],[1553947916293,["zyx@DESKTOP-60KJ218",[[1,18137,"共同点:"]],[18137,18137],[18141,18141]]],[1553947924929,["zyx@DESKTOP-60KJ218",[[1,18141,"都是使用“"]],[18141,18141],[18146,18146]]],[1553947925686,["zyx@DESKTOP-60KJ218",[[-1,18145,"“"]],[18146,18146],[18145,18145]]],[1553947929547,["zyx@DESKTOP-60KJ218",[[1,18145,"哈希表的”"]],[18145,18145],[18150,18150]]],[1553947934717,["zyx@DESKTOP-60KJ218",[[-1,18149,"”"]],[18150,18150],[18149,18149]]],[1553947936364,["zyx@DESKTOP-60KJ218",[[1,18149,"“\""]],[18149,18149],[18151,18151]]],[1553947936491,["zyx@DESKTOP-60KJ218",[[-1,18150,"\""],[1,18151,"”"]],[18151,18151],[18151,18151]]],[1553947939412,["zyx@DESKTOP-60KJ218",[[1,18150,"lalian"]],[18150,18150],[18156,18156]]],[1553947941233,["zyx@DESKTOP-60KJ218",[[-1,18150,"lalian"]],[18156,18156],[18150,18150]]],[1553947943998,["zyx@DESKTOP-60KJ218",[[1,18150,"拉链发"]],[18150,18150],[18153,18153]]],[1553947944678,["zyx@DESKTOP-60KJ218",[[-1,18152,"发"]],[18153,18153],[18152,18152]]],[1553947945474,["zyx@DESKTOP-60KJ218",[[1,18152,"法"]],[18152,18152],[18153,18153]]],[1553947948356,["zyx@DESKTOP-60KJ218",[[1,18154,",局域"]],[18154,18154],[18157,18157]]],[1553947949119,["zyx@DESKTOP-60KJ218",[[-1,18155,"局域"]],[18157,18157],[18155,18155]]],[1553947961087,["zyx@DESKTOP-60KJ218",[[1,18155,"基于数组和链表实现。"]],[18155,18155],[18165,18165]]],[1553947971017,["zyx@DESKTOP-60KJ218",[[1,18159,"(Entry类型)"]],[18159,18159],[18168,18168]]],[1553947972892,["zyx@DESKTOP-60KJ218",[[1,18175,"\n"]],[18174,18174],[18175,18175]]],[1553948020352,["zyx@DESKTOP-60KJ218",[[1,18174,"两者构造方法的意识"]],[18174,18174],[18183,18183]]],[1553948021367,["zyx@DESKTOP-60KJ218",[[-1,18181,"意识"]],[18183,18183],[18181,18181]]],[1553948022721,["zyx@DESKTOP-60KJ218",[[1,18181,"一丝"]],[18181,18181],[18183,18183]]],[1553948023648,["zyx@DESKTOP-60KJ218",[[-1,18181,"一丝"]],[18183,18183],[18181,18181]]],[1553948028116,["zyx@DESKTOP-60KJ218",[[1,18181,"意思是相同的。"]],[18181,18181],[18188,18188]]],[1553948028240,["zyx@DESKTOP-60KJ218",[[1,18190,"\n"]],[18188,18188],[18189,18189]]],[1553948289757,["zyx@DESKTOP-60KJ218",[[1,18190,"```java\nHashMap(){}默认容量为16,装填因子为0.75。HashTable默认容量为11。\nHashMap(int initialCapacity){}指定初始容量,装填因子默认为0.75\nHashMap(int initialCapacity,float loadFactor){}指定容量和装填因子\nHashMap(Map<?extends K,? extends V> m)构造新的HashMap\n```\n"]],[18189,18189],[18406,18406]]],[1553948307430,["zyx@DESKTOP-60KJ218",[[1,18209,"\n"],[1,18275,"\n"],[1,18341,"\n"],[1,18389,"\n"]],[18266,18266],[18409,18409]]],[1553948345008,["zyx@DESKTOP-60KJ218",[[1,18141,"实现原理基本相同,"]],[18141,18141],[18150,18150]]],[1553948358643,["zyx@DESKTOP-60KJ218",[[1,18419,"\n"]],[18418,18418],[18419,18419]]],[1553948375041,["zyx@DESKTOP-60KJ218",[[1,18419,"考察HashMap对的"]],[18419,18419],[18430,18430]]],[1553948375730,["zyx@DESKTOP-60KJ218",[[-1,18428,"对的"]],[18430,18430],[18428,18428]]],[1553948381486,["zyx@DESKTOP-60KJ218",[[1,18428,"的原理,就是考察"]],[18428,18428],[18436,18436]]],[1553948404378,["zyx@DESKTOP-60KJ218",[[1,18436,"put和get原理。"]],[18436,18436],[18446,18446]]],[1553948404541,["zyx@DESKTOP-60KJ218",[[1,18447,"\n"]],[18446,18446],[18447,18447]]],[1553948429604,["zyx@DESKTOP-60KJ218",[[1,18447,"put原理根据key值获取相应的hash值,"]],[18447,18447],[18469,18469]]],[1553948437237,["zyx@DESKTOP-60KJ218",[[-1,18468,","]],[18469,18469],[18468,18468]]],[1553948440501,["zyx@DESKTOP-60KJ218",[[1,18468,":int"]],[18468,18468],[18472,18472]]],[1553948441084,["zyx@DESKTOP-60KJ218",[[1,18473,"\n"]],[18472,18472],[18473,18473]]],[1553948441816,["zyx@DESKTOP-60KJ218",[[-1,18473,"\n"]],[18473,18473],[18472,18472]]],[1553948443135,["zyx@DESKTOP-60KJ218",[[-1,18469,"int"]],[18472,18472],[18469,18469]]],[1553948443841,["zyx@DESKTOP-60KJ218",[[1,18470,"\n"]],[18469,18469],[18470,18470]]],[1553948481422,["zyx@DESKTOP-60KJ218",[[1,18471,"```java\nint hash = hash(key.has.hascode())\n```\n\n"]],[18470,18470],[18519,18519]]],[1553948487743,["zyx@DESKTOP-60KJ218",[[1,18518,"qishi"]],[18518,18518],[18523,18523]]],[1553948489490,["zyx@DESKTOP-60KJ218",[[-1,18518,"qishi"]],[18523,18523],[18518,18518]]],[1553948511899,["zyx@DESKTOP-60KJ218",[[1,18518,"其实就是使用哈希表原理中的除留余数法来确定key值,"]],[18518,18518],[18544,18544]]],[1553948512910,["zyx@DESKTOP-60KJ218",[[-1,18543,","]],[18544,18544],[18543,18543]]],[1553948514693,["zyx@DESKTOP-60KJ218",[[1,18543,"应该"]],[18543,18543],[18545,18545]]],[1553948542023,["zyx@DESKTOP-60KJ218",[[1,18545,"在数组中的位置,数组的作用是充当索引,key值相同的"]],[18545,18545],[18571,18571]]],[1553948543339,["zyx@DESKTOP-60KJ218",[[-1,18570,"的"]],[18571,18571],[18570,18570]]],[1553948554122,["zyx@DESKTOP-60KJ218",[[1,18570,"映射到数组中的同一位置。"]],[18570,18570],[18582,18582]]],[1553952756186,["zyx@DESKTOP-60KJ218",[[1,18583,"\n"]],[18582,18582],[18583,18583]]],[1553952758460,["zyx@DESKTOP-60KJ218",[[1,18583,"get"]],[18583,18583],[18586,18586]]],[1553952761068,["zyx@DESKTOP-60KJ218",[[1,18583,"\n"]],[18583,18583],[18584,18584]]],[1553952775647,["zyx@DESKTOP-60KJ218",[[1,18587,"原理利用hash"]],[18587,18587],[18595,18595]]],[1553952807064,["zyx@DESKTOP-60KJ218",[[1,18595,"值先进行数组中定位,在遍历链表侍弄"]],[18595,18595],[18612,18612]]],[1553952809100,["zyx@DESKTOP-60KJ218",[[-1,18608,"链表侍弄"]],[18612,18612],[18608,18608]]],[1553952826084,["zyx@DESKTOP-60KJ218",[[1,18608,"链表使用equals()方法匹配。"]],[18608,18608],[18625,18625]]],[1553952832942,["zyx@DESKTOP-60KJ218",[[-1,18605,"在"]],[18606,18606],[18605,18605]]],[1553952834464,["zyx@DESKTOP-60KJ218",[[1,18605,"再"]],[18605,18605],[18606,18606]]],[1553953003951,["zyx@DESKTOP-60KJ218",[[1,18582,"使用头插法"]],[18582,18582],[18587,18587]]],[1553953007302,["zyx@DESKTOP-60KJ218",[[-1,18581,"。"]],[18582,18582],[18581,18581]]],[1553953008335,["zyx@DESKTOP-60KJ218",[[1,18581,","]],[18581,18581],[18582,18582]]],[1553953016676,["zyx@DESKTOP-60KJ218",[[1,18587,"放在表头"]],[18587,18587],[18591,18591]]],[1553953043792,["zyx@DESKTOP-60KJ218",[[1,18591,"。当"]],[18591,18591],[18593,18593]]],[1553953046119,["zyx@DESKTOP-60KJ218",[[-1,18592,"当"]],[18593,18593],[18592,18592]]],[1553953049370,["zyx@DESKTOP-60KJ218",[[1,18636,"\n"]],[18635,18635],[18636,18636]]],[1553953049829,["zyx@DESKTOP-60KJ218",[[1,18637,"\n"]],[18636,18636],[18637,18637]]],[1553953056078,["zyx@DESKTOP-60KJ218",[[1,18637,"当HashMp"]],[18637,18637],[18644,18644]]],[1553953057568,["zyx@DESKTOP-60KJ218",[[-1,18643,"p"]],[18644,18644],[18643,18643]]],[1553953063245,["zyx@DESKTOP-60KJ218",[[1,18643,"ap达到磨人的"]],[18643,18643],[18650,18650]]],[1553953064279,["zyx@DESKTOP-60KJ218",[[-1,18647,"磨人的"]],[18650,18650],[18647,18647]]],[1553953066238,["zyx@DESKTOP-60KJ218",[[1,18647,"默认的"]],[18647,18647],[18650,18650]]],[1553953069163,["zyx@DESKTOP-60KJ218",[[-1,18649,"的"]],[18650,18650],[18649,18649]]],[1553953075559,["zyx@DESKTOP-60KJ218",[[1,18649,"因子0.75,"]],[18649,18649],[18656,18656]]],[1553953082056,["zyx@DESKTOP-60KJ218",[[1,18656,"会自动扩容"]],[18656,18656],[18661,18661]]],[1553953091414,["zyx@DESKTOP-60KJ218",[[1,18659,"双倍"]],[18659,18659],[18661,18661]]],[1553953107657,["zyx@DESKTOP-60KJ218",[[1,18663,",扩容后重新计算每个key值得哈"]],[18663,18663],[18679,18679]]],[1553953108196,["zyx@DESKTOP-60KJ218",[[-1,18677,"得哈"]],[18679,18679],[18677,18677]]],[1553953128078,["zyx@DESKTOP-60KJ218",[[1,18677,"的hash值。数组长度必须为16或者2的幂次方"]],[18677,18677],[18700,18700]]],[1553953128479,["zyx@DESKTOP-60KJ218",[[-1,18699,"方"]],[18700,18700],[18699,18699]]],[1553953134145,["zyx@DESKTOP-60KJ218",[[1,18699,"。"]],[18699,18699],[18700,18700]]],[1553953148259,["zyx@DESKTOP-60KJ218",[[-1,18699,"。"]],[18700,18700],[18699,18699]]],[1553953156307,["zyx@DESKTOP-60KJ218",[[1,18699,",这样做的目的是使用"]],[18699,18699],[18709,18709]]],[1553953156513,["zyx@DESKTOP-60KJ218",[[-1,18708,"用"]],[18709,18709],[18708,18708]]],[1553953179737,["zyx@DESKTOP-60KJ218",[[1,18708,"位运算的结果能够均匀分布。"]],[18708,18708],[18721,18721]]],[1553953193489,["zyx@DESKTOP-60KJ218",[[1,18722,"\n"]],[18721,18721],[18722,18722]]],[1553953194533,["zyx@DESKTOP-60KJ218",[[1,18723,"\n"]],[18722,18722],[18723,18723]]],[1553953208193,["zyx@DESKTOP-60KJ218",[[1,18122,"HashMap的"]],[18122,18122],[18130,18130]]],[1553953232531,["zyx@DESKTOP-60KJ218",[[1,18731,"HashMap没有加锁,因此造成额"]],[18731,18731],[18748,18748]]],[1553953233099,["zyx@DESKTOP-60KJ218",[[-1,18747,"额"]],[18748,18748],[18747,18747]]],[1553953256453,["zyx@DESKTOP-60KJ218",[[1,18747,"了非线程安全,若HashMap接近"]],[18747,18747],[18764,18764]]],[1553953283625,["zyx@DESKTOP-60KJ218",[[1,18764,"临界点,且有两个或多个线程并发put操作,会进行欧荣"]],[18764,18764],[18790,18790]]],[1553953284669,["zyx@DESKTOP-60KJ218",[[-1,18788,"欧荣"]],[18790,18790],[18788,18788]]],[1553953315653,["zyx@DESKTOP-60KJ218",[[1,18788,"扩容与hash值重新结算,而rehash在并发情况下"]],[18788,18788],[18814,18814]]],[1553953329297,["zyx@DESKTOP-60KJ218",[[1,18814,"会形成链表环。"]],[18814,18814],[18821,18821]]],[1553953330330,["zyx@DESKTOP-60KJ218",[[1,18822,"\n"]],[18821,18821],[18822,18822]]],[1553953330819,["zyx@DESKTOP-60KJ218",[[1,18823,"\n"]],[18822,18822],[18823,18823]]],[1553953370348,["zyx@DESKTOP-60KJ218",[[1,18823,"链表环的判断:两个指针A和B,同时指向头结点,然后开始循环遍历,让A每次"]],[18823,18823],[18859,18859]]],[1553953384711,["zyx@DESKTOP-60KJ218",[[1,18859,"下移一个节点,让比"]],[18859,18859],[18868,18868]]],[1553953384930,["zyx@DESKTOP-60KJ218",[[-1,18867,"比"]],[18868,18868],[18867,18867]]],[1553953393084,["zyx@DESKTOP-60KJ218",[[1,18867,"B每次下一两个节点,"]],[18867,18867],[18877,18877]]],[1553953395432,["zyx@DESKTOP-60KJ218",[[-1,18871,"一"]],[18872,18872],[18871,18871]]],[1553953397154,["zyx@DESKTOP-60KJ218",[[1,18871,"移动"]],[18871,18871],[18873,18873]]],[1553953397286,["zyx@DESKTOP-60KJ218",[[-1,18872,"动"]],[18873,18873],[18872,18872]]],[1553953426196,["zyx@DESKTOP-60KJ218",[[1,18877,"然后比较两个指针指的节点是否相同,相同则有环。"]],[18877,18877],[18900,18900]]],[1553953426381,["zyx@DESKTOP-60KJ218",[[1,18901,"\n"]],[18900,18900],[18901,18901]]],[1553953432959,["zyx@DESKTOP-60KJ218",[[1,18902,"\n"]],[18901,18901],[18902,18902]]],[1553953476698,["zyx@DESKTOP-60KJ218",[[1,18120,",主要讲讲HashMap的原理"]],[18120,18120],[18135,18135]]],[1553953495954,["zyx@DESKTOP-60KJ218",[[1,18917,"JDK8"]],[18917,18917],[18921,18921]]],[1553953523730,["zyx@DESKTOP-60KJ218",[[1,18921,"中HashMap引入了红黑树(自平衡二叉树),可以"]],[18921,18921],[18946,18946]]],[1553953524451,["zyx@DESKTOP-60KJ218",[[-1,18944,"可以"]],[18946,18946],[18944,18944]]],[1553953536649,["zyx@DESKTOP-60KJ218",[[1,18944,"提升了查询,插入和删除"]],[18944,18944],[18955,18955]]],[1553953539356,["zyx@DESKTOP-60KJ218",[[1,18956,"\n"]],[18955,18955],[18956,18956]]],[1553953539756,["zyx@DESKTOP-60KJ218",[[1,18957,"\n"]],[18956,18956],[18957,18957]]],[1553953547881,["zyx@DESKTOP-60KJ218",[[1,18957,"**Q6.HashMap 和 Hashtable的实现原理,主要讲讲HashMap的原理?(HashMap的1.7和1.8的区别)**"]],[18957,18957],[19024,19024]]],[1553953554484,["zyx@DESKTOP-60KJ218",[[-1,18961,".HashMap 和 Hashtable的实现原理"]],[18970,18986],[18961,18961]]],[1553953555724,["zyx@DESKTOP-60KJ218",[[1,18961,"。"]],[18961,18961],[18962,18962]]],[1553953556459,["zyx@DESKTOP-60KJ218",[[-1,18961,"。"]],[18962,18962],[18961,18961]]],[1553953571269,["zyx@DESKTOP-60KJ218",[[1,18961,".ConcurrentHashMap"]],[18961,18961],[18979,18979]]],[1553953573117,["zyx@DESKTOP-60KJ218",[[-1,18979,","]],[18980,18980],[18979,18979]]],[1553953577649,["zyx@DESKTOP-60KJ218",[[-1,18979,"主要讲讲HashMap"]],[18990,18990],[18979,18979]]],[1553953582883,["zyx@DESKTOP-60KJ218",[[-1,18984,"HashMap"]],[18991,18991],[18984,18984]]],[1553953585233,["zyx@DESKTOP-60KJ218",[[1,18999,"\n"]],[18998,18998],[18999,18999]]],[1553953585881,["zyx@DESKTOP-60KJ218",[[1,19000,"\n"]],[18999,18999],[19000,19000]]],[1553953588460,["zyx@DESKTOP-60KJ218",[[1,19001,"\n"]],[18999,18999],[19000,19000]]],[1553953615798,["zyx@DESKTOP-60KJ218",[[1,19000,"concurrenthashmap既可以保证安全,又能"]],[19000,19000],[19027,19027]]],[1553953623433,["zyx@DESKTOP-60KJ218",[[1,19027,"保证性能,"]],[19027,19027],[19032,19032]]],[1553953626148,["zyx@DESKTOP-60KJ218",[[-1,19031,","]],[19032,19032],[19031,19031]]],[1553953676686,["zyx@DESKTOP-60KJ218",[[1,19031,"。其原理就是一个二级哈希表,一个总的哈希表下面有若干子哈希表,由segement数组组成,使用分段锁,"]],[19031,19031],[19082,19082]]],[1553953690279,["zyx@DESKTOP-60KJ218",[[1,19082,"秉性插入时效率高。"]],[19082,19082],[19091,19091]]],[1553953693258,["zyx@DESKTOP-60KJ218",[[-1,19082,"秉性"]],[19084,19084],[19082,19082]]],[1553953696742,["zyx@DESKTOP-60KJ218",[[1,19082,"并行"]],[19082,19082],[19084,19084]]],[1553953698502,["zyx@DESKTOP-60KJ218",[[1,19093,"\n"]],[19091,19091],[19092,19092]]],[1553953698692,["zyx@DESKTOP-60KJ218",[[1,19094,"\n"]],[19092,19092],[19093,19093]]],[1553953713959,["zyx@DESKTOP-60KJ218",[[1,19093,"concurrenthashmap的普通"]],[19093,19093],[19113,19113]]],[1553953715138,["zyx@DESKTOP-60KJ218",[[-1,19111,"普通"]],[19113,19113],[19111,19111]]],[1553953719009,["zyx@DESKTOP-60KJ218",[[1,19111,"put原理:"]],[19111,19111],[19117,19117]]],[1553953736349,["zyx@DESKTOP-60KJ218",[[1,19119,"\n"]],[19117,19117],[19118,19118]]],[1553953738357,["zyx@DESKTOP-60KJ218",[[1,19118,"通过"]],[19118,19118],[19120,19120]]],[1553953740771,["zyx@DESKTOP-60KJ218",[[-1,19118,"通过"]],[19120,19120],[19118,19118]]],[1553953752238,["zyx@DESKTOP-60KJ218",[[1,19118,"先为可以"]],[19118,19118],[19122,19122]]],[1553953752922,["zyx@DESKTOP-60KJ218",[[-1,19120,"可以"]],[19122,19122],[19120,19120]]],[1553953782029,["zyx@DESKTOP-60KJ218",[[1,19120,"key值做hash运算,通过hash值定位到segement对象"]],[19120,19120],[19152,19152]]],[1553953782251,["zyx@DESKTOP-60KJ218",[[1,19154,"\n"]],[19152,19152],[19153,19153]]],[1553953795658,["zyx@DESKTOP-60KJ218",[[1,19153,"获取可重入锁,对分段"]],[19153,19153],[19163,19163]]],[1553953800044,["zyx@DESKTOP-60KJ218",[[1,19163,"进行加锁"]],[19163,19163],[19167,19167]]],[1553953801402,["zyx@DESKTOP-60KJ218",[[1,19169,"\n"]],[19167,19167],[19168,19168]]],[1553953820503,["zyx@DESKTOP-60KJ218",[[1,19168,"再次计算hash值,定位到segemen里的具体位置"]],[19168,19168],[19194,19194]]],[1553953823252,["zyx@DESKTOP-60KJ218",[[1,19196,"\n"]],[19194,19194],[19195,19195]]],[1553953833232,["zyx@DESKTOP-60KJ218",[[1,19195,"插入或者覆盖hashEntry"]],[19195,19195],[19210,19210]]],[1553953836205,["zyx@DESKTOP-60KJ218",[[-1,19201,"h"]],[19202,19202],[19201,19201]]],[1553953836906,["zyx@DESKTOP-60KJ218",[[1,19201,"H"]],[19201,19201],[19202,19202]]],[1553953842533,["zyx@DESKTOP-60KJ218",[[1,19210,"对象"]],[19210,19210],[19212,19212]]],[1553953842954,["zyx@DESKTOP-60KJ218",[[1,19214,"\n"]],[19212,19212],[19213,19213]]],[1553953845484,["zyx@DESKTOP-60KJ218",[[1,19213,"释放锁"]],[19213,19213],[19216,19216]]],[1553953851824,["zyx@DESKTOP-60KJ218",[[1,19118,"* "],[1,19153,"* "],[1,19168,"* "],[1,19195,"* "],[1,19213,"* "]],[19118,19216],[19120,19226]]],[1553953855978,["zyx@DESKTOP-60KJ218",[[1,19227,"* \n"]],[19226,19226],[19229,19229]]],[1553953856930,["zyx@DESKTOP-60KJ218",[[-1,19227,"* "]],[19229,19229],[19228,19228]]],[1553953861167,["zyx@DESKTOP-60KJ218",[[1,19228,"get原理:"]],[19228,19228],[19234,19234]]],[1553953866082,["zyx@DESKTOP-60KJ218",[[1,19235,"\n"]],[19234,19234],[19235,19235]]],[1553953871537,["zyx@DESKTOP-60KJ218",[[1,19235,"未输入的"]],[19235,19235],[19239,19239]]],[1553953872462,["zyx@DESKTOP-60KJ218",[[-1,19235,"未输入的"]],[19239,19239],[19235,19235]]],[1553953882196,["zyx@DESKTOP-60KJ218",[[1,19235,"为输入的key做hash预算"]],[19235,19235],[19249,19249]]],[1553953883839,["zyx@DESKTOP-60KJ218",[[-1,19247,"预算"]],[19249,19249],[19247,19247]]],[1553953890902,["zyx@DESKTOP-60KJ218",[[1,19247,"运算,得到hash值"]],[19247,19247],[19257,19257]]],[1553953891620,["zyx@DESKTOP-60KJ218",[[1,19258,"\n"]],[19257,19257],[19258,19258]]],[1553953906831,["zyx@DESKTOP-60KJ218",[[1,19258,"通过hash值,定位到对应的segement对象"]],[19258,19258],[19282,19282]]],[1553953907001,["zyx@DESKTOP-60KJ218",[[1,19283,"\n"]],[19282,19282],[19283,19283]]],[1553953913635,["zyx@DESKTOP-60KJ218",[[1,19283,"再次通过hash值,"]],[19283,19283],[19293,19293]]],[1553953927302,["zyx@DESKTOP-60KJ218",[[1,19293,"定位到segement当中数组的具体位置"]],[19293,19293],[19313,19313]]],[1553953934331,["zyx@DESKTOP-60KJ218",[[1,19235,"* "],[1,19258,"* "],[1,19283,"* "]],[19235,19313],[19237,19319]]],[1553953937622,["zyx@DESKTOP-60KJ218",[[1,19320,"* \n"]],[19319,19319],[19322,19322]]],[1553953938058,["zyx@DESKTOP-60KJ218",[[-1,19320,"* "]],[19322,19322],[19321,19321]]],[1553953938953,["zyx@DESKTOP-60KJ218",[[1,19321,"\n"]],[19321,19321],[19322,19322]]],[1553953972885,["zyx@DESKTOP-60KJ218",[[1,19321,"jdk8中,concurrenthashmap放弃了"]],[19321,19321],[19347,19347]]],[1553954001386,["zyx@DESKTOP-60KJ218",[[1,19347,"segement分段机制,利用Node数组+CAS+Syne"]],[19347,19347],[19377,19377]]],[1553954002328,["zyx@DESKTOP-60KJ218",[[-1,19376,"e"]],[19377,19377],[19376,19376]]],[1553954036263,["zyx@DESKTOP-60KJ218",[[1,19376,"chronized来保证并发更新安全,底层为数组+链表+红黑树。"]],[19376,19376],[19408,19408]]],[1553954037560,["zyx@DESKTOP-60KJ218",[[1,19409,"\n"]],[19408,19408],[19409,19409]]],[1553954038025,["zyx@DESKTOP-60KJ218",[[1,19410,"\n"]],[19409,19409],[19410,19410]]],[1553954046139,["zyx@DESKTOP-60KJ218",[[-1,19321,"jdk"],[1,19324,"JDK"]],[19321,19325],[19325,19325]]],[1553954052058,["zyx@DESKTOP-60KJ218",[[1,19410,"**Q6.ConcurrentHashMap的原理?(的1.7和1.8的区别)**"]],[19410,19410],[19451,19451]]],[1553954054138,["zyx@DESKTOP-60KJ218",[[-1,19413,"6"]],[19414,19414],[19413,19413]]],[1553954055042,["zyx@DESKTOP-60KJ218",[[1,19413,"7"]],[19413,19413],[19414,19414]]],[1553954113277,["zyx@DESKTOP-60KJ218",[[-1,19415,"Concurrent"],[1,19425,"说一下 "],[-1,19429,"Ma"],[1,19431,"Set 的实现原理?"]],[19415,19431],[19433,19433]]],[1553954122198,["zyx@DESKTOP-60KJ218",[[-1,19433,"p的原理?(的1.7和1.8的区别)"]],[19432,19437],[19433,19433]]],[1553954123274,["zyx@DESKTOP-60KJ218",[[1,19436,"\n"]],[19435,19435],[19436,19436]]],[1553954123464,["zyx@DESKTOP-60KJ218",[[1,19437,"\n"]],[19436,19436],[19437,19437]]],[1553954151124,["zyx@DESKTOP-60KJ218",[[1,19437,"实现了Set接口,但底层由HashMao"]],[19437,19437],[19457,19457]]],[1553954151598,["zyx@DESKTOP-60KJ218",[[-1,19456,"o"]],[19457,19457],[19456,19456]]],[1553954155288,["zyx@DESKTOP-60KJ218",[[1,19456,"p支持,"]],[19456,19456],[19460,19460]]],[1553954177424,["zyx@DESKTOP-60KJ218",[[1,19460,"不包含重复元素,且维持自己的内部排序,可使用null。"]],[19460,19460],[19487,19487]]],[1553954177609,["zyx@DESKTOP-60KJ218",[[1,19488,"\n"]],[19487,19487],[19488,19488]]],[1553954686090,["zyx@DESKTOP-60KJ218",[[1,19489,"```java\niterator()返回set元素\npublic Iterator<E> iterator(){return map.keyset().iterator();}\n\nsize()返回大小\npublic int size(){return map.size();}\n\nisEmpty()判空\nreturn map.isEmpty();\n\ncontains(Object o)判断是否存在某元素\nreturn map.containskey(o);\n\nadd()添加元素\nreturn map.put(e,PRESENT)==null;\n\nremove()删除元素\nreturn map.remove(o)==PRESENT;\n\nclear()清除所有元素\nmap.clear();\n\nclone获取HashMap的浅表副本,并没有复制这些元素本身\ntry{\n HashSet<E> newSet = (HashSet<E>) super.clone();\n newSet.map = (HashSet<E,Object>) map.clone();\n return newSet;\n}caatch(CloneNotSupportedException e){\n throw new InternalError();\n}\n\n```\n\n25.ArrayList 和 LinkedList 的区别是什么?\n\n26.如何实现数组和 List 之间的转换?\n\n27.ArrayList 和 Vector 的区别是什么?\n\n28.Array 和 ArrayList 有何区别?\n\n29.在 Queue 中 poll()和 remove()有什么区别?\n\n30.哪些集合类是线程安全的?\n\n31.迭代器 Iterator 是什么?\n\n32.Iterator 怎么使用?有什么特点?\n\n33.Iterator 和 ListIterator 有什么区别?\n\n34.怎么确保一个集合不能被修改?"]],[19488,19488],[20336,20336]]],[1553954689167,["zyx@DESKTOP-60KJ218",[[1,20336,"\n"]],[20336,20336],[20337,20337]]],[1553954690172,["zyx@DESKTOP-60KJ218",[[1,20337,"\n"]],[20337,20337],[20338,20338]]],[1553954690475,["zyx@DESKTOP-60KJ218",[[1,20338,"\n"]],[20338,20338],[20339,20339]]],[1553954700026,["zyx@DESKTOP-60KJ218",[[-1,20065,"25"],[1,20067,"Q7"]],[20065,20067],[20067,20067]]],[1553954701276,["zyx@DESKTOP-60KJ218",[[-1,20066,"7"]],[20067,20067],[20066,20066]]],[1553954702144,["zyx@DESKTOP-60KJ218",[[1,20066,"8"]],[20066,20066],[20067,20067]]],[1553954708124,["zyx@DESKTOP-60KJ218",[[-1,20100,"26"],[1,20102,"Q8"]],[20100,20102],[20102,20102]]],[1553954708983,["zyx@DESKTOP-60KJ218",[[-1,20124,"27"],[1,20126,"Q8"]],[20124,20126],[20126,20126]]],[1553954710175,["zyx@DESKTOP-60KJ218",[[-1,20155,"2"],[1,20156,"Q"]],[20155,20157],[20157,20157]]],[1553954712353,["zyx@DESKTOP-60KJ218",[[-1,20183,"29"],[1,20185,"Q8"]],[20183,20185],[20185,20185]]],[1553954714141,["zyx@DESKTOP-60KJ218",[[-1,20220,"30"],[1,20222,"Q8"]],[20220,20222],[20222,20222]]],[1553954715450,["zyx@DESKTOP-60KJ218",[[-1,20237,"31"],[1,20239,"Q8"]],[20237,20239],[20239,20239]]],[1553954716422,["zyx@DESKTOP-60KJ218",[[-1,20259,"32"],[1,20261,"Q8"]],[20259,20261],[20261,20261]]],[1553954717633,["zyx@DESKTOP-60KJ218",[[-1,20284,"33"],[1,20286,"Q8"]],[20284,20286],[20286,20286]]],[1553954718558,["zyx@DESKTOP-60KJ218",[[-1,20319,"34"],[1,20321,"Q8"]],[20319,20321],[20321,20321]]],[1553954723529,["zyx@DESKTOP-60KJ218",[[-1,20101,"8"]],[20102,20102],[20101,20101]]],[1553954724293,["zyx@DESKTOP-60KJ218",[[1,20101,"9"]],[20101,20101],[20102,20102]]],[1553954725557,["zyx@DESKTOP-60KJ218",[[-1,20125,"8"]],[20126,20126],[20125,20125]]],[1553954726223,["zyx@DESKTOP-60KJ218",[[1,20125,"10"]],[20125,20125],[20127,20127]]],[1553954727922,["zyx@DESKTOP-60KJ218",[[-1,20157,"8"]],[20158,20158],[20157,20157]]],[1553954728420,["zyx@DESKTOP-60KJ218",[[1,20157,"11"]],[20157,20157],[20159,20159]]],[1553954730190,["zyx@DESKTOP-60KJ218",[[-1,20186,"8"]],[20187,20187],[20186,20186]]],[1553954730992,["zyx@DESKTOP-60KJ218",[[1,20186,"12"]],[20186,20186],[20188,20188]]],[1553954732449,["zyx@DESKTOP-60KJ218",[[-1,20224,"8"]],[20225,20225],[20224,20224]]],[1553954733258,["zyx@DESKTOP-60KJ218",[[1,20224,"13"]],[20224,20224],[20226,20226]]],[1553954735464,["zyx@DESKTOP-60KJ218",[[-1,20242,"8"]],[20243,20243],[20242,20242]]],[1553954736255,["zyx@DESKTOP-60KJ218",[[1,20242,"14"]],[20242,20242],[20244,20244]]],[1553954738851,["zyx@DESKTOP-60KJ218",[[-1,20265,"8"]],[20266,20266],[20265,20265]]],[1553954739351,["zyx@DESKTOP-60KJ218",[[1,20265,"15"]],[20265,20265],[20267,20267]]],[1553954741184,["zyx@DESKTOP-60KJ218",[[-1,20291,"8"]],[20292,20292],[20291,20291]]],[1553954741584,["zyx@DESKTOP-60KJ218",[[1,20291,"16"]],[20291,20291],[20293,20293]]],[1553954743337,["zyx@DESKTOP-60KJ218",[[-1,20327,"8"]],[20328,20328],[20327,20327]]],[1553954744879,["zyx@DESKTOP-60KJ218",[[1,20327,"17"]],[20327,20327],[20329,20329]]],[1553954753739,["zyx@DESKTOP-60KJ218",[[1,20065,"**"],[1,20098,"**"]],[20065,20098],[20065,20102]]],[1553954757014,["zyx@DESKTOP-60KJ218",[[1,20104,"**"],[1,20126,"**"]],[20104,20126],[20104,20130]]],[1553954759042,["zyx@DESKTOP-60KJ218",[[1,20132,"**"],[1,20162,"**"]],[20132,20162],[20132,20166]]],[1553954764115,["zyx@DESKTOP-60KJ218",[[1,20197,"**"],[1,20233,"**"]],[20197,20233],[20197,20237]]],[1553954766511,["zyx@DESKTOP-60KJ218",[[1,20168,"**"],[1,20195,"**"]],[20168,20195],[20168,20199]]],[1553954769013,["zyx@DESKTOP-60KJ218",[[1,20243,"**"],[1,20259,"**"]],[20243,20259],[20243,20263]]],[1553954772233,["zyx@DESKTOP-60KJ218",[[1,20265,"**"],[1,20286,"**"]],[20265,20286],[20265,20290]]],[1553954774224,["zyx@DESKTOP-60KJ218",[[1,20292,"**"],[1,20316,"**"]],[20292,20316],[20292,20320]]],[1553954776366,["zyx@DESKTOP-60KJ218",[[1,20322,"**"],[1,20356,"**"]],[20322,20356],[20322,20360]]],[1553954778444,["zyx@DESKTOP-60KJ218",[[1,20362,"**"],[1,20380,"**"]],[20362,20380],[20362,20384]]],[1553954799627,["zyx@DESKTOP-60KJ218",[[1,20399,"35.并行和并发有什么区别?\n\n36.线程和进程的区别?\n\n37.守护线程是什么?\n\n38.创建线程有哪几种方式?\n\n39.说一下 runnable 和 callable 有什么区别?\n\n40.线程有哪些状态?\n\n41.sleep() 和 wait() 有什么区别?\n\n42.notify()和 notifyAll()有什么区别?\n\n43.线程的 run()和 start()有什么区别?\n\n44.创建线程池有哪几种方式?\n\n45.线程池都有哪些状态?\n\n46.线程池中 submit()和 execute()方法有什么区别?\n\n47.在 java 程序中怎么保证多线程的运行安全?\n\n48.多线程锁的升级原理是什么?\n\n49.什么是死锁?\n\n50.怎么防止死锁?\n\n51.ThreadLocal 是什么?有哪些使用场景?\n\n52.说一下 synchronized 底层实现原理?\n\n53.synchronized 和 volatile 的区别是什么?\n\n54.synchronized 和 Lock 有什么区别?\n\n55.synchronized 和 ReentrantLock 区别是什么?\n\n56.说一下 atomic 的原理?"]],[20399,20399],[20916,20916]]],[1553954802538,["zyx@DESKTOP-60KJ218",[[1,20399,"\n"]],[20398,20398],[20399,20399]]],[1553954809184,["zyx@DESKTOP-60KJ218",[[1,20931,"\n"]],[20930,20930],[20931,20931]]],[1553954810309,["zyx@DESKTOP-60KJ218",[[1,20918,"\n"]],[20917,20917],[20918,20918]]],[1553954811849,["zyx@DESKTOP-60KJ218",[[1,20933,"\n"]],[20932,20932],[20933,20933]]],[1553954823463,["zyx@DESKTOP-60KJ218",[[1,20932,"57.什么是反射?\n\n58.什么是 java 序列化?什么情况下需要序列化?\n\n59.动态代理是什么?有哪些应用?\n\n60.怎么实现动态代理?"]],[20932,20932],[21003,21003]]],[1553954826080,["zyx@DESKTOP-60KJ218",[[1,21018,"\n"]],[21017,21017],[21018,21018]]],[1553954826269,["zyx@DESKTOP-60KJ218",[[1,21019,"\n"]],[21018,21018],[21019,21019]]],[1553954834496,["zyx@DESKTOP-60KJ218",[[1,21034,"61.为什么要使用克隆?\n\n62.如何实现对象克隆?\n\n63.深拷贝和浅拷贝区别是什么?"]],[21034,21034],[21078,21078]]],[1553954837275,["zyx@DESKTOP-60KJ218",[[1,21034,"\n"]],[21033,21033],[21034,21034]]],[1553954838300,["zyx@DESKTOP-60KJ218",[[1,21080,"\n"]],[21079,21079],[21080,21080]]],[1553954839677,["zyx@DESKTOP-60KJ218",[[1,21095,"\n"]],[21095,21095],[21096,21096]]],[1553954841612,["zyx@DESKTOP-60KJ218",[[-1,21095,"\n"]],[21096,21096],[21095,21095]]],[1553954843653,["zyx@DESKTOP-60KJ218",[[1,21097,"\n"]],[21096,21096],[21097,21097]]],[1553954844242,["zyx@DESKTOP-60KJ218",[[1,21098,"\n"]],[21097,21097],[21098,21098]]],[1553954853014,["zyx@DESKTOP-60KJ218",[[-1,20400,"35"]],[20400,20402],[20400,20400]]],[1553954854579,["zyx@DESKTOP-60KJ218",[[1,20400,"Q1"]],[20400,20400],[20402,20402]]],[1553954858144,["zyx@DESKTOP-60KJ218",[[-1,20416,"36"],[1,20418,"Q1"]],[20416,20418],[20418,20418]]],[1553954861860,["zyx@DESKTOP-60KJ218",[[-1,20430,"37"],[1,20432,"Q1"]],[20430,20432],[20432,20432]]],[1553954863314,["zyx@DESKTOP-60KJ218",[[-1,20443,"38"],[1,20445,"Q1"]],[20443,20445],[20445,20445]]],[1553954864263,["zyx@DESKTOP-60KJ218",[[-1,20459,"39"],[1,20461,"Q1"]],[20459,20461],[20461,20461]]],[1553954865423,["zyx@DESKTOP-60KJ218",[[-1,20494,"40"],[1,20496,"Q1"]],[20494,20496],[20496,20496]]],[1553954866687,["zyx@DESKTOP-60KJ218",[[-1,20507,"4"],[1,20508,"Q"]],[20507,20509],[20509,20509]]],[1553954869347,["zyx@DESKTOP-60KJ218",[[-1,20535,"42"],[1,20537,"Q1"]],[20535,20537],[20537,20537]]],[1553954870473,["zyx@DESKTOP-60KJ218",[[-1,20567,"43"],[1,20569,"Q1"]],[20567,20569],[20569,20569]]],[1553954871830,["zyx@DESKTOP-60KJ218",[[-1,20596,"44"],[1,20598,"Q1"]],[20596,20598],[20598,20598]]],[1553954873145,["zyx@DESKTOP-60KJ218",[[-1,20613,"45"],[1,20615,"Q1"]],[20613,20615],[20615,20615]]],[1553954874711,["zyx@DESKTOP-60KJ218",[[-1,20628,"46"],[1,20630,"Q1"]],[20628,20630],[20630,20630]]],[1553954876740,["zyx@DESKTOP-60KJ218",[[-1,20665,"47"],[1,20667,"Q1"]],[20665,20667],[20667,20667]]],[1553954878067,["zyx@DESKTOP-60KJ218",[[-1,20693,"48"],[1,20695,"Q1"]],[20693,20695],[20695,20695]]],[1553954879176,["zyx@DESKTOP-60KJ218",[[-1,20711,"49"],[1,20713,"Q1"]],[20711,20713],[20713,20713]]],[1553954880151,["zyx@DESKTOP-60KJ218",[[-1,20722,"50"],[1,20724,"Q1"]],[20722,20724],[20724,20724]]],[1553954881310,["zyx@DESKTOP-60KJ218",[[-1,20734,"5"],[1,20735,"Q"]],[20734,20736],[20736,20736]]],[1553954883745,["zyx@DESKTOP-60KJ218",[[-1,20763,"52"],[1,20765,"Q1"]],[20763,20765],[20765,20765]]],[1553954886279,["zyx@DESKTOP-60KJ218",[[-1,20792,"53"],[1,20794,"Q1"]],[20792,20794],[20794,20794]]],[1553954887464,["zyx@DESKTOP-60KJ218",[[-1,20828,"54"],[1,20830,"Q1"]],[20828,20830],[20830,20830]]],[1553954888694,["zyx@DESKTOP-60KJ218",[[-1,20859,"55"],[1,20861,"Q1"]],[20859,20861],[20861,20861]]],[1553954890033,["zyx@DESKTOP-60KJ218",[[-1,20899,"56"],[1,20901,"Q1"]],[20899,20901],[20901,20901]]],[1553954891949,["zyx@DESKTOP-60KJ218",[[-1,20932,"57"],[1,20934,"Q1"]],[20932,20934],[20934,20934]]],[1553954892924,["zyx@DESKTOP-60KJ218",[[-1,20943,"58"],[1,20945,"Q1"]],[20943,20945],[20945,20945]]],[1553954894684,["zyx@DESKTOP-60KJ218",[[-1,20972,"59"],[1,20974,"Q1"]],[20972,20974],[20974,20974]]],[1553954895782,["zyx@DESKTOP-60KJ218",[[-1,20991,"60"],[1,20993,"Q1"]],[20991,20993],[20993,20993]]],[1553954898522,["zyx@DESKTOP-60KJ218",[[-1,21035,"6"],[1,21036,"Q"]],[21035,21037],[21037,21037]]],[1553954899703,["zyx@DESKTOP-60KJ218",[[-1,21049,"62"],[1,21051,"Q1"]],[21049,21051],[21051,21051]]],[1553954901098,["zyx@DESKTOP-60KJ218",[[-1,21063,"63"],[1,21065,"Q1"]],[21063,21065],[21065,21065]]],[1553954923899,["zyx@DESKTOP-60KJ218",[[1,21018,"74.throw 和 throws 的区别?\n\n75.final、finally、finalize 有什么区别?\n\n76.try-catch-finally 中哪个部分可以省略?\n\n77.try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?"]],[21018,21018],[21166,21166]]],[1553954926931,["zyx@DESKTOP-60KJ218",[[1,21168,"\n"]],[21166,21166],[21167,21167]]],[1553954932624,["zyx@DESKTOP-60KJ218",[[-1,21018,"74"],[1,21020,"Q1"]],[21018,21020],[21020,21020]]],[1553954933988,["zyx@DESKTOP-60KJ218",[[-1,21042,"75"],[1,21044,"Q1"]],[21042,21044],[21044,21044]]],[1553954935039,["zyx@DESKTOP-60KJ218",[[-1,21076,"76"],[1,21078,"Q1"]],[21076,21078],[21078,21078]]],[1553954935919,["zyx@DESKTOP-60KJ218",[[-1,21109,"77"],[1,21111,"Q1"]],[21109,21111],[21111,21111]]],[1553954979696,["zyx@DESKTOP-60KJ218",[[1,20400,"**"],[1,20414,"**"]],[20400,20414],[20400,20418]]],[1553954980228,["zyx@DESKTOP-60KJ218",[[-1,20400,"**"],[-1,20416,"**"]],[20400,20418],[20400,20414]]],[1553954980814,["zyx@DESKTOP-60KJ218",[[1,20400,"**"],[1,20414,"**"]],[20400,20414],[20400,20418]]],[1553954984655,["zyx@DESKTOP-60KJ218",[[1,20420,"**"],[1,20432,"**"]],[20420,20432],[20420,20436]]],[1553954986869,["zyx@DESKTOP-60KJ218",[[1,20438,"**"],[1,20449,"**"]],[20438,20449],[20438,20453]]],[1553954990229,["zyx@DESKTOP-60KJ218",[[1,20455,"**"],[1,20469,"**"]],[20455,20469],[20455,20473]]],[1553954991975,["zyx@DESKTOP-60KJ218",[[1,20475,"**"],[1,20508,"**"]],[20475,20508],[20475,20512]]],[1553954992828,["zyx@DESKTOP-60KJ218",[[1,20514,"**"],[1,20525,"**"]],[20514,20525],[20514,20529]]],[1553954994780,["zyx@DESKTOP-60KJ218",[[1,20531,"**"],[1,20557,"**"]],[20531,20557],[20531,20561]]],[1553954995909,["zyx@DESKTOP-60KJ218",[[1,20563,"**"],[1,20593,"**"]],[20563,20593],[20563,20597]]],[1553954997387,["zyx@DESKTOP-60KJ218",[[1,20599,"**"],[1,20626,"**"]],[20599,20626],[20599,20630]]],[1553954999397,["zyx@DESKTOP-60KJ218",[[1,20632,"**"],[1,20647,"**"]],[20632,20647],[20632,20651]]],[1553955000664,["zyx@DESKTOP-60KJ218",[[1,20653,"**"],[1,20666,"**"]],[20653,20666],[20653,20670]]],[1553955002474,["zyx@DESKTOP-60KJ218",[[1,20672,"**"],[1,20707,"**"]],[20672,20707],[20672,20711]]],[1553955005263,["zyx@DESKTOP-60KJ218",[[1,20713,"**"],[1,20739,"**"]],[20713,20739],[20713,20743]]],[1553955006587,["zyx@DESKTOP-60KJ218",[[1,20745,"**"],[1,20761,"**"]],[20745,20761],[20745,20765]]],[1553955007819,["zyx@DESKTOP-60KJ218",[[1,20767,"**"],[1,20776,"**"]],[20767,20776],[20767,20780]]],[1553955009139,["zyx@DESKTOP-60KJ218",[[1,20782,"**"],[1,20792,"**"]],[20782,20792],[20782,20796]]],[1553955011565,["zyx@DESKTOP-60KJ218",[[1,20798,"**"],[1,20825,"**"]],[20798,20825],[20798,20829]]],[1553955013492,["zyx@DESKTOP-60KJ218",[[1,20831,"**"],[1,20858,"**"]],[20831,20858],[20831,20862]]],[1553955014713,["zyx@DESKTOP-60KJ218",[[1,20864,"**"],[1,20898,"**"]],[20864,20898],[20864,20902]]],[1553955016027,["zyx@DESKTOP-60KJ218",[[1,20904,"**"],[1,20933,"**"]],[20904,20933],[20904,20937]]],[1553955017493,["zyx@DESKTOP-60KJ218",[[1,20939,"**"],[1,20977,"**"]],[20939,20977],[20939,20981]]],[1553955018948,["zyx@DESKTOP-60KJ218",[[1,20983,"**"],[1,21001,"**"]],[20983,21001],[20983,21005]]],[1553955032614,["zyx@DESKTOP-60KJ218",[[-1,21022,".什么是反射?"]],[21020,21029],[21022,21022]]],[1553955034494,["zyx@DESKTOP-60KJ218",[[1,21022,".什么是反射?"]],[21022,21022],[21020,21029]]],[1553955035635,["zyx@DESKTOP-60KJ218",[[1,21020,"**"],[1,21029,"**"]],[21020,21029],[21020,21033]]],[1553955037102,["zyx@DESKTOP-60KJ218",[[1,21035,"**"],[1,21062,"**"]],[21035,21062],[21035,21066]]],[1553955038100,["zyx@DESKTOP-60KJ218",[[1,21068,"**"],[1,21085,"**"]],[21068,21085],[21068,21089]]],[1553955039026,["zyx@DESKTOP-60KJ218",[[1,21091,"**"],[1,21103,"**"]],[21091,21103],[21091,21107]]],[1553955040807,["zyx@DESKTOP-60KJ218",[[1,21122,"**"],[1,21144,"**"]],[21122,21144],[21122,21148]]],[1553955042117,["zyx@DESKTOP-60KJ218",[[1,21150,"**"],[1,21182,"**"]],[21150,21182],[21150,21186]]],[1553955043399,["zyx@DESKTOP-60KJ218",[[1,21188,"**"],[1,21219,"**"]],[21188,21219],[21188,21223]]],[1553955045180,["zyx@DESKTOP-60KJ218",[[1,21225,"**"],[1,21282,"**"]],[21225,21282],[21225,21286]]],[1553955046985,["zyx@DESKTOP-60KJ218",[[1,21304,"**"],[1,21316,"**"]],[21304,21316],[21304,21320]]],[1553955048067,["zyx@DESKTOP-60KJ218",[[1,21322,"**"],[1,21334,"**"]],[21322,21334],[21322,21338]]],[1553955049083,["zyx@DESKTOP-60KJ218",[[1,21340,"**"],[1,21356,"**"]],[21340,21356],[21340,21360]]],[1553955103367,["zyx@DESKTOP-60KJ218",[[-1,20423,"1"]],[20424,20424],[20423,20423]]],[1553955103640,["zyx@DESKTOP-60KJ218",[[1,20423,"2"]],[20423,20423],[20424,20424]]],[1553955106261,["zyx@DESKTOP-60KJ218",[[-1,20441,"1"]],[20442,20442],[20441,20441]]],[1553955106599,["zyx@DESKTOP-60KJ218",[[1,20441,"3"]],[20441,20441],[20442,20442]]],[1553955107863,["zyx@DESKTOP-60KJ218",[[-1,20458,"1"]],[20459,20459],[20458,20458]]],[1553955108138,["zyx@DESKTOP-60KJ218",[[1,20458,"4"]],[20458,20458],[20459,20459]]],[1553955109785,["zyx@DESKTOP-60KJ218",[[-1,20478,"1"]],[20479,20479],[20478,20478]]],[1553955110069,["zyx@DESKTOP-60KJ218",[[1,20478,"5"]],[20478,20478],[20479,20479]]],[1553955111846,["zyx@DESKTOP-60KJ218",[[-1,20517,"1"]],[20518,20518],[20517,20517]]],[1553955112139,["zyx@DESKTOP-60KJ218",[[1,20517,"6"]],[20517,20517],[20518,20518]]],[1553955113456,["zyx@DESKTOP-60KJ218",[[-1,20534,"1"]],[20535,20535],[20534,20534]]],[1553955113860,["zyx@DESKTOP-60KJ218",[[1,20534,"7"]],[20534,20534],[20535,20535]]],[1553955115236,["zyx@DESKTOP-60KJ218",[[-1,20566,"1"]],[20567,20567],[20566,20566]]],[1553955115579,["zyx@DESKTOP-60KJ218",[[1,20566,"8"]],[20566,20566],[20567,20567]]],[1553955116790,["zyx@DESKTOP-60KJ218",[[-1,20602,"1"]],[20603,20603],[20602,20602]]],[1553955117177,["zyx@DESKTOP-60KJ218",[[1,20602,"9"]],[20602,20602],[20603,20603]]],[1553955119309,["zyx@DESKTOP-60KJ218",[[1,20636,"0"]],[20636,20636],[20637,20637]]],[1553955121554,["zyx@DESKTOP-60KJ218",[[1,20658,"1"]],[20658,20658],[20659,20659]]],[1553955123363,["zyx@DESKTOP-60KJ218",[[1,20678,"2"]],[20678,20678],[20679,20679]]],[1553955125477,["zyx@DESKTOP-60KJ218",[[1,20720,"3"]],[20720,20720],[20721,20721]]],[1553955127056,["zyx@DESKTOP-60KJ218",[[1,20753,"4"]],[20753,20753],[20754,20754]]],[1553955131059,["zyx@DESKTOP-60KJ218",[[1,20776,"5"]],[20776,20776],[20777,20777]]],[1553955134068,["zyx@DESKTOP-60KJ218",[[1,20792,"6"]],[20792,20792],[20793,20793]]],[1553955136084,["zyx@DESKTOP-60KJ218",[[1,20809,"7"]],[20809,20809],[20810,20810]]],[1553955137941,["zyx@DESKTOP-60KJ218",[[1,20843,"8"]],[20843,20843],[20844,20844]]],[1553955140037,["zyx@DESKTOP-60KJ218",[[1,20877,"9"]],[20877,20877],[20878,20878]]],[1553955141975,["zyx@DESKTOP-60KJ218",[[-1,20917,"1"]],[20918,20918],[20917,20917]]],[1553955142445,["zyx@DESKTOP-60KJ218",[[1,20917,"20"]],[20917,20917],[20919,20919]]],[1553955146148,["zyx@DESKTOP-60KJ218",[[1,20953,"2"]],[20953,20953],[20954,20954]]],[1553955148213,["zyx@DESKTOP-60KJ218",[[1,20998,"22"]],[20998,20998],[21000,21000]]],[1553955149422,["zyx@DESKTOP-60KJ218",[[-1,21000,"1"]],[21001,21001],[21000,21000]]],[1553955154531,["zyx@DESKTOP-60KJ218",[[-1,21051,"1"]],[21052,21052],[21051,21051]]],[1553955154747,["zyx@DESKTOP-60KJ218",[[1,21051,"2"]],[21051,21051],[21052,21052]]],[1553955156221,["zyx@DESKTOP-60KJ218",[[-1,21084,"1"]],[21085,21085],[21084,21084]]],[1553955156478,["zyx@DESKTOP-60KJ218",[[1,21084,"3"]],[21084,21084],[21085,21085]]],[1553955157568,["zyx@DESKTOP-60KJ218",[[-1,21107,"1"]],[21108,21108],[21107,21107]]],[1553955157891,["zyx@DESKTOP-60KJ218",[[1,21107,"4"]],[21107,21107],[21108,21108]]],[1553955160041,["zyx@DESKTOP-60KJ218",[[-1,21166,"1"]],[21167,21167],[21166,21166]]],[1553955160305,["zyx@DESKTOP-60KJ218",[[1,21166,"2"]],[21166,21166],[21167,21167]]],[1553955161382,["zyx@DESKTOP-60KJ218",[[-1,21204,"1"]],[21205,21205],[21204,21204]]],[1553955161589,["zyx@DESKTOP-60KJ218",[[1,21204,"3"]],[21204,21204],[21205,21205]]],[1553955162636,["zyx@DESKTOP-60KJ218",[[-1,21241,"1"]],[21242,21242],[21241,21241]]],[1553955162845,["zyx@DESKTOP-60KJ218",[[1,21241,"4"]],[21241,21241],[21242,21242]]],[1553955165623,["zyx@DESKTOP-60KJ218",[[-1,21338,"1"]],[21339,21339],[21338,21338]]],[1553955165863,["zyx@DESKTOP-60KJ218",[[1,21338,"2"]],[21338,21338],[21339,21339]]],[1553955167146,["zyx@DESKTOP-60KJ218",[[-1,21356,"1"]],[21357,21357],[21356,21356]]],[1553955167413,["zyx@DESKTOP-60KJ218",[[1,21356,"3"]],[21356,21356],[21357,21357]]],[1553955635882,["zyx@DESKTOP-60KJ218",[[1,21302,"\n"]],[21299,21299],[21300,21300]]],[1553955636447,["zyx@DESKTOP-60KJ218",[[1,21303,"\n"]],[21300,21300],[21301,21301]]],[1553955637809,["zyx@DESKTOP-60KJ218",[[1,21301,"78.常见的异常类有哪些?"]],[21301,21301],[21314,21314]]],[1553955641211,["zyx@DESKTOP-60KJ218",[[1,21301,"**"],[1,21314,"**"]],[21301,21314],[21301,21318]]],[1553955649649,["zyx@DESKTOP-60KJ218",[[-1,21301,"**"],[-1,21316,"**"]],[21301,21318],[21301,21314]]],[1553955667777,["zyx@DESKTOP-60KJ218",[[1,21301,"**"],[1,21314,"**"]],[21301,21314],[21301,21318]]],[1553955802919,["zyx@DESKTOP-60KJ218",[[-1,1086,"###### "]],[1093,1093],[1086,1086]]],[1553955803227,["zyx@DESKTOP-60KJ218",[[-1,1085,"\n"]],[1086,1086],[1085,1085]]],[1553955804774,["zyx@DESKTOP-60KJ218",[[1,1085,"\n"]],[1085,1085],[1086,1086]]],[1553955812394,["zyx@DESKTOP-60KJ218",[[-1,1186,"###### "]],[1192,1192],[1186,1186]]],[1553955818466,["zyx@DESKTOP-60KJ218",[[-1,1347,"###### "]],[1354,1354],[1347,1347]]],[1553955824587,["zyx@DESKTOP-60KJ218",[[-1,1510,"###### "]],[1517,1517],[1510,1510]]],[1553955961646,["zyx@DESKTOP-60KJ218",[[-1,21275,"78"]],[21277,21277],[21275,21275]]],[1553955963535,["zyx@DESKTOP-60KJ218",[[1,21275,"Q5"]],[21275,21275],[21277,21277]]],[1553956517586,["zyx@DESKTOP-60KJ218",[[-1,4478,"\\"],[-1,4571,"\\"],[-1,4697,"\\"],[-1,4828,"\\"],[-1,4908,"\\"],[-1,5003,"\\"],[-1,5177,"\\"],[-1,5277,"\\"],[-1,5373,"\\"],[-1,5455,"\\"],[-1,5571,"\\"],[-1,5630,"\\"],[-1,5701,"\\"],[-1,5802,"\\"],[-1,5932,"\\"],[-1,6067,"\\"],[-1,6113,"\\"],[-1,6267,"\\"],[-1,6470,"\\"],[-1,6597,"\\"],[-1,6643,"\\"],[-1,6691,"\\"],[-1,6737,"\\"],[-1,6783,"\\"],[-1,6831,"\\"],[-1,6943,"\\"],[-1,6986,"\\"],[-1,7052,"\\"],[-1,7092,"\\"],[-1,7129,"\\"],[-1,7165,"\\"],[-1,7202,"\\"],[-1,7240,"\\"],[-1,17883,"*"],[1,17884,"\n-"],[-1,17951,"*"],[1,17952,"-"],[-1,18012,"*"],[1,18013,"-"],[1,18513,"\n"],[-1,19090,"*"],[1,19091,"\n-"],[-1,19127,"*"],[1,19128,"-"],[-1,19144,"*"],[1,19145,"-"],[-1,19173,"*"],[1,19174,"-"],[-1,19193,"*"],[1,19194,"-"],[-1,19207,"*"],[1,19208,"\n-"],[-1,19232,"*"],[1,19233,"-"],[-1,19259,"*"],[1,19260,"-"],[-1,20031,"\n"],[-1,20358,"\n"],[-1,21292,"\n"],[-1,21381,"\n\n"],[1,21383,""]],[0,21384],[0,0]]]],null,"zyx@DESKTOP-60KJ218"],["1857a369-f842-459a-becc-c5497d88dbc7",1553997679983,"# JavaSE篇\n\n@toc\n\n### Q&S基础部分\n\n**Q1.JDK 和 JRE 有什么区别?**\n\nJDK是功能齐全的Java软件开发包。JRE 是 Java运行时环境。\nJDK拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb),它能够创建和编译程序。\nJRE 是 Java程序运行所需的内容的集合,它包含了 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序,只运行程序。\n\n**Q2.Java的基本类型有哪些?它们各自相对应的封装类又是什么?请说明int和它的封装类之间的区别。**\n\n_Java的基本类型有8种:_\n整数型:byte、short、int、long(对应位数:8,16,32,64)\n浮点型:float、double(对应位数:32,64)\n字符型:char(对应位数:16)\n布尔类型:boolean(单独使用的时候是会转换成int类型,如果是数组,则会转换成byte类型,因此对应两种位数,32和8位)\n\n_对应的封装类:_\n整数型包装类:Byte,Short,Integer,Long\n浮点型包装类:Float,Double\n字符型包装类:Character\n布尔类型包装类:Boolean\n\n_Integer与int的区别:_\nint 的默认值为0,而 Integer 的默认值为 null,即 Integer 可以区分出未赋值和值为0的区别,int 则无法表达出未赋值的情况。例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用 Integer。\n\n**Q3.请说出作用域 public,private,protected,以及default的区别**\n\n流传的面试题中default经常被写成friendly,这两者没有区别,但是Java中没有friendly关键字。\npublic:共有的,表明该数据对所有人开放,可以直接调\nprivate:私有的,可以理解为自己的私有财产,仅自己可以使用。\nprotected:受保护的,可以理解为有一群人组成一个社团,这个社团里的人可以使用,后代也可以使用。这个社团就相当于一个包,在同一个包中的类便可以访问,子类也可以访问。\ndefault:默认的,在同一个包中的类可以访问,同一个包中的子类也可以访问,但是当子类在其他包中,就不能访问。\n\n\n**Q4.一个\".java\"源文件中是否可以包括多个类(不是内部类)?有什么限制?**\n\n可以包含多个类,但是只有一个类可以使用public来修饰,并且文件名称必须与public修饰的类名称相同。\n\n**Q5.switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?**\n\nswitch表达式中,只能是int类型或者Integer或者枚举类型。byte、short、char可以隐式转换成int类型,因此可以使用这三种类型的表达式,那么long、String类型就不能应用。\n\n**Q6.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?**\n\n前者中s1+1会自动进行类型转换,结果是int型的,s1是short类型,将整型赋值给short型会出错。而后者中+=语句Java编译时会自动识别类型,并进行特殊处理,因此后者没有错误。\n\n**Q7.用最有效率的方法算出 2 乘以 8 等于几?用最有效的方法算出奇数和偶数 ?**\n\n2\\*8=16,我们可以得到2的二进制位10,而16的二进制数为10000,发现2的二进制数中的1向左移动三位就可以得到16的二进制数。因此我们可以使用位移运算来快速计算2\\<\\<3。\n奇数的二进制数最后一位总是1,而偶数的二进制数总是0,因此我们可以使用与运算来进行奇偶数的识别。例如这个数为n,if((n&1)= =1)时,此数就是奇数;if((n&1)= =0)时,此数为偶数。\n\n**Q8.什么是引用类型?**\n\n在Java中类型可分为两大类:值类型与引用类型。值类型就是基本数据类型(如int ,double 等),而引用类型,是指除了基本的变量类型之外的所有类型(如通过 class 定义的类型)。常用引用类型为数组,接口,类(尤其String类,最常见,最长考)。所有的类型在内存中都会分配一定的存储空间(形参在使用的时候也会分配存储空间,方法调用完成之后,这块存储空间自动消失),基本的变量类型只有一块存储空间(分配在stack中), 而引用类型有两块存储空间(一块在stack中,一块在heap中)。\n\n1) 引用是一种数据类型(保存在stack中),保存对象在内存(heap,堆空间)中的地址,这种类型即不是我们平时所说的简单数据类型也不是类实例(对象);\n2) 不同的引用可能指向同一个对象,换句话说,一个对象可以有多个引用,即该类类型的变量。\n引用其实就像是一个对象的名字或者别名 (alias),一个对象在内存中会请求一块空间来保存数据,根据对象的大小,它可能需要占用的空间大小也不等。访问对象的时候,我们不会直接是访问对象在内存中的数据,而是通过引用去访问。引用也是一种数据类型,我们可以把它想象为类似 C++ 语言中指针的东西,它指示了对象在内存中的地址——只不过我们不能够观察到这个地址究竟是什么。\n如果我们定义了不止一个引用指向同一个对象,那么这些引用是不相同的,因为引用也是一种数据类型,需要一定的内存空间(stack,栈空间)来保存。但是它们的值是相同的,都指示同一个对象在内存(heap,堆空间)的中位置。\n\n**Q9.== 和 equals 的区别是什么?**\n\n对于基本类型和引用类型 == 的作用效果是不同的,基本类型:比较的是值是否相同;引用类型:比较的是引用是否相同;\nequals \nequals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。String 重写了 Object 的 equals 方法,把引用比较改成了值比较。\n\n**Q10.Java 中操作字符串都有哪些类?它们之间有什么区别?**\n\n主要是String、StringBuffer、StringBuild类。\nString 类是 final 类型的,因此不可以继承这个类、不能修改这个类,底层源码中有针对String数据的修改方法,都是重新创建了一个String对象,而原来的String对象未曾改变。对于字符串常量,如果内容相同,Java 认为它们代表同 一个 String 对象。而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。字符串如果是变量相加,先开空间,在拼接。字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。\n\n但是为了提高效率节省空间并且可以更改对String类型数据直接更改,我们可使用用StringBuffer 类。StringBuffer线程安全,同步,效率低,开销大,因此可以改用StringBuilder。StringBuilder线程不安全,异步,效率高。\n\n**Q11.什么是同步和异步?什么是线程安全?**\n\n同步:可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。如打电话,通信双方不能断(我们是同时进行,同步),你一句我一句,这样的好处是,对方想表达的信息我马上能收到,但是,我在打着电话,我无法做别的事情。\n\n异步:执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。如收发收短信,对方不用保证此刻我一定在手机旁,同时,我也不用时刻留意手机有没有来短信。这样的话,我看着视频,然后来了短信,我就处理短信(也可以不处理),接着再看视频。\n\n线程安全:多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他操作,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。一个类或者程序所提供的接口对于线程来说是[原子操作](https://baike.baidu.com/item/%E5%8E%9F%E5%AD%90%E6%93%8D%E4%BD%9C)或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。\n\n线程安全问题大多是由[全局变量](https://baike.baidu.com/item/%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F)及[静态变量](https://baike.baidu.com/item/%E9%9D%99%E6%80%81%E5%8F%98%E9%87%8F)引起的,局部变量逃逸也可能导致线程安全问题。\n\n若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑[线程同步](https://baike.baidu.com/item/%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5),否则的话就可能影响线程安全。\n\n**Q12.String str1=\"i\"与 String str2=new String(“i”)一样吗?**\n\nString str2 = new String(“i”)会创建2(1)个对象,String str1 = “i”创建1(0)个对象。 \n==注==:当字符串常量池中有对象hello时括号内成立!\nstr1 ==str2 的判断为false;\nstr1 .equals(str2 )为true\n\n**Q13.String 类的常用方法都有那些?**\n\n1、求字符串长度\n**public int length()**//返回该字符串的长度\n2、求字符串某一位置字符\n**public char charAt(int index)**//返回字符串中指定位置的字符;注意字符串中第一个字符索引是0,最后一个是length()-1。\n3、提取子串\n用String类的substring方法可以提取字符串中的子串,该方法有两种常用参数:\n1)**public String substring(int beginIndex)**//该方法从beginIndex位置起,从当前字符串中取出剩余的字符作为一个新的字符串返回。\n2)**public String substring(int beginIndex, int endIndex)**//该方法从beginIndex位置起,从当前字符串中取出到endIndex-1位置的字符作为一个新的字符串返回。\n4、字符串比较\n1)**public int compareTo(String anotherString)**//该方法是对字符串内容按字典顺序进行大小比较,通过返回的整数值指明当前字符串与参数字符串的大小关系。若当前对象比参数大则返回正整数,反之返回负整数,相等返回0。\n2)**public int compareToIgnore(String anotherString)**//与compareTo方法相似,但忽略大小写。\n3)**public boolean equals(Object anotherObject)**//比较当前字符串和参数字符串,在两个字符串相等的时候返回true,否则返回false。\n4)**public boolean equalsIgnoreCase(String anotherString)**//与equals方法相似,但忽略大小写。\n5、字符串连接\n**public String concat(String str)**//将参数中的字符串str连接到当前字符串的后面,效果等价于\"+\"。\n6、字符串中单个字符查找\n1)**public int indexOf(int ch/String str)**//用于查找当前字符串中字符或子串,返回字符或子串在当前字符串中从左边起首次出现的位置,若没有出现则返回-1。\n2)**public int indexOf(int ch/String str, int fromIndex)**//改方法与第一种类似,区别在于该方法从fromIndex位置向后查找。\n3)**public int lastIndexOf(int ch/String str)**//该方法与第一种类似,区别在于该方法从字符串的末尾位置向前查找。\n4)**public int lastIndexOf(int ch/String str, int fromIndex)**//该方法与第二种方法类似,区别于该方法从fromIndex位置向前查找。\n7、字符串中字符的大小写转换\n1)**public String toLowerCase()**//返回将当前字符串中所有字符转换成小写后的新串\n2)**public String toUpperCase()**//返回将当前字符串中所有字符转换成大写后的新串\n8、字符串中字符的替换\n1)**public String replace(char oldChar, char newChar)**//用字符newChar替换当前字符串中所有的oldChar字符,并返回一个新的字符串。\n2)**public String replaceFirst(String regex, String replacement)**//该方法用字符replacement的内容替换当前字符串中遇到的第一个和字符串regex相匹配的子串,应将新的字符串返回。\n3)**public String replaceAll(String regex, String replacement)**//该方法用字符replacement的内容替换当前字符串中遇到的所有和字符串regex相匹配的子串,应将新的字符串返回。\n9、其他类方法\n1)**String trim()**//截去字符串两端的空格,但对于中间的空格不处理。\n2)**boolean statWith(String prefix)**或**boolean endWith(String suffix)**//用来比较当前字符串的起始字符或子字符串prefix和终止字符或子字符串suffix是否和当前字符串相同,重载方法中同时还可以指定比较的开始位置offset。\n3)**regionMatches(boolean b, int firstStart, String other, int otherStart, int length)**//从当前字符串的firstStart位置开始比较,取长度为length的一个子字符串,other字符串从otherStart位置开始,指定另外一个长度为length的字符串,两字符串比较,当b为true时字符串不区分大小写。\n4)**contains(String** **str)**//判断参数s是否被包含在字符串中,并返回一个布尔类型的值。\n10、字符串转换为基本类型\njava.lang包中有Byte、Short、Integer、Float、Double类的调用方法:\n1)**public static byte parseByte(String s)**\n2)**public static short parseShort(String s)**\n3)**public static short parseInt(String s)**\n4)**public static long parseLong(String s)**\n5)**public static float parseFloat(String s)**\n6)**public static double parseDouble(String s)**\n11、基本类型转换为字符串类型\nString类中提供了String valueOf()放法,用作基本类型转换为字符串类型。\n1)**static String valueOf(char data\\[])**\n2)**static String valueOf(char data\\[], int offset, int count)**\n3)**static String valueOf(boolean b)**\n4)**static String valueOf(char c)**\n5)**static String valueOf(int i)**\n6)**static String valueOf(long l)**\n7)**static String valueOf(float f)**\n8)**static String valueOf(double d)**\n12、进制转换\n使用Long类中的方法得到整数之间的各种进制转换的方法:\nLong.toBinaryString(long l)\nLong.toOctalString(long l)\nLong.toHexString(long l)\nLong.toString(long l, int p)//p作为任意进制\n\n**Q14.如何将字符串反转?**\n\n```java\nimport java.util.Scanner;\n/**\n * 使用Java中的StringBuffer完成字符串的翻转\n * @author xuanxuan\n *\n */\npublic class ReverseString {\n\tpublic static void main(String[] args) {\n\t\tScanner in = new Scanner(System.in);\n\t\t//如果使用next()方法读取字符串时,读到空格就会停止,而使用nextLine()方法会读取空格\n\t\tString s = in.nextLine();\n\t\tSystem.out.println(ReverseString(s));\n\t\tin.close();\n\t}\n\t\n\tpublic static String ReverseString(String str) {\n\t\tStringBuffer bu = new StringBuffer();\n\t\tbu.append(str);\n\t\tString str1 = bu.reverse().toString();\n\t\treturn str1;\n\t}\n}\n```\n\n**Q15.final 在 java 中有什么作用?**\n\nfinal 修饰的类叫最终类,该类不能被继承。\nfinal 修饰的方法不能被重写。\nfinal 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。\n使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容 还是可以改变的。\n\n**Q16.java 中的 Math.round(-1.5) 等于多少?**\n\nCeil向上取整,floor向下取整。Round先对一个树+0.5,然后向下取整。因此这个表达式的值为-1\n\n**Q17.是否可以从一个 static 方法内部发出对非 static 方法的调用?**\n\n不可以。因为非 static 方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对 象上进行方法调用,而 static 方法调用时不需要创建对象,可以直接调用。也就是说,当一 个 static 方法被调用时,可能还没有创建任何实例对象,如果从一个 static 方法中发出对非 static 方法的调用,那个非 static 方法是关联到哪个对象上的呢?这个逻辑无法成立,所以, 一个 static 方法内部发出对非 static 方法的调用。/\n\n**Q18.Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型?**\n\nOverload是重载的意思,Override是覆盖的意思,也就是重写。\n\n重载 Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。\n\n重写 Override 表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。\n\n子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。\n\n子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是 private 类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。\n\n如果几个 Overloaded 的方法的参数列表不一样,它们的返回者类型当然也可以不一样。如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载 Overload?\n\n这是不行的,我们可以用反证法来说明这个问题, 因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如,我们调用 map.remove(key)方法时,虽然 remove 方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java 就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。 override 可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法 进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外, 我们在继承中也可能会在子类覆盖父类中的方法。\n\n在覆盖要注意以下的几点:\n\n1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;\n\n2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;\n\n3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;\n\n4、被覆盖的方法不能为 private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。\n\noverload 对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM 就会根据不同的参数样式,来选择合适的方法执行。在使用重载要注意以下的几点:\n\n1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是 fun(int,float), 但是不能为 fun(int,int)); 2、不能通过访问权限、返回类型、抛出的异常进行重载;\n\n3、方法的异常类型和数目不会对重载造成影响;\n\n4、对于继承来说,如果某一方法在父类中是访问权限是 priavte,那么就不能在子类对其进 行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。\n\n**Q19.构造器 Constructor 是否可被 override?**\n\n构造器 Constructor 不能被继承,因此不能重写 Override,但可以被重载 Overload。\n\n**Q20.abstract class 和 interface 有什么区别?**\n\nAbstract:\n\n- 含有 abstract 修饰符的 class 即为抽象类,abstract 类不能创建的实例对象。\n- 含有 abstract 方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。\n- 如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为 abstract 类型。\n\n接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。\n接口中的方法定义默认为 public abstract 类型,接口中的成员变量类型默认为public static final。\n\n两者区别:\n1.抽象类可以有构造方法,接口中不能有构造方法。 \n2.抽象类中可以有普通成员变量,接口中没有普通成员变量 \n3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象 的普通方法。\n4.抽象类中的抽象方法的访问类型可以是 public,protected 和(默认类型,虽然 eclipse 下不报错,但应该也不行),但接口中的抽象方法只能是 public 类型的,并且默认即 为 public abstract 类型。 \n5.抽象类中可以包含静态方法,接口中不能包含静态方法 \n6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任 意,但接口中定义的变量只能是 public static final 类型,并且默认即为 public static final 类 型。\n7.一个类可以实现多个接口,但只能继承一个抽象类。\n\n**Q21.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可 继承具体类(concrete class)?抽象类中是否可以有静态的 main 方法?**\n\n接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类中 可以有静态的 main 方法。抽象类与普通类的唯一区别:就是不能创建实例对象和允许有 abstract 方法。\n\n**Q22.Java 中实现多态的机制是什么?**\n\n靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方 法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运 行的那个对象的方法,而不是引用变量的类型中定义的方法。\n\n**Q22.说出一些常用的类,包,接口,请各举 5 个?**\n\n常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer java.util.Date,System,Class,List,HashMap\n常用的包:java.lang java.io java.util java.sql,javax.servlet,org.hibernate\n常用的接口:Remote List Map Document NodeList,Servlet,HttpServletRequest,HttpServletResponse,Transaction(Hibernate)、 Session(Hibernate),HttpSession\n\n**Q23.Java类的初始化顺序**\n\n_普通类中:_\n\n- 静态变量\n- 静态代码块\n- 普通变量\n- 普通代码块\n- 构造函数\n\n_含有子类的:_\n\n- 父类静态变量\n- 父类静态代码块\n- 子类静态变量\n- 子类静态代码块\n- 父类普通变量\n- 父类普通代码块\n- 父类构造函数\n- 子类普通变量\n- 子类普通代码块\n- 子类构造函数\n\n_含有接口、抽象类、实现类的_\n\n- 接口静态变量\n- 抽象类静态变量\n- 抽象类静态代码块\n- 实现类静态变量\n- 实习类静态代码块\n- 抽象类普通变量\n- 抽象类普通代码块\n- 抽象类构造函数\n- 实现类普通变量\n- 实现类普通代码块\n- 实现类构造函数\n\n**Q23.private可以通过反射访问,那么private的意义是什么**\n\nprivate其实只是一种Java编写规范,并不具备绝对安全的特征,当外部类对对象进行调用时,可以看到清晰的类结构。\n\n**Q24.局部变量为何要显示赋值,否则编译不通过**\n\n局部变量的赋值和取值是由绝对性的先后顺序,由编译器来决定,这是一种约束。编译不通过是因为要防止局部变量忘记赋值,而引起的失误。\n\n**Q25.静态变量与实例变量的区别**\n\n静态变量使用static声明时,属于类,也称为类变量或者全局变量,程序只要加载,静态变量就可以使用。<br>\n实例变量属于某个对象属性,必须创建实例对象。\n\n**Q26.解释一下什么是构造器**\n\n在创建对象时执行初始化,通过new关键字来调用构造器,构造器返回该类对象,但这个对象并不全由构造器负责。构造器不能被继承,因此不能重写,但是可以重载。一个子类在显示调用父类构造器时,必须用super\n\n**Q27.1/0和1.0/0.0有什么区别**\n\n1/0会爆出异常,而1.0/0.0是无穷大\n\n**Q28.将GBK字节流转换为UTF-8**\n\n```java\nbyte[] str , dst;\ndst = new String(src , \"GBK\").getBytes(\"UTF-8\");\n```\n\n**Q28.二维数组的定义**\n\n```java\nfloat f[][] = new float[6][6];\nfloat []f[] = new float[6][6];\nfloat [][]f = new float[6][6];\nfloat [][]f = new float[6][];\n```\n\n**Q29.String str = new String(“abc”)在内存中如何分配?**\n\n“abc”保存在常量池中,str作为对象被保存在堆中,然而Java7后,将常量池放在了堆里。 \n\n**Q30.下列程序中有什么错误?**\n\n```java\n父类{方法1}\n\n子类extends父类{重写方法1,方法2}\n\n父类 对象 = new 子类();\n```\n\n此代码不能通过编译,编译器认为对象是父类类型,父类中没有子类中的方法2,对象只能调用父类中的方法1。\n\n**Q31.JDBC中获取结果集的操作有哪些?**\n\n```java\n1.Statement sta = con.createStatment();\n ResultSet rs = sta.executeQuery(\"SQL语句\");\n\n2.PreparedStatement pst = con.prepareStatement(\"SQL语句\");\n ResultSet rs = pst.executeQuery();\n```\n\n**Q32.Java中的IO流分几种?**\n\n按流向分(站在程序角度考虑)\n\n 输入流(input)\n\n 输出流(output)\n\n按类型分:\n\n 字节流(InputStream/OutputStream)\n\n 任何文件都可以通过字节流进行传输。\n\n 字符流(Reader/Writer)\n\n 非纯文本文件,不能用字符流,会导致文件格式破坏,不能正常执行。\n\n按功能分:\n\n 节点流(低级流:直接跟输入输出源对接)\n\n FileInputStream/FileOutputStream/FileReader/FileWriter/PrintStream/PrintWriter.\n\n 处理流(高级流:建立在低级流的基础上)\n\n 转换流:InputStreamReader/OutputStreamWriter,字节流转字符流/字符流转字节流\n\n 缓冲流:BufferedInputStream/BufferedOutputStream BufferedReader/BufferedReader可对节点流经行包装,使读写更快\n\n**Q33.BIO\\\\NIO\\\\AIO中的区别?**\n\n- Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。\n\n- Java NIO : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。\n\n- Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理。\n\n_BIO、NIO、AIO适用场景分析:_\n\n- BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。\n\n- NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。\n\n- AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。\n\n**Q34.Files的常用方法?**\n\n(一)访问文件名或路径\n\n1)String getName() 返回File对象所表示的文件名或文件路径\n\n2)String getPath() 返回File对象所对应的相对路径名。\n\n3)File getAbsoluteFile() 返回File对象的绝对路径文件\n\n4)String getAbsolutePath() 返回File对象所对应的绝对路径名\n\n5)String getParent() 返回File对象所对应目录的父目录\n\n6. boolean renameTo(File dest) 重命名File对象的文件或目录\n\n(二)文件检测\n\n1boolean exists() 判断File对象的文件或目录是否存在\n\n2)bool canWrite() 判断File对象是否可写\n\n3)boolean canRead()判断File对象是否可读\n\n4)boolean isDirectory() 判断File对象是否是目录\n\n5)boolean isFile() 判断File对象是否是文件\n\n6)boolean isAbsolute() 判断File对象是否采用绝对路径\n\n(三)文件信息\n\n1)long length() ; File对象对应文件的长度\n\n2)long lastNodified() File对象最后修改的时间\n\n(四)文件操作\n\n1)boolean createNewFile() ; 检查文件是否存在,当文件不存在时创建一个新的文件\n\n2. boolean delete() 删除File对象所对应的文件或目录 \n\n(五)目录操作\n\n1)boolean mkdir() 创建一个File对象所对应的路径\n\n2)String\\[] list() 列出File对象所有的子文件名和路径名\n\n3)File\\[] listFile() 列出File对象的所有子文件或路径\n\n4)static File\\[] listRoots() 列出系统所有的根路径\n\n### Q&S集合部分\n\n**Q1.Java中的容器有哪些?**\n\n数组、String(底层是char类型数组)、List(线性表)、Set(无序存储,元素不能重复)、Map(无序存储,元素可以重复)\n\n**Q2.Collection 和 Collections 有什么区别?**\n\n1、java.util.Collection 是一个**集合接口(集合类的一个顶级接口)**。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。\n\n Collection\\\n├List\\\n│├LinkedList\\\n│├ArrayList\\\n│└Vector\\\n│ └Stack\\\n└Set\n\n2、Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。\n\n1. 排序(Sort)\n 使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此列表内的所有元素都必须是使用指定比较器可相互比较的\n2. 混排(Shuffling)\n 混排算法所做的正好与 sort 相反: 它打乱在一个 List 中可能有的任何排列的踪迹。也就是说,基于随机源的输入重排该 List, 这样的排列具有相同的可能性(假设随机源是公正的)。这个算法在实现一个碰运气的游戏中是非常有用的。Collections.Shuffling(list)\n3. 反转(Reverse)\n 使用Reverse方法可以根据元素的自然顺序 对指定列表按降序进行排序。Collections.reverse(list)\n4. 替换所以的元素(Fill)\n 使用指定元素替换指定列表中的所有元素。Collections.fill(li,\"aaa\");\n5. 拷贝(Copy)\n 用两个参数,一个目标 List 和一个源 List, 将源的元素拷贝到目标,并覆盖它的内容。目标 List 至少与源一样长。如果它更长,则在目标 List 中的剩余元素不受影响。Collections.copy(list,li): 前面一个参数是目标列表 ,后一个是源列表。\n6. 返回Collections中最小元素(min)\n 根据指定比较器产生的顺序,返回给定 collection 的最小元素。collection 中的所有元素都必须是通过指定比较器可相互比较的。\n Collections.min(list)\n7. 返回Collections中最小元素(max)\n 根据指定比较器产生的顺序,返回给定 collection 的最大元素。collection 中的所有元素都必须是通过指定比较器可相互比较的。\n Collections.max(list)\n8. lastIndexOfSubList\n 返回指定源列表中最后一次出现指定目标列表的起始位置\n int count = Collections.lastIndexOfSubList(list,li);\n9. IndexOfSubList\n 返回指定源列表中第一次出现指定目标列表的起始位置\n int count = Collections.indexOfSubList(list,li);\n10. Rotate\n 根据指定的距离循环移动指定列表中的元素\n Collections.rotate(list,-1);如果是负数,则正向移动,正数则方向移动。\n\n**Q3.List、Set、Map 有什么区别?**\n_**List:**_\n\n- 可以允许重复的对象。\n- 可以插入多个null元素。\n- 是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。\n- 常用的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适。\n\n_**Set:**_\n\n- 不允许重复对象\n- 无序容器,你无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一个排序顺序。\n- 只允许一个 null 元素\n- Set 接口最流行的几个实现类是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基于 HashMap 实现的 HashSet;TreeSet 还实现了 SortedSet 接口,因此 TreeSet 是一个根据其 compare() 和 compareTo() 的定义进行排序的有序容器。\n\n_**Map:**_\n\n- Map不是collection的子接口或者实现类。Map是一个接口。\n- Map 的 每个 Entry 都持有两个对象,也就是一个键一个值,Map 可能会持有相同的值对象但键对象必须是唯一的。\n- TreeMap 也通过 Comparator 或者 Comparable 维护了一个排序顺序。\n- Map 里你可以拥有随意个 null 值但最多只能有一个 null 键。\n- Map 接口最流行的几个实现类是 HashMap、LinkedHashMap、Hashtable 和 TreeMap。(HashMap、TreeMap最常用)\n\n**Q4.什么场景下使用list、set、map?**\n\n1. 如果你经常会使用索引来对容器中的元素进行访问,那么 List 是你的正确的选择。如果你已经知道索引了的话,那么 List 的实现类比如 ArrayList 可以提供更快速的访问,如果经常添加删除元素的,那么肯定要选择LinkedList。\n\n2. 如果你想容器中的元素能够按照它们插入的次序进行有序存储,那么还是 List,因为 List 是一个有序容器,它按照插入顺序进行存储。\n\n3. 如果你想保证插入元素的唯一性,也就是你不想有重复值的出现,那么可以选择一个 Set 的实现类,比如 HashSet、LinkedHashSet 或者 TreeSet。所有 Set 的实现类都遵循了统一约束比如唯一性,而且还提供了额外的特性比如 TreeSet 还是一个 SortedSet,所有存储于 TreeSet 中的元素可以使用 Java 里的 Comparator 或者 Comparable 进行排序。LinkedHashSet 也按照元素的插入顺序对它们进行存储。\n\n4. 如果你以键和值的形式进行数据存储那么 Map 是你正确的选择。你可以根据你的后续需要从 Hashtable、HashMap、TreeMap 中进行选择。\n\n**Q5.HashMap 和 Hashtable 有什么区别?**\n\n共同点:都完成了Map接口的实现\n区别:\n\n- HashMap允许空键值,异步处理,非线程安全,只有一个线程的情况下效率高于HashTable。HashTable同步,线程安全。\n- HashMap将HashTable中的contains方法更改为containsvalue和containskey。\n- HashMap是Map接口的一个实现,HashTable基于陈旧的Dictionary抽象类。\n\n**Q6.HashMap 和 Hashtable的实现原理,主要讲讲HashMap的原理?(HashMap的1.7和1.8的区别)**\n\n共同点:实现原理基本相同,都是使用哈希表的“拉链法”,基于数组(Entry类型)和链表实现。两者构造方法的意思是相同的。\n\n```java\nHashMap(){}\n默认容量为16,装填因子为0.75。HashTable默认容量为11。\nHashMap(int initialCapacity){}\n指定初始容量,装填因子默认为0.75\nHashMap(int initialCapacity,float loadFactor){}\n指定容量和装填因子\nHashMap(Map<?extends K,? extends V> m)\n构造新的HashMap\n```\n\n考察HashMap的原理,就是考察put和get原理。\nput原理根据key值获取相应的hash值:\n\n```java\nint hash = hash(key.has.hascode())\n```\n\n其实就是使用哈希表原理中的除留余数法来确定key值应该在数组中的位置,数组的作用是充当索引,key值相同映射到数组中的同一位置,使用头插法放在表头。\n\nget原理利用hash值先进行数组中定位,再遍历链表使用equals()方法匹配。\n\n当HashMap达到默认因子0.75,会自动双倍扩容,扩容后重新计算每个key值的hash值。数组长度必须为16或者2的幂次,这样做的目的是使位运算的结果能够均匀分布。\n\nHashMap没有加锁,因此造成了非线程安全,若HashMap接近临界点,且有两个或多个线程并发put操作,会进行扩容与hash值重新结算,而rehash在并发情况下会形成链表环。\n\n链表环的判断:两个指针A和B,同时指向头结点,然后开始循环遍历,让A每次下移一个节点,让B每次下移两个节点,然后比较两个指针指的节点是否相同,相同则有环。\n\nJDK8中HashMap引入了红黑树(自平衡二叉树),提升了查询,插入和删除\n\n**Q6.ConcurrentHashMap的原理?(的1.7和1.8的区别)**\n\nconcurrenthashmap既可以保证安全,又能保证性能。其原理就是一个二级哈希表,一个总的哈希表下面有若干子哈希表,由segement数组组成,使用分段锁,并行插入时效率高。\n\nconcurrenthashmap的put原理:\n\n- 先为key值做hash运算,通过hash值定位到segement对象\n- 获取可重入锁,对分段进行加锁\n- 再次计算hash值,定位到segemen里的具体位置\n- 插入或者覆盖HashEntry对象\n- 释放锁\n\nget原理:\n\n- 为输入的key做hash运算,得到hash值\n- 通过hash值,定位到对应的segement对象\n- 再次通过hash值,定位到segement当中数组的具体位置\n\nJDK8中,concurrenthashmap放弃了segement分段机制,利用Node数组+CAS+Synchronized来保证并发更新安全,底层为数组+链表+红黑树。\n\n**Q7.说一下 HashSet 的实现原理?**\n\n实现了Set接口,但底层由HashMap支持,不包含重复元素,且维持自己的内部排序,可使用null。\n\n```java\niterator()返回set元素\npublic Iterator<E> iterator(){return map.keyset().iterator();}\n\nsize()返回大小\npublic int size(){return map.size();}\n\nisEmpty()判空\nreturn map.isEmpty();\n\ncontains(Object o)判断是否存在某元素\nreturn map.containskey(o);\n\nadd()添加元素\nreturn map.put(e,PRESENT)==null;\n\nremove()删除元素\nreturn map.remove(o)==PRESENT;\n\nclear()清除所有元素\nmap.clear();\n\nclone获取HashMap的浅表副本,并没有复制这些元素本身\ntry{\n HashSet<E> newSet = (HashSet<E>) super.clone();\n newSet.map = (HashSet<E,Object>) map.clone();\n return newSet;\n}caatch(CloneNotSupportedException e){\n throw new InternalError();\n}\n```\n\n**Q8.ArrayList 和 LinkedList 的区别是什么?**\n\n**Q9.如何实现数组和 List 之间的转换?**\n\n**Q10.ArrayList 和 Vector 的区别是什么?**\n\n**Q11.Array 和 ArrayList 有何区别?**\n\n**Q12.在 Queue 中 poll()和 remove()有什么区别?**\n\n**Q13.哪些集合类是线程安全的?**\n\n**Q14.迭代器 Iterator 是什么?**\n\n**Q15.Iterator 怎么使用?有什么特点?**\n\n**Q16.Iterator 和 ListIterator 有什么区别?**\n\n**Q17.怎么确保一个集合不能被修改?**\n\n### Q&S线程部分\n\n**Q1.并行和并发有什么区别?**\n\n**Q2.线程和进程的区别?**\n\n**Q3.守护线程是什么?**\n\n**Q4.创建线程有哪几种方式?**\n\n**Q5.说一下 runnable 和 callable 有什么区别?**\n\n**Q6.线程有哪些状态?**\n\n**Q7.sleep() 和 wait() 有什么区别?**\n\n**Q8.notify()和 notifyAll()有什么区别?**\n\n**Q9.线程的 run()和 start()有什么区别?**\n\n**Q10.创建线程池有哪几种方式?**\n\n**Q11.线程池都有哪些状态?**\n\n**Q12.线程池中 submit()和 execute()方法有什么区别?**\n\n**Q13.在 java 程序中怎么保证多线程的运行安全?**\n\n**Q14.多线程锁的升级原理是什么?**\n\n**Q15.什么是死锁?**\n\n**Q16.怎么防止死锁?**\n\n**Q17.ThreadLocal 是什么?有哪些使用场景?**\n\n**Q18.说一下 synchronized 底层实现原理?**\n\n**Q19.synchronized 和 volatile 的区别是什么?**\n\n**Q20.synchronized 和 Lock 有什么区别?**\n\n**Q21.synchronized 和 ReentrantLock 区别是什么?**\n\n**Q22.说一下 atomic 的原理?**\n\n### Q&S反射部分\n\n**Q1.什么是反射?**\n\n**Q2.什么是 java 序列化?什么情况下需要序列化?**\n\n**Q3.动态代理是什么?有哪些应用?**\n\n**Q4.怎么实现动态代理?**\n\n### Q&S异常部分\n\n**Q1.throw 和 throws 的区别?**\n\n**Q2.final、finally、finalize 有什么区别?**\n\n**Q3.try-catch-finally 中哪个部分可以省略?**\n\n**Q4.try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?**\n\n**Q5.常见的异常类有哪些?**\n\n### Q&S对象拷贝部分\n\n**Q1.为什么要使用克隆?**\n\n**Q2.如何实现对象克隆?**\n\n**Q3.深拷贝和浅拷贝区别是什么?**\n\n### Q&SJava常考排序\n",[[1553997656505,["zyx@DESKTOP-60KJ218",[[1,20046,"\n"]],[20045,20045],[20046,20046]]],[1553997658014,["zyx@DESKTOP-60KJ218",[[1,20047,"\n"]],[20045,20045],[20046,20046]]],[1553997746533,["zyx@DESKTOP-60KJ218",[[1,20046,"ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。 \n 2\\. 对于随机访问,ArrayList优于LinkedList\n\n 3\\. 对于插入和删除操作,LinkedList优于ArrayList\n\n 4\\. LinkedList比ArrayList更占内存,因为LinkedList的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。"]],[20046,20046],[20252,20252]]],[1553997754837,["zyx@DESKTOP-60KJ218",[[-1,20088," "]],[20093,20093],[20088,20088]]],[1553997758058,["zyx@DESKTOP-60KJ218",[[-1,20122," "]],[20128,20128],[20122,20122]]],[1553997758564,["zyx@DESKTOP-60KJ218",[[-1,20121,"\n"]],[20122,20122],[20121,20121]]],[1553997759942,["zyx@DESKTOP-60KJ218",[[-1,20087," "]],[20088,20088],[20087,20087]]],[1553997761798,["zyx@DESKTOP-60KJ218",[[-1,20157," "]],[20159,20159],[20157,20157]]],[1553997762026,["zyx@DESKTOP-60KJ218",[[-1,20156,"\n"]],[20157,20157],[20156,20156]]],[1553997764507,["zyx@DESKTOP-60KJ218",[[1,20046,"1"],[-1,20085," "],[1,20086," "]],[20046,20046],[20047,20047]]],[1553997767253,["zyx@DESKTOP-60KJ218",[[1,20047,"、."]],[20047,20047],[20049,20049]]],[1553997768493,["zyx@DESKTOP-60KJ218",[[-1,20047,"、."]],[20049,20049],[20047,20047]]],[1553997773676,["zyx@DESKTOP-60KJ218",[[1,20047,"\\."]],[20047,20047],[20049,20049]]],[1553997854520,["zyx@DESKTOP-60KJ218",[[1,20045,"其本质就是顺序表与链表的区别:"]],[20045,20045],[20060,20060]]],[1553998017388,["zyx@DESKTOP-60KJ218",[[1,20060,"只不过ArrayList实现了动态扩容。"]],[20060,20060],[20080,20080]]],[1553998071510,["zyx@DESKTOP-60KJ218",[[1,20045,"\n"]],[20044,20044],[20045,20045]]],[1553998099061,["zyx@DESKTOP-60KJ218",[[1,20081,"传统顺序表的"]],[20081,20081],[20087,20087]]],[1553998111252,["zyx@DESKTOP-60KJ218",[[1,20087,"存储空间是一次性分配。"]],[20087,20087],[20098,20098]]],[1553998123110,["zyx@DESKTOP-60KJ218",[[1,20097,",切空间"]],[20097,20097],[20101,20101]]],[1553998124201,["zyx@DESKTOP-60KJ218",[[-1,20098,"切空间"]],[20101,20101],[20098,20098]]],[1553998130107,["zyx@DESKTOP-60KJ218",[[1,20098,"且空间地址连续"]],[20098,20098],[20105,20105]]],[1553998235093,["zyx@DESKTOP-60KJ218",[[1,20183,"以O(1)时间复杂度对元素进行随机访问"]],[20183,20183],[20202,20202]]],[1553998236794,["zyx@DESKTOP-60KJ218",[[1,20183,","]],[20183,20183],[20184,20184]]],[1553998238670,["zyx@DESKTOP-60KJ218",[[1,20203,"。"]],[20203,20203],[20204,20204]]],[1553998253110,["zyx@DESKTOP-60KJ218",[[1,20240,"LinkedList的每一个元素都依靠地址指针和它后一个元素连接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)"]],[20240,20240],[20300,20300]]],[1553998258179,["zyx@DESKTOP-60KJ218",[[1,20240,"。"]],[20240,20240],[20241,20241]]],[1553998270416,["zyx@DESKTOP-60KJ218",[[-1,20241,"LinkedList的每一个元素都依靠地址指针和它后一个元素连接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)"]],[20241,20301],[20241,20241]]],[1553998272732,["zyx@DESKTOP-60KJ218",[[1,20204,"LinkedList的每一个元素都依靠地址指针和它后一个元素连接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)。"]],[20204,20204],[20265,20265]]],[1553998303328,["zyx@DESKTOP-60KJ218",[[1,20302,"当元素被添加到LinkedList任意位置的时候,不需要像ArrayList那样重新计算大小或者是更新索引。"]],[20302,20302],[20356,20356]]],[1553998315493,["zyx@DESKTOP-60KJ218",[[1,4478,"\\"],[1,4570,"\\"],[1,4695,"\\"],[1,4825,"\\"],[1,4904,"\\"],[1,4998,"\\"],[1,5171,"\\"],[1,5270,"\\"],[1,5365,"\\"],[1,5446,"\\"],[1,5561,"\\"],[1,5619,"\\"],[1,5689,"\\"],[1,5789,"\\"],[1,5918,"\\"],[1,6052,"\\"],[1,6097,"\\"],[1,6250,"\\"],[1,6452,"\\"],[1,6578,"\\"],[1,6623,"\\"],[1,6670,"\\"],[1,6715,"\\"],[1,6760,"\\"],[1,6807,"\\"],[1,6918,"\\"],[1,6960,"\\"],[1,7025,"\\"],[1,7064,"\\"],[1,7100,"\\"],[1,7135,"\\"],[1,7171,"\\"],[1,7208,"\\"],[-1,20108,"\\"],[-1,20152,"\\"],[-1,20267,"\\"],[-1,20358,"\\"]],[0,21743],[0,0]]],[1553998318776,["zyx@DESKTOP-60KJ218",[[1,20496,"\n"]],[20495,20495],[20496,20496]]],[1553998319645,["zyx@DESKTOP-60KJ218",[[1,20497,"\n"]],[20495,20495],[20496,20496]]],[1553998344682,["zyx@DESKTOP-60KJ218",[[1,20496,"List转数组:toArray(arraylist.size()方法\n\n数组转List:Arrays的asList(a)方法"]],[20496,20496],[20558,20558]]],[1553998347880,["zyx@DESKTOP-60KJ218",[[-1,20531,"\n"]],[20531,20531],[20530,20530]]],[1553998349177,["zyx@DESKTOP-60KJ218",[[1,20559,"\n"]],[20557,20557],[20558,20558]]],[1553998456127,["zyx@DESKTOP-60KJ218",[[1,20559,"```java\nArrayList<String> list = new ArrayList<String>();\n\t\t list.add(\"dff1\");\n\t\t list.add(\"dff2\");\n\t\t list.add(\"dff3\");\n\t\t list.add(\"dff4\");\n\t\t list.add(\"dff5\");\n\t\t String[] array = new String[list.size()];\n\t\t String[] s=list.toArray(array);\n\t\t System.out.println(Arrays.toString(s));\n```\n"]],[20558,20558],[20850,20850]]],[1553998458904,["zyx@DESKTOP-60KJ218",[[-1,20531,"数组转List:Arrays的asList(a)方法"]],[20531,20557],[20531,20531]]],[1553998461130,["zyx@DESKTOP-60KJ218",[[-1,20532,"\n"]],[20531,20531],[20530,20530]]],[1553998463459,["zyx@DESKTOP-60KJ218",[[1,20822,"数组转List:Arrays的asList(a)方法"]],[20822,20822],[20848,20848]]],[1553998464785,["zyx@DESKTOP-60KJ218",[[1,20849,"\n"]],[20848,20848],[20849,20849]]],[1553998481095,["zyx@DESKTOP-60KJ218",[[1,20850,"```java\nString[] string=new String[]{\"s1\",\"s2\",\"s3\",\"s4\",\"s5\"};\n\t\t \n\t\t List<String> li= Arrays.asList(string);\n\t\t \n\t\t System.out.println(li);\n```\n\n"]],[20849,20849],[20998,20998]]],[1553998491401,["zyx@DESKTOP-60KJ218",[[-1,21040,"Array"]],[21040,21045],[21040,21040]]],[1553998492269,["zyx@DESKTOP-60KJ218",[[1,21009,"Array"]],[21004,21004],[21009,21009]]],[1553998493682,["zyx@DESKTOP-60KJ218",[[1,21009,"、"]],[21009,21009],[21010,21010]]],[1553998495466,["zyx@DESKTOP-60KJ218",[[-1,21040,"**Q11. 和 ArrayList 有何区别?**"]],[21040,21066],[21040,21040]]],[1553998496231,["zyx@DESKTOP-60KJ218",[[-1,21041,"\n"]],[21040,21040],[21039,21039]]],[1553998497709,["zyx@DESKTOP-60KJ218",[[1,21041,"\n"]],[21039,21039],[21040,21040]]],[1553998513437,["zyx@DESKTOP-60KJ218",[[1,21040,"a. Array是表态连续分配的一片内存区域,与ArrayList相比、不能动态改变大小,通过Arrays进行sort、binarySearch等操作;\n\nb. ArrayList是继承自List的可动态改变大小的数组,和Array一样要求连续分配,内部封闭了一个Object数组,许多方法直接调用Arrays实现;\n\nc. Vector和ArrayList功能基本一致,但Vector是线程安全的。\n\n效率由高到低依次为:Array、ArrayList、Vector。"]],[21040,21040],[21275,21275]]],[1553998760254,["zyx@DESKTOP-60KJ218",[[1,21293,"add"]],[21293,21293],[21296,21296]]],[1553998767307,["zyx@DESKTOP-60KJ218",[[1,21296,"()和offer()"]],[21296,21296],[21306,21306]]],[1553998768035,["zyx@DESKTOP-60KJ218",[[-1,21304,"()"]],[21306,21306],[21304,21304]]],[1553998770462,["zyx@DESKTOP-60KJ218",[[1,21304,"()、"]],[21304,21304],[21307,21307]]],[1553998794827,["zyx@DESKTOP-60KJ218",[[1,21323,"、element()和peek()"]],[21323,21323],[21340,21340]]],[1553998797697,["zyx@DESKTOP-60KJ218",[[1,21350,"\n"]],[21349,21349],[21350,21350]]],[1553998798729,["zyx@DESKTOP-60KJ218",[[1,21351,"\n"]],[21349,21349],[21350,21350]]],[1553998805521,["zyx@DESKTOP-60KJ218",[[1,21350,"1. queue的增加元素方法add和offer的区别在于,add方法在队列满的情况下将选择抛异常的方法来表示队列已经满了,而offer方法通过返回false表示队列已经满了;在有限队列的情况,使用offer方法优于add方法;\n2. remove方法和poll方法都是删除队列的头元素,remove方法在队列为空的情况下将抛异常,而poll方法将返回null;\n3. element和peek方法都是返回队列的头元素,但是不删除头元素,区别在与element方法在队列为空的情况下,将抛异常,而peek方法将返回null.\n--------------------- \n作者:0li0 \n来源:CSDN \n原文:https://blog.csdn.net/qq_36101933/article/details/83145869 \n版权声明:本文为博主原创文章,转载请附上博文链接!"]],[21350,21350],[21742,21742]]],[1553998811118,["zyx@DESKTOP-60KJ218",[[-1,21613,"--------------------- \n作者:0li0 \n来源:CSDN \n原文:https://blog.csdn.net/qq_36101933/article/details/83145"]],[21613,21712],[21613,21613]]],[1553998813054,["zyx@DESKTOP-60KJ218",[[-1,21592,"将抛异常,而peek方法将返回null.\n869 \n版权声明:本文为博主原创文章,转载请附上博文链接!"]],[21592,21643],[21592,21592]]],[1553998814910,["zyx@DESKTOP-60KJ218",[[1,21592,"将抛异常,而peek方法将返回null.\n869 \n版权声明:本文为博主原创文章,转载请附上博文链接!"]],[21592,21592],[21592,21643]]],[1553998817982,["zyx@DESKTOP-60KJ218",[[-1,21613,"869 \n版权声明:本文为博主原创文章,转载请附上博文链接!"]],[21613,21643],[21613,21613]]],[1553998819633,["zyx@DESKTOP-60KJ218",[[-1,21614,"\n"]],[21614,21614],[21613,21613]]],[1553998826112,["zyx@DESKTOP-60KJ218",[[-1,21534," "]],[21535,21535],[21534,21534]]],[1553998828265,["zyx@DESKTOP-60KJ218",[[-1,21467," "]],[21468,21468],[21467,21467]]],[1553998829712,["zyx@DESKTOP-60KJ218",[[-1,21352," "]],[21353,21353],[21352,21352]]],[1553998836885,["zyx@DESKTOP-60KJ218",[[1,21464,"\n"]],[21463,21463],[21464,21464]]],[1553998838044,["zyx@DESKTOP-60KJ218",[[1,21531,"\n"]],[21530,21530],[21531,21531]]],[1553998845189,["zyx@DESKTOP-60KJ218",[[1,21635,"\n"]],[21634,21634],[21635,21635]]],[1553998846472,["zyx@DESKTOP-60KJ218",[[1,21636,"\n"]],[21634,21634],[21635,21635]]],[1553999325705,["zyx@DESKTOP-60KJ218",[[1,21635,"vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。\n\nstatck:堆栈类,先进后出\n\nhashtable:就比hashmap多了个线程安全\n\nenumeration:枚举,相当于迭代器"]],[21635,21635],[21789,21789]]],[1553999331099,["zyx@DESKTOP-60KJ218",[[-1,21675,"现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。"]],[21675,21721],[21675,21675]]],[1553999333807,["zyx@DESKTOP-60KJ218",[[-1,21668,"因为"]],[21670,21670],[21668,21668]]],[1553999335551,["zyx@DESKTOP-60KJ218",[[-1,21672,","]],[21673,21673],[21672,21672]]],[1553999336649,["zyx@DESKTOP-60KJ218",[[1,21672,"。"]],[21672,21672],[21673,21673]]],[1553999338002,["zyx@DESKTOP-60KJ218",[[-1,21674,"\n"]],[21675,21675],[21674,21674]]],[1553999338998,["zyx@DESKTOP-60KJ218",[[-1,21690,"\n"]],[21691,21691],[21690,21690]]],[1553999341117,["zyx@DESKTOP-60KJ218",[[-1,21717,"\n"]],[21718,21718],[21717,21717]]],[1553999351537,["zyx@DESKTOP-60KJ218",[[1,21635,"* "],[1,21674,"* "],[1,21690,"* "],[1,21717,"* "]],[21635,21738],[21637,21746]]],[1553999362292,["zyx@DESKTOP-60KJ218",[[1,21775,"\n"]],[21774,21774],[21775,21775]]],[1553999363149,["zyx@DESKTOP-60KJ218",[[1,21776,"\n"]],[21774,21774],[21775,21775]]],[1553999574061,["zyx@DESKTOP-60KJ218",[[1,21775,"在Java中,有很多的数据容器,对于这些的操作有很多的共性。Java采用了迭代器来为各种容器提供了公共的操作接口。这样使得对容器的遍历操作与其具体的底层实现相隔离,达到解耦的效果。"]],[21775,21775],[21865,21865]]],[1554006422229,["zyx@DESKTOP-60KJ218",[[1,21867,"\n"]],[21865,21865],[21866,21866]]],[1554006427550,["zyx@DESKTOP-60KJ218",[[1,21866,"itertor"]],[21866,21866],[21873,21873]]],[1554006434936,["zyx@DESKTOP-60KJ218",[[1,21873,"接口中由三个方法:"]],[21873,21873],[21882,21882]]],[1554006435153,["zyx@DESKTOP-60KJ218",[[1,21884,"\n"]],[21882,21882],[21883,21883]]],[1554006457347,["zyx@DESKTOP-60KJ218",[[1,21883,"boolean型的hashNext()"]],[21883,21883],[21902,21902]]],[1554006458149,["zyx@DESKTOP-60KJ218",[[-1,21900,"()"]],[21902,21902],[21900,21900]]],[1554006459457,["zyx@DESKTOP-60KJ218",[[1,21900,"()"]],[21900,21900],[21902,21902]]],[1554006460348,["zyx@DESKTOP-60KJ218",[[1,21904,"\n"]],[21902,21902],[21903,21903]]],[1554006470284,["zyx@DESKTOP-60KJ218",[[1,21903,"E型的next()方法"]],[21903,21903],[21914,21914]]],[1554006472200,["zyx@DESKTOP-60KJ218",[[-1,21912,"方法"]],[21914,21914],[21912,21912]]],[1554006479067,["zyx@DESKTOP-60KJ218",[[1,21912,",返回迭代"]],[21912,21912],[21917,21917]]],[1554006503324,["zyx@DESKTOP-60KJ218",[[1,21902,",如果仍有元素可以迭代返回true"]],[21902,21902],[21919,21919]]],[1554006510345,["zyx@DESKTOP-60KJ218",[[1,21934,"的下一个元素"]],[21934,21934],[21940,21940]]],[1554006515820,["zyx@DESKTOP-60KJ218",[[1,21942,"\n"]],[21940,21940],[21941,21941]]],[1554006547461,["zyx@DESKTOP-60KJ218",[[1,21941,"void型的remove(),从迭代器指向的clloection"]],[21941,21941],[21973,21973]]],[1554006553051,["zyx@DESKTOP-60KJ218",[[-1,21964,"ll"]],[21966,21966],[21964,21964]]],[1554006555064,["zyx@DESKTOP-60KJ218",[[1,21965,"ll"]],[21965,21965],[21967,21967]]],[1554006582043,["zyx@DESKTOP-60KJ218",[[1,21973,"中移除迭代器返回最后一个元素"]],[21973,21973],[21987,21987]]],[1554006600262,["zyx@DESKTOP-60KJ218",[[1,21981,"的"]],[21981,21981],[21982,21982]]],[1554006602034,["zyx@DESKTOP-60KJ218",[[1,21988,"。"]],[21988,21988],[21989,21989]]],[1554006607868,["zyx@DESKTOP-60KJ218",[[1,22021,"\n"]],[22020,22020],[22021,22021]]],[1554006609064,["zyx@DESKTOP-60KJ218",[[1,22022,"\n"]],[22020,22020],[22021,22021]]],[1554006676184,["zyx@DESKTOP-60KJ218",[[1,21990,"void forEachRemaining(Consumer action) ;使用Lambdda表达式的形式输出Iterator中所以的元素。注意该方法其实是间接调用next()方法进行遍历,所以再次是next()方法的时候Iterator中的对象已经被遍历完了。"]],[21990,21990],[22123,22123]]],[1554006683006,["zyx@DESKTOP-60KJ218",[[-1,22130,"Iterator 怎么使用?有什么特点?"]],[22130,22150],[22130,22130]]],[1554006684257,["zyx@DESKTOP-60KJ218",[[1,21771,"Iterator 怎么使用?有什么特点?"]],[21771,21771],[21791,21791]]],[1554006702802,["zyx@DESKTOP-60KJ218",[[-1,18934,"6"]],[18935,18935],[18934,18934]]],[1554006703334,["zyx@DESKTOP-60KJ218",[[1,18934,"7"]],[18934,18934],[18935,18935]]],[1554006710331,["zyx@DESKTOP-60KJ218",[[-1,19389,"7"],[1,19390,"8"]],[19389,19390],[19390,19390]]],[1554006714052,["zyx@DESKTOP-60KJ218",[[-1,20043,"8"],[1,20044,"9"]],[20043,20044],[20044,20044]]],[1554006717857,["zyx@DESKTOP-60KJ218",[[-1,20471,"9"],[1,20472,"1"]],[20471,20472],[20472,20472]]],[1554006718071,["zyx@DESKTOP-60KJ218",[[1,20472,"0"]],[20472,20472],[20473,20473]]],[1554006721578,["zyx@DESKTOP-60KJ218",[[-1,21003,"0"],[1,21004,"1"]],[21003,21004],[21004,21004]]],[1554006738892,["zyx@DESKTOP-60KJ218",[[-1,21050,"表态"]],[21052,21052],[21050,21050]]],[1554006740943,["zyx@DESKTOP-60KJ218",[[1,21050,"静态"]],[21050,21050],[21052,21052]]],[1554006760386,["zyx@DESKTOP-60KJ218",[[-1,22145,"**Q15.**"]],[22145,22153],[22145,22145]]],[1554006768013,["zyx@DESKTOP-60KJ218",[[-1,21897,"由三个"]],[21900,21900],[21897,21897]]],[1554006770547,["zyx@DESKTOP-60KJ218",[[1,21897,"常用的"]],[21897,21897],[21900,21900]]],[1554006774250,["zyx@DESKTOP-60KJ218",[[1,21887,"\n"]],[21886,21886],[21887,21887]]],[1554006802957,["zyx@DESKTOP-60KJ218",[[1,21888,"\n"]],[21887,21887],[21888,21888]]],[1554006803119,["zyx@DESKTOP-60KJ218",[[1,21889,"\n"]],[21888,21888],[21889,21889]]],[1554006804190,["zyx@DESKTOP-60KJ218",[[1,21888,"Iterator遍历集合元素有以下几个特点:\n\n Iterator遍历集合元素的过程中不允许线程对集合元素进行修改,否则会抛出ConcurrentModificationEception的异常。\n Iterator遍历集合元素的过程中可以通过remove方法来移除集合中的元素。\n Iterator必须依附某个Collection对象而存在,Iterator本身不具有装载数据对象的功能。\n Iterator.remove方法删除的是上一次Iterator.next()方法返回的对象。\n 强调以下next()方法,该方法通过游标指向的形式返回Iterator下一个元素。\n--------------------- \n作者:喜爱兰兰 \n来源:CSDN \n原文:https://blog.csdn.net/qq_20916555/article/details/51292063 \n版权声明:本文为博主原创文章,转载请附上博文链接!"]],[21888,21888],[22320,22320]]],[1554006810180,["zyx@DESKTOP-60KJ218",[[-1,22191,"--------------------- \n作者:喜爱兰兰 \n来源:CSDN \n原文:https://blog.csdn.net/qq_20916555/article/details/51292063 \n版权声明:本文为博主原创文章,转载请附上博文链接!"]],[22191,22320],[22191,22191]]],[1554006811096,["zyx@DESKTOP-60KJ218",[[-1,22192,"\n"]],[22191,22191],[22190,22190]]],[1554006831815,["zyx@DESKTOP-60KJ218",[[-1,21912," Iterator遍历集合元素的过程中不允许线程对集合元素进行修改,否则会抛出ConcurrentModificationEception的异常。\n Iterator遍历集合元素的过程中可以通过remove方法来移除集合中的元素。\n Iterator必须依附某个Collection对象而存在,Iterator本身不具有装载数据对象的功能。\n Iterator.remove方法删除的是上一次Iterator.next()方法返回的对象。\n 强调以下next()方法,该方法通过游标指向的形式返回Iterator下一个元素。"]],[21912,22190],[21912,21912]]],[1554006833723,["zyx@DESKTOP-60KJ218",[[-1,21913,"\n"]],[21912,21912],[21911,21911]]],[1554006835164,["zyx@DESKTOP-60KJ218",[[-1,21912,"\n"]],[21912,21912],[21911,21911]]],[1554006854168,["zyx@DESKTOP-60KJ218",[[1,21911," Iterator遍历集合元素的过程中不允许线程对集合元素进行修改,否则会抛出ConcurrentModificationEception的异常。\n Iterator遍历集合元素的过程中可以通过remove方法来移除集合中的元素。\n Iterator必须依附某个Collection对象而存在,Iterator本身不具有装载数据对象的功能。\n Iterator.remove方法删除的是上一次Iterator.next()方法返回的对象。\n 强调以下next()方法,该方法通过游标指向的形式返回Iterator下一个元素。"]],[21911,21911],[22189,22189]]],[1554006859932,["zyx@DESKTOP-60KJ218",[[-1,21911," "]],[21916,21916],[21911,21911]]],[1554006864398,["zyx@DESKTOP-60KJ218",[[-1,21984," "]],[21988,21988],[21984,21984]]],[1554006868984,["zyx@DESKTOP-60KJ218",[[-1,22025," "]],[22029,22029],[22025,22025]]],[1554006873289,["zyx@DESKTOP-60KJ218",[[-1,22079," "]],[22083,22083],[22079,22079]]],[1554006878126,["zyx@DESKTOP-60KJ218",[[-1,22127," "]],[22131,22131],[22127,22127]]],[1554006884209,["zyx@DESKTOP-60KJ218",[[1,22169,"\n"]],[22168,22168],[22169,22169]]],[1554006889745,["zyx@DESKTOP-60KJ218",[[1,21911,"* "],[1,21984,"* "],[1,22025,"* "],[1,22079,"* "],[1,22127,"* "]],[21911,22168],[21913,22178]]],[1554006896777,["zyx@DESKTOP-60KJ218",[[1,21888,"**"],[1,21910,"**"]],[21888,21910],[21888,21914]]],[1554006897301,["zyx@DESKTOP-60KJ218",[[1,21888,"_"],[1,21914,"_"]],[21888,21914],[21888,21916]]],[1554006903804,["zyx@DESKTOP-60KJ218",[[1,22186,"_"],[1,22202,"_"]],[22186,22202],[22186,22204]]],[1554006904387,["zyx@DESKTOP-60KJ218",[[1,22186,"**"],[1,22204,"**"]],[22186,22204],[22186,22208]]],[1554006924081,["zyx@DESKTOP-60KJ218",[[1,22209,"* "],[1,22246,"* "],[1,22267,"* "],[1,22316,"* "]],[22209,22449],[22211,22457]]],[1554006938457,["zyx@DESKTOP-60KJ218",[[-1,22461,"\n"]],[22461,22461],[22460,22460]]],[1554006938759,["zyx@DESKTOP-60KJ218",[[-1,22460,"\n"]],[22460,22460],[22459,22459]]],[1554006940239,["zyx@DESKTOP-60KJ218",[[-1,22459,"\n"]],[22459,22459],[22458,22458]]],[1554006944822,["zyx@DESKTOP-60KJ218",[[-1,22463,"6"]],[22464,22464],[22463,22463]]],[1554006945783,["zyx@DESKTOP-60KJ218",[[1,22463,"5"]],[22463,22463],[22464,22464]]],[1554006948283,["zyx@DESKTOP-60KJ218",[[-1,22503,"7"]],[22504,22504],[22503,22503]]],[1554006949262,["zyx@DESKTOP-60KJ218",[[1,22503,"6"]],[22503,22503],[22504,22504]]],[1554006951792,["zyx@DESKTOP-60KJ218",[[1,22499,"\n"]],[22498,22498],[22499,22499]]],[1554006953370,["zyx@DESKTOP-60KJ218",[[1,22500,"\n"]],[22498,22498],[22499,22499]]],[1554007340104,["zyx@DESKTOP-60KJ218",[[1,22499,"1\\. ListIterator有add()方法,可以向List中添加对象,而Iterator不能\n\n2\\. ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。\n\n3\\. ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。\n\n4\\. 都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。"]],[22499,22499],[22822,22822]]],[1554007342097,["zyx@DESKTOP-60KJ218",[[1,22824,"\n"]],[22822,22822],[22823,22823]]],[1554007344380,["zyx@DESKTOP-60KJ218",[[-1,22824,"\n"]],[22823,22823],[22822,22822]]],[1554007346874,["zyx@DESKTOP-60KJ218",[[1,22848,"\n"]],[22847,22847],[22848,22848]]],[1554007348028,["zyx@DESKTOP-60KJ218",[[1,22849,"\n"]],[22848,22848],[22849,22849]]],[1554007589730,["zyx@DESKTOP-60KJ218",[[-1,22223,"h"]],[22224,22224],[22223,22223]]],[1554007629182,["zyx@DESKTOP-60KJ218",[[1,22847,"```java\nCollections.unmodifiableList(List)\nCollections.unmodifiableMap(Map)\nCollections.unmodifiableSet(Set)\n```"]],[22847,22847],[22961,22961]]],[1554007655192,["zyx@DESKTOP-60KJ218",[[1,22960,"以上返回的集合对象都是不可修改的,调用修改方法会抛出异常UnsupportedOperationException,使用这种方法返回集合的一个 只读视图"]],[22960,22960],[23036,23036]]],[1554007657017,["zyx@DESKTOP-60KJ218",[[-1,23031," "],[1,23032," "],[1,23036,"。"]],[23036,23036],[23037,23037]]],[1554007661709,["zyx@DESKTOP-60KJ218",[[-1,23031," "]],[23032,23032],[23031,23031]]],[1554007695569,["zyx@DESKTOP-60KJ218",[[1,23037,"\n"]],[23036,23036],[23037,23037]]],[1554009268524,["zyx@DESKTOP-60KJ218",[[1,23071,"\n"]],[23070,23070],[23071,23071]]],[1554009268713,["zyx@DESKTOP-60KJ218",[[1,23072,"\n"]],[23071,23071],[23072,23072]]],[1554009270823,["zyx@DESKTOP-60KJ218",[[1,23091,"\n"]],[23090,23090],[23091,23091]]],[1554009270994,["zyx@DESKTOP-60KJ218",[[1,23092,"\n"]],[23091,23091],[23092,23092]]],[1554009272520,["zyx@DESKTOP-60KJ218",[[1,23110,"\n"]],[23109,23109],[23110,23110]]],[1554009272679,["zyx@DESKTOP-60KJ218",[[1,23111,"\n"]],[23110,23110],[23111,23111]]],[1554009274401,["zyx@DESKTOP-60KJ218",[[1,23132,"\n"]],[23131,23131],[23132,23132]]],[1554009274558,["zyx@DESKTOP-60KJ218",[[1,23133,"\n"]],[23132,23132],[23133,23133]]],[1554009276105,["zyx@DESKTOP-60KJ218",[[1,23173,"\n"]],[23172,23172],[23173,23173]]],[1554009276273,["zyx@DESKTOP-60KJ218",[[1,23174,"\n"]],[23173,23173],[23174,23174]]],[1554009278151,["zyx@DESKTOP-60KJ218",[[1,23192,"\n"]],[23191,23191],[23192,23192]]],[1554009278306,["zyx@DESKTOP-60KJ218",[[1,23193,"\n"]],[23192,23192],[23193,23193]]],[1554009280475,["zyx@DESKTOP-60KJ218",[[1,23226,"\n"]],[23225,23225],[23226,23226]]],[1554009280635,["zyx@DESKTOP-60KJ218",[[1,23227,"\n"]],[23226,23226],[23227,23227]]],[1554009282565,["zyx@DESKTOP-60KJ218",[[1,23264,"\n"]],[23263,23263],[23264,23264]]],[1554009282721,["zyx@DESKTOP-60KJ218",[[1,23265,"\n"]],[23264,23264],[23265,23265]]],[1554009284700,["zyx@DESKTOP-60KJ218",[[1,23299,"\n"]],[23298,23298],[23299,23299]]],[1554009284865,["zyx@DESKTOP-60KJ218",[[1,23300,"\n"]],[23299,23299],[23300,23300]]],[1554009286446,["zyx@DESKTOP-60KJ218",[[1,23323,"\n"]],[23322,23322],[23323,23323]]],[1554009286614,["zyx@DESKTOP-60KJ218",[[1,23324,"\n"]],[23323,23323],[23324,23324]]],[1554009288495,["zyx@DESKTOP-60KJ218",[[1,23345,"\n"]],[23344,23344],[23345,23345]]],[1554009288656,["zyx@DESKTOP-60KJ218",[[1,23346,"\n"]],[23345,23345],[23346,23346]]],[1554009291711,["zyx@DESKTOP-60KJ218",[[1,23389,"\n"]],[23388,23388],[23389,23389]]],[1554009291872,["zyx@DESKTOP-60KJ218",[[1,23390,"\n"]],[23389,23389],[23390,23390]]],[1554009293771,["zyx@DESKTOP-60KJ218",[[1,23424,"\n"]],[23423,23423],[23424,23424]]],[1554009293934,["zyx@DESKTOP-60KJ218",[[1,23425,"\n"]],[23424,23424],[23425,23425]]],[1554009295778,["zyx@DESKTOP-60KJ218",[[1,23449,"\n"]],[23448,23448],[23449,23449]]],[1554009295936,["zyx@DESKTOP-60KJ218",[[1,23450,"\n"]],[23449,23449],[23450,23450]]],[1554009297596,["zyx@DESKTOP-60KJ218",[[1,23467,"\n"]],[23466,23466],[23467,23467]]],[1554009297763,["zyx@DESKTOP-60KJ218",[[1,23468,"\n"]],[23467,23467],[23468,23468]]],[1554009299582,["zyx@DESKTOP-60KJ218",[[1,23486,"\n"]],[23485,23485],[23486,23486]]],[1554009299740,["zyx@DESKTOP-60KJ218",[[1,23487,"\n"]],[23486,23486],[23487,23487]]],[1554009301435,["zyx@DESKTOP-60KJ218",[[1,23522,"\n"]],[23521,23521],[23522,23522]]],[1554009301616,["zyx@DESKTOP-60KJ218",[[1,23523,"\n"]],[23522,23522],[23523,23523]]],[1554009303278,["zyx@DESKTOP-60KJ218",[[1,23558,"\n"]],[23557,23557],[23558,23558]]],[1554009303436,["zyx@DESKTOP-60KJ218",[[1,23559,"\n"]],[23558,23558],[23559,23559]]],[1554009305248,["zyx@DESKTOP-60KJ218",[[1,23601,"\n"]],[23600,23600],[23601,23601]]],[1554009305408,["zyx@DESKTOP-60KJ218",[[1,23602,"\n"]],[23601,23601],[23602,23602]]],[1554009306932,["zyx@DESKTOP-60KJ218",[[1,23639,"\n"]],[23638,23638],[23639,23639]]],[1554009307103,["zyx@DESKTOP-60KJ218",[[1,23640,"\n"]],[23639,23639],[23640,23640]]],[1554009310444,["zyx@DESKTOP-60KJ218",[[1,23686,"\n"]],[23685,23685],[23686,23686]]],[1554009310615,["zyx@DESKTOP-60KJ218",[[1,23687,"\n"]],[23686,23686],[23687,23687]]],[1554009312684,["zyx@DESKTOP-60KJ218",[[1,23713,"\n"]],[23712,23712],[23713,23713]]],[1554009312847,["zyx@DESKTOP-60KJ218",[[1,23714,"\n"]],[23713,23713],[23714,23714]]],[1554009315239,["zyx@DESKTOP-60KJ218",[[1,23743,"\n"]],[23742,23742],[23743,23743]]],[1554009315402,["zyx@DESKTOP-60KJ218",[[1,23744,"\n"]],[23743,23743],[23744,23744]]],[1554009316959,["zyx@DESKTOP-60KJ218",[[1,23778,"\n"]],[23777,23777],[23778,23778]]],[1554009317119,["zyx@DESKTOP-60KJ218",[[1,23779,"\n"]],[23778,23778],[23779,23779]]],[1554009318585,["zyx@DESKTOP-60KJ218",[[1,23803,"\n"]],[23802,23802],[23803,23803]]],[1554009318764,["zyx@DESKTOP-60KJ218",[[1,23804,"\n"]],[23803,23803],[23804,23804]]],[1554009320389,["zyx@DESKTOP-60KJ218",[[1,23823,"\n"]],[23822,23822],[23823,23823]]],[1554009320565,["zyx@DESKTOP-60KJ218",[[1,23824,"\n"]],[23823,23823],[23824,23824]]],[1554009323995,["zyx@DESKTOP-60KJ218",[[1,23866,"\n"]],[23865,23865],[23866,23866]]],[1554009324169,["zyx@DESKTOP-60KJ218",[[1,23867,"\n"]],[23866,23866],[23867,23867]]],[1554009326173,["zyx@DESKTOP-60KJ218",[[1,23906,"\n"]],[23905,23905],[23906,23906]]],[1554009326339,["zyx@DESKTOP-60KJ218",[[1,23907,"\n"]],[23906,23906],[23907,23907]]],[1554009327770,["zyx@DESKTOP-60KJ218",[[1,23945,"\n"]],[23944,23944],[23945,23945]]],[1554009327939,["zyx@DESKTOP-60KJ218",[[1,23946,"\n"]],[23945,23945],[23946,23946]]],[1554009329910,["zyx@DESKTOP-60KJ218",[[1,24010,"\n"]],[24009,24009],[24010,24010]]],[1554009330074,["zyx@DESKTOP-60KJ218",[[1,24011,"\n"]],[24010,24010],[24011,24011]]],[1554009331676,["zyx@DESKTOP-60KJ218",[[1,24031,"\n"]],[24030,24030],[24031,24031]]],[1554009331839,["zyx@DESKTOP-60KJ218",[[1,24032,"\n"]],[24031,24031],[24032,24032]]],[1554009334055,["zyx@DESKTOP-60KJ218",[[1,24066,"\n"]],[24065,24065],[24066,24066]]],[1554009334219,["zyx@DESKTOP-60KJ218",[[1,24067,"\n"]],[24066,24066],[24067,24067]]],[1554009335709,["zyx@DESKTOP-60KJ218",[[1,24086,"\n"]],[24085,24085],[24086,24086]]],[1554009335886,["zyx@DESKTOP-60KJ218",[[1,24087,"\n"]],[24086,24086],[24087,24087]]],[1554009337117,["zyx@DESKTOP-60KJ218",[[1,24088,"\n"]],[24088,24088],[24089,24089]]],[1554009337275,["zyx@DESKTOP-60KJ218",[[1,24089,"\n"]],[24089,24089],[24090,24090]]],[1554009338725,["zyx@DESKTOP-60KJ218",[[-1,24089,"\n"]],[24090,24090],[24089,24089]]],[1554009339131,["zyx@DESKTOP-60KJ218",[[-1,24088,"\n"]],[24089,24089],[24088,24088]]],[1554009339369,["zyx@DESKTOP-60KJ218",[[-1,24087,"\n"]],[24088,24088],[24087,24087]]],[1554009339711,["zyx@DESKTOP-60KJ218",[[-1,24086,"\n"]],[24087,24087],[24086,24086]]],[1554009341341,["zyx@DESKTOP-60KJ218",[[1,24086,"\n"]],[24085,24085],[24086,24086]]],[1554009342383,["zyx@DESKTOP-60KJ218",[[1,24109,"\n"]],[24108,24108],[24109,24109]]],[1554009342557,["zyx@DESKTOP-60KJ218",[[1,24110,"\n"]],[24109,24109],[24110,24110]]]],null,"zyx@DESKTOP-60KJ218"]]}