guyanqing 1 lună în urmă
comite
79b7af47c5
100 a modificat fișierele cu 3372 adăugiri și 0 ștergeri
  1. 29 0
      .gitignore
  2. 8 0
      .idea/.gitignore
  3. 8 0
      .idea/compiler.xml
  4. 11 0
      .idea/libraries/commons_io_2_18_0.xml
  5. 9 0
      .idea/libraries/lombok_1_18_30.xml
  6. 9 0
      .idea/libraries/lombok_1_18_30__2_.xml
  7. 5 0
      .idea/misc.xml
  8. 8 0
      .idea/modules.xml
  9. 124 0
      .idea/uiDesigner.xml
  10. 6 0
      .idea/vcs.xml
  11. 14 0
      Java2608.iml
  12. BIN
      lib/commons-io-2.18.0.jar
  13. BIN
      lib/lombok-1.18.30.jar
  14. 227 0
      src/main/java/com/sf/part01/Demo.java
  15. 97 0
      src/main/java/com/sf/part02/Demo.java
  16. 160 0
      src/main/java/com/sf/part02/Demo1.java
  17. 126 0
      src/main/java/com/sf/part03/Demo.java
  18. 92 0
      src/main/java/com/sf/part04/ArrayDemo.java
  19. 128 0
      src/main/java/com/sf/part04/ArrayDemo2.java
  20. 14 0
      src/main/java/com/sf/part04/ArrayDemo4.java
  21. 106 0
      src/main/java/com/sf/part04/ArraysDemo3.java
  22. 24 0
      src/main/java/com/sf/part05/oop_01/Animal.java
  23. 16 0
      src/main/java/com/sf/part05/oop_01/AnimalTest.java
  24. 18 0
      src/main/java/com/sf/part05/oop_01/BSX.java
  25. 29 0
      src/main/java/com/sf/part05/oop_01/Car.java
  26. 31 0
      src/main/java/com/sf/part05/oop_01/CarH.java
  27. 23 0
      src/main/java/com/sf/part05/oop_01/CarHTest.java
  28. 21 0
      src/main/java/com/sf/part05/oop_01/CarTest.java
  29. 19 0
      src/main/java/com/sf/part05/oop_01/DP.java
  30. 21 0
      src/main/java/com/sf/part05/oop_01/FDJ.java
  31. 47 0
      src/main/java/com/sf/part05/oop_01/Person.java
  32. 16 0
      src/main/java/com/sf/part05/oop_01/PersonTest1.java
  33. 30 0
      src/main/java/com/sf/part05/oop_01/Phone.java
  34. 63 0
      src/main/java/com/sf/part05/oop_01/TestDemo.java
  35. 28 0
      src/main/java/com/sf/part05/oop_02/Car.java
  36. 27 0
      src/main/java/com/sf/part05/oop_02/CarTest.java
  37. 20 0
      src/main/java/com/sf/part05/oop_02/Demo.java
  38. 50 0
      src/main/java/com/sf/part05/oop_02/Person.java
  39. 10 0
      src/main/java/com/sf/part05/oop_02/PersonTest.java
  40. 19 0
      src/main/java/com/sf/part05/oop_02/Student.java
  41. 39 0
      src/main/java/com/sf/part05/oop_02/StudentTest.java
  42. 25 0
      src/main/java/com/sf/part05/oop_03/Animal.java
  43. 14 0
      src/main/java/com/sf/part05/oop_03/AnimalTest.java
  44. 33 0
      src/main/java/com/sf/part05/oop_03/Book.java
  45. 13 0
      src/main/java/com/sf/part05/oop_03/BookTest.java
  46. 21 0
      src/main/java/com/sf/part05/oop_03/Cat.java
  47. 33 0
      src/main/java/com/sf/part05/oop_03/Demo.java
  48. 8 0
      src/main/java/com/sf/part05/oop_03/Mouse.java
  49. 66 0
      src/main/java/com/sf/part05/oop_03/Person.java
  50. 16 0
      src/main/java/com/sf/part05/oop_03/PersonTest.java
  51. 14 0
      src/main/java/com/sf/part05/oop_03/User.java
  52. 16 0
      src/main/java/com/sf/part05/oop_03/UserManager.java
  53. 8 0
      src/main/java/com/sf/part05/oop_03/UserTest.java
  54. 59 0
      src/main/java/com/sf/part05/oop_04/Demo.java
  55. 12 0
      src/main/java/com/sf/part05/oop_04/FinalClass.java
  56. 9 0
      src/main/java/com/sf/part05/oop_04/FinalClassSon.java
  57. 26 0
      src/main/java/com/sf/part05/oop_04/Parent.java
  58. 41 0
      src/main/java/com/sf/part05/oop_04/Son.java
  59. 32 0
      src/main/java/com/sf/part05/oop_04/Test.java
  60. 36 0
      src/main/java/com/sf/part05/oop_04/User.java
  61. 55 0
      src/main/java/com/sf/part05/oop_05/Animal.java
  62. 18 0
      src/main/java/com/sf/part05/oop_05/Demo.java
  63. 48 0
      src/main/java/com/sf/part05/oop_05/Drink.java
  64. 51 0
      src/main/java/com/sf/part05/oop_05/Student.java
  65. 13 0
      src/main/java/com/sf/part05/oop_06/Apple.java
  66. 30 0
      src/main/java/com/sf/part05/oop_06/Circle.java
  67. 13 0
      src/main/java/com/sf/part05/oop_06/CompareAble.java
  68. 14 0
      src/main/java/com/sf/part05/oop_06/CompareBig.java
  69. 14 0
      src/main/java/com/sf/part05/oop_06/CompareColor.java
  70. 23 0
      src/main/java/com/sf/part05/oop_06/Demo.java
  71. 10 0
      src/main/java/com/sf/part05/oop_06/FightAble.java
  72. 10 0
      src/main/java/com/sf/part05/oop_06/Mage.java
  73. 7 0
      src/main/java/com/sf/part05/oop_06/Person.java
  74. 24 0
      src/main/java/com/sf/part05/oop_06/Player.java
  75. 28 0
      src/main/java/com/sf/part05/oop_06/Rectangle.java
  76. 20 0
      src/main/java/com/sf/part05/oop_06/ShapeInterface.java
  77. 36 0
      src/main/java/com/sf/part05/oop_06/ShapeInterfaceTest.java
  78. 8 0
      src/main/java/com/sf/part05/oop_06/Solder.java
  79. 32 0
      src/main/java/com/sf/part05/oop_06/Student.java
  80. 32 0
      src/main/java/com/sf/part05/oop_06/StudentImpl.java
  81. 10 0
      src/main/java/com/sf/part05/oop_06/StudentTest.java
  82. 11 0
      src/main/java/com/sf/part05/oop_06/TestApple.java
  83. 24 0
      src/main/java/com/sf/part05/oop_06/Triangle.java
  84. 4 0
      src/main/java/com/sf/part05/oop_07/Demo.java
  85. 18 0
      src/main/java/com/sf/part05/oop_07/Employee.java
  86. 50 0
      src/main/java/com/sf/part05/oop_07/EmployeeServiceImpl.java
  87. 75 0
      src/main/java/com/sf/part05/oop_07/EmployeeServiceImplTest.java
  88. 20 0
      src/main/java/com/sf/part05/oop_07/Inner03.java
  89. 11 0
      src/main/java/com/sf/part05/oop_07/MyPredicate.java
  90. 18 0
      src/main/java/com/sf/part05/oop_07/Out01.java
  91. 22 0
      src/main/java/com/sf/part05/oop_07/Out02.java
  92. 10 0
      src/main/java/com/sf/part05/oop_07/Test.java
  93. 32 0
      src/main/java/com/sf/part06/collection_01/Demo.java
  94. 15 0
      src/main/java/com/sf/part06/collection_01/Student.java
  95. 102 0
      src/main/java/com/sf/part06/collection_02/Demo.java
  96. 55 0
      src/main/java/com/sf/part06/collection_03/Demo.java
  97. 27 0
      src/main/java/com/sf/part06/collection_03/Person.java
  98. 13 0
      src/main/java/com/sf/part06/collection_03/User.java
  99. 38 0
      src/main/java/com/sf/part06/map_04/Demo.java
  100. 117 0
      src/main/java/com/sf/part06/map_05/Demo.java

+ 29 - 0
.gitignore

@@ -0,0 +1,29 @@
+### IntelliJ IDEA ###
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store

+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 8 - 0
.idea/compiler.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile default="true" name="Default" enabled="true" />
+    </annotationProcessing>
+  </component>
+</project>

+ 11 - 0
.idea/libraries/commons_io_2_18_0.xml

@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="commons-io-2.18.0">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/lib/commons-io-2.18.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES>
+      <root url="jar://$USER_HOME$/.ideaLibSources/commons-io-2.18.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 9 - 0
.idea/libraries/lombok_1_18_30.xml

@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="lombok-1.18.30">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/lib/lombok-1.18.30.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 9 - 0
.idea/libraries/lombok_1_18_30__2_.xml

@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="lombok-1.18.30 (2)">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/lib/lombok-1.18.30.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 5 - 0
.idea/misc.xml

@@ -0,0 +1,5 @@
+<project version="4">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/Java2608.iml" filepath="$PROJECT_DIR$/Java2608.iml" />
+    </modules>
+  </component>
+</project>

+ 124 - 0
.idea/uiDesigner.xml

@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
+  </component>
+</project>

+ 14 - 0
Java2608.iml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="lombok-1.18.30" level="project" />
+    <orderEntry type="library" name="lombok-1.18.30 (2)" level="project" />
+    <orderEntry type="library" name="commons-io-2.18.0" level="project" />
+  </component>
+</module>

BIN
lib/commons-io-2.18.0.jar


BIN
lib/lombok-1.18.30.jar


+ 227 - 0
src/main/java/com/sf/part01/Demo.java

@@ -0,0 +1,227 @@
+package main.java.com.sf.part01;
+/*
+java中的注释主要分为3种:
+1.单行注释://注释内容
+2.多行注释
+3.文档注释
+ */
+
+// 单行注释  作用:放在单行代码的上面对代码进行解释和说明作用
+
+/*
+  多行注释 作用:放在单一段代码的上面对一段代码进行解释和说明作用
+ */
+
+
+import java.util.Scanner;
+
+/**
+ * 3.文档注释
+ * @author Gu
+ * @version 1.0
+ * 作用:放在整个方法和类的上面,对当前方法的作用和参数进行解释和说明
+ */
+
+/*
+ 1、注释
+ 2、Java的历史:
+    Javad创始人詹姆斯高斯林(崇尚开源) ,初衷微型嵌入式,定时空调,电饭煲,当时所有的硬件厂商没有人合作,闲置,
+    过一段时间,互联哇嘎需要一种轻量级的语句,能够实现数据轻量级传输,并且带有较好的视觉感官,詹姆斯高斯林发现
+    所编写的语言更改以后正适合,sun大会,认可,语言名字,专利 ,OAK,项目小组去团建,爪洼岛,盛产咖啡,Java,
+    图标香一杯热腾腾的咖啡。
+    jdk1.0
+    jdk1.1
+    ...
+    2014 jdk8年 sun被oracle公司收购。
+    ...  部分收费
+    截至到现在jdk26版本  免费
+
+    jdk java开发工具包  java development kit
+
+    3、数据类型:
+    java中的数据类型 主要分为两种:
+    1、基本数据类型:4类8种   1字节 = 8位
+        1.1、整数类型:byte(1字节 -128  127) short(2字节) int(4字节) long(8字节)
+            byte num0 = 10;
+            short num1 = 10;
+            int num2 = 10;
+            long num3 = 10L;
+        1.2、浮点类型:float(4字节-单精度) double(8字节-双精度)
+            单精度和双精度区别:
+                单精度:有效数字位6-7位   12.2311313131414
+                双精度(常用):有效数字位15-16位  12.2311313131414
+            float num4 = 12.3f;
+            double num5 = 12.3;
+        1.3、字符类型:char(2字节)
+        字符和字符串的区别:
+            字符:单引号,只能包含一个字符,并且字符类型是char类型
+            字符串:双引号,可以包含多个字符,并且字符串类型是String类型(引用数据类型)
+            char num6 = 'a';
+            char类型和int类型可以相互转换:
+            a = 97  b = 98  .... z = 122
+            A = 65  B = 66  .... Z = 90
+            acsII码表:规定了字符和数字之间的对应关系
+            全球统一编码 unicode  -- utf-8
+        1.4、布尔类型:boolean(true,false)
+            boolean num7 = true;
+            boolean num8 = false;
+            英语流程控制语句中,主要两种结果,真true或假false
+    2、引用数据类型:类,接口,数组
+
+    3、随机数
+    java通过一行代码随机出来的数
+    Math.random();
+   练习题:  随机出4位小写字母的验证码
+
+    4、输入
+    输入:基于键盘从控制台进行输入内容,加载到内存中。
+    创建从键盘输入的实例对象  Scanner
+    int   num  = 10;
+    Scanner sc = new Scanner(System.in);
+    System.in : 从键盘输入
+    Scanner : 类 里面封装了好多的方法 ,
+    java强类型语言,从键盘上获取输入整型、字符串、浮点型...  都有自己不同的方法
+    从键盘输入后将这个值 直接需要赋值在我们所定义的变量上啊
+
+//  代表是从控制台上获取整数
+    int num = sc.nextInt();  //整型
+    char c = sc.next().charAt(0); //字符型
+
+    输出语句:基于控制台进行输出内容,加载到控制台
+    System.out.println();
+Scanner sc = new Scanner(System.in);
+        System.out.println("在控制台上输入一个整数~");
+        int nextInt = sc.nextInt();
+        System.out.println(nextInt);
+        System.out.println("在控制台上输入一个字符串~");
+        String next = sc.next();
+        System.out.println(next);
+        System.out.println("在控制台上输入一个浮点类型~");
+        double nextDouble = sc.nextDouble();
+        System.out.println(nextDouble);
+
+        异常处理:
+        Exception in thread "main" java.util.InputMismatchException
+	at java.base/java.util.Scanner.throwFor(Scanner.java:939)
+	at java.base/java.util.Scanner.next(Scanner.java:1594)
+	at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
+	at main.java.com.sf.day01.Demo.main(Demo.java:118)
+
+
+练习:
+从键盘输入人的信息  姓名,年龄,性别,身高,体重,爱好,职业,工资,婚姻状况,是否是党员,是否是团员,是否是群众
+
+    5、流程控制语句:
+    分支结构:
+    1、if语句
+
+
+
+
+
+ */
+
+public class Demo {
+    public static void main(String[] args) {
+        Scanner sc = new Scanner(System.in);
+        System.out.println("请输入一个字符:");
+        char c = sc.next().charAt(0);
+        System.out.println(c);
+
+
+    }
+    public static void main5(String[] args) {
+        Scanner sc = new Scanner(System.in);
+        System.out.println("在控制台上输入一个整数~");
+        int nextInt = sc.nextInt();
+        System.out.println(nextInt);
+        System.out.println("在控制台上输入一个字符串~");
+        String next = sc.next();
+        System.out.println(next);
+        System.out.println("在控制台上输入一个浮点类型~");
+        double nextDouble = sc.nextDouble();
+        System.out.println(nextDouble);
+        System.out.println("在控制台上输入一个布尔类型~");
+        boolean b = sc.nextBoolean();
+        System.out.println(b);
+        // 关闭流
+        sc.close();
+    }
+
+
+
+
+    /**
+     * main方法是程序的入口
+     * @param(参数) args
+     */
+    public static void main1(String[] args) {
+        // 获取当前计算机的系统时间,并且从1970年08:00开始计算,知道此刻,返回的毫秒数
+        long l = System.currentTimeMillis();
+        //单行注释
+        System.out.println(l);
+        //12 整型 默认是int
+        byte num  = 12;
+        long num0 = 12L;
+        //  12.3浮点型  默认是double
+        float num1 = 12.3f;
+        float num2 = 12.3F;
+        double num3 = 12.3;
+        double num4 = 12.3;
+    }
+
+    public static void main2(String[] args) {
+        // a  = 97
+        // b  = 98
+        char num = 'a';
+        char num1 = 'b';
+        char num2 = 'A';
+        char num3 = 'B';
+        System.out.println((int)num);
+        System.out.println((int)num1);
+        System.out.println((int)num2);
+        System.out.println((int)num3);
+    }
+
+    public static void main3(String[] args) {
+        // 1、获取随机数[0,1) 最小是0  最大0.999....
+        double num = Math.random();
+        System.out.println(num);
+        // 2、获取随机整数[0,100] 最小是0  最大100
+        // 强转  大转小  自动转换  小转换大
+        int num1 = (int)(Math.random()*101);
+        System.out.println(num1);
+        // 获取随机整数[26,78]
+        //  获取整数 [a,b]  (int)(Math.random()*(b-a+1))+a
+        int num2 = (int)(Math.random()*(78-26+1))+26;
+        System.out.println(num2);
+    }
+
+    public static void main4(String[] args) {
+        //随机出4个小写字母的验证码
+        // a-z  [97 122]
+        // 1、获取随机整数[97,122]
+        int randomNum1 = (int)(Math.random()*(122-97+1))+97;
+        int randomNum2 = (int)(Math.random()*(122-97+1))+97;
+        int randomNum3 = (int)(Math.random()*(122-97+1))+97;
+        int randomNum4 = (int)(Math.random()*(122-97+1))+97;
+        // 2、将整数转换成字符
+        // println  输出一行  输出内容后直接换行
+        // print  所有内容都输出到一行  输出内容后不换行
+        char randomChar1 = (char)randomNum1;
+        char randomChar2 = (char)randomNum2;
+        char randomChar3 = (char)randomNum3;
+        char randomChar4 = (char)randomNum4;
+        System.out.print(randomChar1);
+        System.out.print(randomChar2);
+        System.out.print(randomChar3);
+        System.out.print(randomChar4);
+
+        System.out.println("============");
+        for (int i = 1;i<=4;i++){
+            int randomNum5 = (int)(Math.random()*(122-97+1))+97;
+            char randomChar5 = (char)randomNum5;
+            System.out.print(randomChar5);
+        }
+    }
+}

+ 97 - 0
src/main/java/com/sf/part02/Demo.java

@@ -0,0 +1,97 @@
+package main.java.com.sf.part02;
+
+import java.util.Scanner;
+
+/**
+ * 从控制台输入  Scanner
+ * 从控制台输入 :
+ *      通过键盘从控制台输入数据赋值给变量上
+ *  Scanner类中封装了好多个方法  获取整数的方法  获取字符串的方法..
+ *
+ *  Exception in thread "main" java.util.InputMismatchException
+ * 	at java.base/java.util.Scanner.throwFor(Scanner.java:939)
+ * 	at java.base/java.util.Scanner.next(Scanner.java:1594)
+ * 	at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
+ * 	at main.java.com.sf.day02.Demo.main(Demo.java:21)
+ *
+
+ *
+ *  一、标识符与命名(选择题常考)
+ * 1. 标识符:类、变量、方法名字
+ *    - 允许:字母、数字、下划线`_`、美元符`$`
+ *    - **不能数字开头**,不能用关键字
+ *    - 区分大小写:`Age`和`age`是两个变量
+ * 2. 命名规范(选择题判断对错)
+ *    - 类名:大驼峰 `StudentInfo`
+ *    - 方法、变量:小驼峰 `getMaxValue`
+ *    - 常量:全大写 `MAX_SIZE`
+ * 3. Java 关键字:`public static void class if else for
+ * while switch break continue return true false null`
+ *
+ * 二、8 大基本数据类型
+ *
+ *  类型  字节  取值范围
+ *  byte  1 字节  -128 ~ 127
+ *  short  2 字节  -32768 ~ 32767
+ *  int  4 字节  -2³¹ ~ 2³¹‑1
+ *  long  8 字节  很大;字面量后面**必须加 L/l**
+ *  float  4 字节  字面量加**F/f**
+ *  double  8 字节  小数默认 double
+ *  char  2 字节  存单个字符,支持中文;`char c='中'`
+ *  boolean  没有规定字节  只有`true / false`,不能用 0/1 代替
+ *
+ * 1. `long num = 10000000000;` 报错!整数字面量默认 int,
+ *      超过 int 范围要写`10000000000L`
+ * 2. `float f = 3.14;` 编译报错,小数默认 double → 写成`3.14F`
+ * 3. char 可以存数字:`char c = 65;` 输出是`A`(ASCII),可以参与数学运算
+ * 4. boolean 不能写`if(1)`,Java 条件只能写布尔表达式(C 语言区别,经常考对比)
+ */
+public class Demo {
+    public static void main1(String[] args) {
+        System.out.println("请输入一个整数:");
+        Scanner sc = new Scanner(System.in);
+        int num = sc.nextInt();
+        System.out.println("输入的整数是:"+num);
+        System.out.println("请输入一个字符串:");
+        String str = sc.next();
+        System.out.println("输入的字符串是:"+str);
+        System.out.println("请输入一个浮点数:");
+        double v = sc.nextDouble();
+        System.out.println("输入的浮点数是:"+v);
+        System.out.println("请输入一个布尔值:");
+        boolean b = sc.nextBoolean();
+        System.out.println("输入的布尔值是:"+b);
+        sc.close();
+    }
+
+    public static void main(String[] args) {
+        // 从控制台上输入三个数  分别赋值给num1  num2  num3
+        // 通过if语句判断三个数的大小  从大到小一次输出
+        Scanner sc = new Scanner(System.in);
+        int num1 = sc.nextInt();
+        int num2 = sc.nextInt();
+        int num3 = sc.nextInt();
+        if (num1 > num2 && num1 > num3) {
+            System.out.print("num1 = "+num1 + ",");
+            if (num2 > num3) {
+                System.out.print("num2 = "+num2 + "," + "num3 = "+num3);
+            } else {
+                System.out.print("num3 = "+num3 + ", num2 =" + num2);
+            }
+        } else if (num2 > num1 && num2 > num3) {
+            System.out.print(num2 + ",");
+            if (num1 > num3) {
+                System.out.print(num1 + "," + num3);
+            } else {
+                System.out.print(num3 + "," + num1);
+            }
+        } else {
+            System.out.print(num3 + ",");
+            if (num1 > num2) {
+                System.out.print(num1 + "," + num2);
+            } else {
+                System.out.print(num2 + "," + num1);
+            }
+        }
+    }
+}

+ 160 - 0
src/main/java/com/sf/part02/Demo1.java

@@ -0,0 +1,160 @@
+package main.java.com.sf.part02;
+
+import java.util.Scanner;
+
+/*
+switch…case:
+语法:流程控制语句中的一种
+switch(变量){
+    case 值1:
+        语句1;
+        break;  //终止操作
+    case 值2:
+        语句2;
+        break;
+    default:  // 类似于else
+        语句3;
+
+注意事项:
+1、switch语句中,变量类型只能是byte、short、char、int、枚举、String
+2、case后面跟的是变量可能的值,每个case后面都要跟break,否则会继续往下执行,case穿透问题
+3、default是可选的,可以没有,如果default没有,且没有匹配的case,则不执行任何语句
+
+for循环:
+语法:for(初始化表达式;循环条件表达式;迭代部分){
+  循环体;
+}
+第一部分:初始化表达式:int i = 0;
+第二部分:循环条件表达式:i < 10;
+第三部分:迭代部分:i++
+第四部分:循环体
+for执行顺序:1  -> 2 ->4  - > 3  -> 2 ->4 -> 3 -> 2 -> 4 -> 3 -> 2 -> 4 -> 3 -> 2 -> 4 -> 3 -> 2 -> 4 -> 3 -> 2 -> 4 -> 3 -> 2 -> 4 -> 3 -> 2 -> 4 -> 3 -> 2 -> 4 -> 3 -> 2 -> 4 ->
+
+
+
+while循环:
+语法:while(循环条件表达式){
+    循环体;
+}
+执行顺序:2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 -> 1 -> 2 ->
+}
+
+do{
+循环体
+}while(循环条件表达式);
+
+
+
+
+
+
+ */
+public class Demo1 {
+    public static void main(String[] args) {
+        for (int i = 0; i < 5; i++) {
+            for (int j = 0; j < 6; j++) {
+                System.out.print("*");
+            }
+            System.out.println();
+        }
+
+        for (int i = 0; i < 5; i++) {
+            for (int j = 0; j < i; j++) {
+                System.out.print("*");
+            }
+            System.out.println();
+        }
+    }
+    public static void main6(String[] args) {
+        for (int i  = 0;i<5;i++){
+            for (int j = 0; j < 6; j++) {
+                System.out.println("你好");
+            }
+        }
+    }
+    public static void main5(String[] args) {
+        int sum = 0;
+        int i = 1;
+        do{
+            sum+=i;
+            i++;
+        }while (i<=100);
+    }
+    public static void main4(String[] args) {
+        // 用while循环和 do{}while()循环求1-100之和
+        int sum = 0;
+        int i = 1;
+        while (i <= 100){
+            sum += i;
+            i++;
+        }
+        System.out.println(sum);
+    }
+    public static void main3(String[] args) {
+        //输入两个正整数m和n,求其最大公约数和最小公倍数。
+        Scanner scanner = new Scanner(System.in);
+        System.out.println("请输入正整数m:");
+        int m = scanner.nextInt();
+        System.out.println("请输入正整数n:");
+        int n = scanner.nextInt();
+        // 求最大公约数
+        // 找出两个数的最小值
+//        int min = m < n ? m : n;
+//        int min  = 0;
+//        if(m>n){
+//            min = n;
+//        }else {
+//            min = m;
+//        }
+        // 获取m和n之间的最小值
+        int min = Math.min(m, n);
+        for(int i = min; i >= 1; i--){
+            if(m % i == 0 && n % i == 0){
+                System.out.println("最大公约数是:" + i);
+                break;// 终止循环
+            }
+        }
+
+        // 求最小公倍数
+        // 找出两个数的最大值
+        int max = m > n ? m : n;
+        for (int i = max ;i<= m * n; i++){
+            if(i % m == 0 && i % n == 0){
+                System.out.println("最小公倍数是:" + i);
+                break;// 终止循环
+            }
+
+        }
+
+    }
+    public static void main2(String[] args) {
+        //求1+2+...+100的和
+        int sum = 0;
+        for(int  i =1;i<=100;i++){
+            sum += i; // sum = sum +i;
+        }
+    }
+    public static void main1(String[] args) {
+        String season = "夏天";
+        switch (season){
+            case "spring":
+            case "春天":
+                System.out.println("春天");
+                break;
+            case "summer":
+            case "夏天":
+                System.out.println("夏天");
+                break;
+            case "autumn":
+            case "秋天":
+                System.out.println("秋天");
+                break;
+            case "winter":
+            case "冬天":
+                System.out.println("冬天");
+                break;
+            default:
+                System.out.println("季节错误");
+        }
+    }
+}

+ 126 - 0
src/main/java/com/sf/part03/Demo.java

@@ -0,0 +1,126 @@
+package main.java.com.sf.part03;
+
+import java.util.Scanner;
+
+public class Demo {
+    public static void main1(String[] args) {
+        for (int i =1; i <100;i++ ){
+                if(i % 2==0){
+                    System.out.print(i+", ");
+                }
+                if(i % 10 ==0){
+                    System.out.println();
+                }
+        }
+    }
+
+    public static void main2(String[] args) {
+        // 世界最高山峰是珠穆朗玛峰,它的高度是8848.86米,假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折
+        //叠多少次,可以折成珠穆朗玛峰的高度?
+        int high = 8848860;
+        double page = 0.1;
+        int count = 0;
+//        while (page <= high){
+//            page *= 2;
+//            count++;
+//        }
+//        System.out.println("折叠次数为:"+count);
+
+
+        for (double k = 0.1;k<=high;k *= 2){
+            count++;
+        }
+        System.out.println(count);
+    }
+
+    public static void main(String[] args) {
+        // 案例需求:假设从2000年1月1日开始三天打鱼,两天晒网,从键盘输入今天的日期年、月、日,显示今天是打鱼还
+        //是晒网?
+        // 思路:1.定义一个变量count,用来记录打鱼和晒网的天数
+        //  用天数%5   余数 = 1  2   3  是打鱼  否则筛网
+        Scanner sc = new Scanner(System.in);
+        System.out.println("请输入日期:");
+        int year;
+        while (true){
+            System.out.println("请输入年份:");
+            year = sc.nextInt();
+            if(year >= 2000){
+                break;
+            }else {
+                System.out.println("请输入正确的年份~");
+            }
+        }
+
+        int month;
+        while (true){
+            System.out.println("请输入月份:");
+            month = sc.nextInt();
+            if(month>=1 && month <=12){
+                break;
+            }else {
+                System.out.println("请输入正确的月份~");
+            }
+        }
+
+        // 判断这个month有多少天
+        int totalDaysOfMonth;
+        if(month == 2) {
+            if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { // 闰年
+                totalDaysOfMonth = 29;
+            } else {
+                totalDaysOfMonth = 28;
+            }
+        }else if(month == 4 || month == 6 || month == 9 || month == 11){// 4 6 9 11
+            totalDaysOfMonth = 30;
+        }else {
+            totalDaysOfMonth = 31;
+        }
+
+        // day
+        int day;
+        while (true){
+            System.out.println("请输入日期:");
+            day = sc.nextInt();
+            if(day>=1 && day <=totalDaysOfMonth){
+                break;
+            }else
+                System.out.println("请输入正确的日期~");
+        }
+
+        // 计算 2000年1月1日到输入日期的总天数
+        int days = 0;
+        for (int i = 2000; i < year; i++) {
+            if((i % 4 == 0 && i % 100 != 0) || i % 400 == 0){
+                days += 366;
+            }else {
+                days+=365;
+            }
+        }
+
+        for (int i = 1; i < month; i++) {
+            if (i == 2) {
+                if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
+                    days += 29;
+                } else {
+                    days += 28;
+                }
+            } else if (i == 4 || i == 6 || i == 9 || i == 11) {
+                days += 30;
+            } else {
+                days += 31;
+            }
+        }
+
+        days += day;
+
+        System.out.println("从2020年到输入的日期总共有"+days+"天");
+
+        int count = days % 5;
+        if(count == 1 || count == 2 || count == 3){
+            System.out.println("打鱼");
+        }else {
+            System.out.println("晒网");
+        }
+
+    }
+}

+ 92 - 0
src/main/java/com/sf/part04/ArrayDemo.java

@@ -0,0 +1,92 @@
+package main.java.com.sf.part04;
+
+import java.util.Arrays;
+
+/*
+数组笔记:
+数组:是多个相同数据类型数据的集合,
+    并且按照一定的顺序进行排列,并且采用一个名字进行命名,
+    并且对每个数据采用编号的形式进行控制。
+软件1班: 学号
+ 数组中的概念:
+    数组名:当前数组的名字
+    元素:数组中的每一个数据,都称之为元素
+    下标(索引):就是管理数组中每个元素的编号  从0开始
+    长度:数组中元素的个数
+    下标和长度的关系:
+        下标范围:0 ~ length-1
+
+ 数组的特点:
+
+ 数组本身是`引用数据类型`,而数组中的元素可以是`任何数据类型`,包括基本数据类型和引用数据类型。
+ 创建数组对象会在内存中开辟一整块`连续的空间`。占据的空间的大小,取决于数组的长度和数组中元素的类型。
+ 数组中的元素在内存中是依次紧密排列的,有序的。
+ 数组,一旦初始化完成,其长度就是确定的。数组的`长度一旦确定,就不能修改`。
+ 我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。
+ 数组名中引用的是这块连续空间的首地址。
+
+
+   数组的定义和初始化:
+    声明:int num;
+    初始化:int num = 19;
+ 数组的定义:
+    int[]  arr;   声明数组
+    数据类型[] 数组名;
+    int[] arr = new int[]{1,2,3,4,5};
+    int[] arr = {1,2,3,4,5}; // 简化版本
+
+
+ArrayIndexOutOfBoundsException: 数组下标越界异常
+ */
+public class ArrayDemo {
+    public static void main(String[] args) {
+        int num = 10;
+        num = num + 1;
+        num += 1;
+        System.out.println(num);
+
+    }
+    public static void main3(String[] args) {
+        int[] arr = {12, 1, 23, 464, 1, 146, 54, 464, 343, 43, 33};
+        int max = arr[0];  // 假设我们第一个元素就是最大值
+        String index = "";  // 记录最大值的下标
+        for (int i = 1; i < arr.length; i++) {
+            if(arr[i] > max){
+                max = arr[i];
+                index = i + ", ";
+            }else if (arr[i] == max) {
+                index += i + ", ";
+            }
+        }
+        System.out.println("最大值是:" + max + " 下标是:" + index);
+    }
+    // 找最值大及其所有最大值的下标
+    public static void main2(String[] args) {
+        int[] arr = {12, 1, 23, 464, 1, 146, 54, 464, 343, 43, 33};
+        int max = arr[0];  // 假设我们第一个元素就是最大值
+        int index = 0;  // 记录最大值的下标
+        for (int i = 1; i < arr.length; i++) {
+            if (arr[i] > max) {
+                max = arr[i];
+                index = i;
+            }
+        }
+        System.out.println("最大值是:" + max + " 下标是:" + index);
+    }
+
+        public static void main1 (String[]args){
+            int[] arr = {1, 2, 3, 4, 5};
+            System.out.println(arr[0]);
+            arr[3] = 10;
+            System.out.println(arr[1]);
+            System.out.println(arr[2]);
+            System.out.println(arr[3]);
+            System.out.println(arr[4]);
+            // 数组的长度
+            System.out.println(arr.length);
+//        System.out.println(arr[5]);
+//        因为数组中没有重写toString方法,所以打印数组名的时候,打印的是数组在内存中的地址
+            System.out.println(arr);
+            System.out.println(Arrays.toString(arr));
+        }
+}

+ 128 - 0
src/main/java/com/sf/part04/ArrayDemo2.java

@@ -0,0 +1,128 @@
+package main.java.com.sf.part04;
+
+import java.util.Arrays;
+
+/*
+数组的动态初始化:
+    复习:数组
+    复习练习题:静态方式创建数组
+    数组的动态初始化 :直接指定数组的长度,可以随时的赋值
+    语法:数据类型[] 数组名 = new 数据类型[数组长度];
+ */
+public class ArrayDemo2 {
+    public static void main(String[] args) {
+        String[][] strs = new String[3][4];
+        System.out.println(strs);  // 二维数组的首地址
+        System.out.println(strs[0]);  // 二维数组中第一个一维数组的首地址
+        System.out.println(Arrays.toString(strs[0]));  // 二维数组中第一个一维数组中的元素
+    }
+    public static void main5(String[] args) {
+        String[][] grade = new String[][]{
+                {"小舞","唐三","胖子"},{"戴沐白","朱竹清"},{"唐晨","唐浩","唐四","唐五"}
+        };
+        for(int i = 0;i<grade.length;i++){
+            for(int j = 0;j<grade[i].length;j++)
+                System.out.println(grade[i][j]);
+        }
+
+    }
+    public static void biji(String[] args) {
+        /**
+         * 二维数组:数组的数组
+         * 一维数组中的元素可以任意(基本数据类型和引用数据类型)数据类型
+         * 引用数据类型:数组  类  接口
+         * 二维数组 中的元素是  一维数组
+         * 二维数组的定义:
+         *  静态初始化:
+         *  int[][] arr = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
+         *  二维数组的数组名:arr
+         *  二维数组长度 : 3
+         *  二维数组中每个一维数组的长度: 3
+         *  获取 数组3:arr[0][2]
+         *  赋值 将数值3 赋值为 33  arr[0][2] = 33;
+         *  遍历:一维数组采用的是单层循环
+         *  二维数组 采用双层循环
+         *
+         *  动态初始化:
+         *  int[][] arr = new int[m][n];
+         *  m:二维数组的长度
+         *  n:二维数组中(每个元素)每个一维数组的长度
+         */
+    }
+    public static void main4(String[] args) {
+        /*
+        问题的排查:
+        1、数组下标越界异常 ArrayIndexOutOfBoundsException     数组中不存在该下标(下标值大于等于数组的长度)
+        2、空指针异常 NullPointerException  数组没有指向任何对象  指向null
+         */
+        int[] ints = new int[5];
+        ints[0] = 10;
+        ints[1] = 20;
+        ints[2] = 30;
+        ints[3] = 40;
+        ints[4] = 50;
+        System.out.println(ints[0]);
+        System.out.println(ints);
+        ints = null;
+        System.out.println(ints);
+        System.out.println(ints[0]);
+    }
+    public static void main3(String[] args) {
+        int[] arr = new int[5];
+        // java   System.out.println(arr);   输出数组在内存中所存储的地址
+        // c语言   printf("%p",arr);
+        // c语言   printf("%d",*arr);  数组中的第一个元素 /  arr[0]
+        System.out.println(arr);
+    }
+    public static void main2(String[] args) {
+        // 问题:数组中有元素么?
+        // String 是一个类  属于引用数据类型
+        // 引用数据类型 默认值是null
+        String[] strs = new  String[5];
+        // 直接针对下标进行赋值
+        // 还可以以循环的形式进行赋值   for
+        strs[0] = "abc";
+        strs[4] = "bcd";
+        // 循环方式  for增强  循环中的一种  主要用于循环数组或者集合
+        // strs : 要被循环的数组或者是集合
+        // : 固定语法结构
+        // String str : strs  : 临时变量  用来接收数组中的每个元素
+        // String  数组中每个元素的数据类型
+        for (String str : strs) {
+            System.out.println(str);
+        }
+        strs[0] = "abc";
+        System.out.println(strs[0]);
+        System.out.println(strs[2]);
+
+        // int 整型  属于基本数据类型   默认值是0
+        // long 长整型  属于基本数据类型  默认值是0
+        // byte   short  默认值是0
+        //  浮点型的默认值 是0.0
+        // char  默认值是 \u0000  通常用String 来表示 默认值是null
+        // boolean 默认值是false
+        int[] arr =new int[3];
+        System.out.println(arr[0]);
+
+    }
+    public static void main1(String[] args) {
+        String[] strs = new String[]{"abc","bcd","cde"};
+//        String[] strs = {"abc","bcd","cde"};  简化方式
+        for (int i =0;i<strs.length;i++){
+            System.out.println(strs[i]);
+        }
+        // 直接打印数组
+        String string = Arrays.toString(strs);
+        System.out.println(string);
+        /**
+         * 分析   Arrays.toString(strs)  底层实现原理
+         * [abc, bcd, cde]
+         * 1、参数的校验
+         * 2、拼接 [
+         * 3、循环遍历数组中的每个元素
+         * 4、第四步骤中的元素不是最后一个元素,需要拼接逗号
+         * 5、知道是最后一个元素,拼接元素,在拼接]
+         */
+
+    }
+}

+ 14 - 0
src/main/java/com/sf/part04/ArrayDemo4.java

@@ -0,0 +1,14 @@
+package main.java.com.sf.part04;
+
+import java.util.Scanner;
+
+public class ArrayDemo4 {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        String str = scanner.next();
+        System.out.println(str);
+        // 从字符串中获取指定下标的字符
+        char c = str.charAt(0);
+        System.out.println(c);
+    }
+}

+ 106 - 0
src/main/java/com/sf/part04/ArraysDemo3.java

@@ -0,0 +1,106 @@
+package main.java.com.sf.part04;
+
+
+import java.util.Arrays;
+
+public class ArraysDemo3 {
+    public static void main(String[] args) {
+        /**
+         * Arrays工具类的使用:
+         * import java.util.Arrays;   将Arrays导入到当前类里
+         * 导包:alt+回车
+         * Arrays.toString(strs):  将数组中的元素拼接成字符串的形式
+         * 静态方法方法的调用:类名. ()
+         * 根本原因在于:static 静态的  toString方法是静态方法
+         * 静态方法:方法中含有static关键字进行修饰的方法,静态方法
+         * Arrays类名: 类名是一个单词的适合,首字母大写
+         * toString方法名:方法名是一个单词的适合,首字母小写,多个单词的时候,
+         *    首字母小写,后面单词的首字母大写,满足驼峰命名。
+         *  m:是method的缩写  方法的意思
+         *  Arrays常用的方法:
+         *  Arrays.toString(strs):  将数组中的元素拼接成字符串的形式
+         *  object类型是所有类型的父类,只要是object类型,可以传递任何数据类型
+         *  Arrays.sort(arr);   从小到大排序
+         *  void  无返回值
+         *  System.out.println(Arrays.toString(arr));
+         *  Arrays.sort(arr);
+         *  System.out.println(Arrays.toString(arr));
+         *
+         *  Arrays.sort(arr,1,5); 给数组部分排序
+         *      fromIndex-inclusive 开始的下标哦
+         *      toIndex -exclusive  结束的下标
+         * System.out.println(Arrays.toString(arr));
+         * Arrays.sort(arr,1,5);
+         * System.out.println(Arrays.toString(arr));
+         *
+         * Arrays.binarySearch(arr, 4123); 进行二分查找 前提数组必须有序
+         *  Arrays.sort(arr);
+         *  System.out.println(Arrays.toString(arr));
+         *  int index = Arrays.binarySearch(arr, 4123);
+         *  System.out.println(index);
+         *
+         *  数组的赋值
+         *  int[] arr = new int[]{12,231,31,3,14,1,41,4,1,4123,4321,1};
+         *  System.out.println(Arrays.toString(arr));
+         *  int[] ints = Arrays.copyOf(arr, arr.length);
+         *  System.out.println(Arrays.toString(ints));
+         *
+         *  数组的部分赋值
+         *  System.out.println(Arrays.toString(ints));
+         *  int[] ints1 = Arrays.copyOfRange(ints, 1, 5);
+         *  System.out.println(Arrays.toString(ints1));
+         *
+         *  数组的比较   equals() 比较的是数组的内容和长度
+         *  System.out.println(Arrays.toString(ints1));
+         *  boolean equals = Arrays.equals(ints, arr);
+         *  System.out.println(equals);
+         *
+         *  数组填充 fill
+         *  String[] strings = new String[10];
+         *  System.out.println(Arrays.toString(strings));  // null...
+         *  Arrays.fill(strings,"hello"); // 填充数组
+         *  System.out.println(Arrays.toString(strings));
+         *
+         *  数组的局部填充
+         *  String[] strings2 = new String[10];
+         *  Arrays.fill(strings2,1,5,"hello");
+         *  System.out.println(Arrays.toString(strings2));
+         *
+         *  重载方法:在同一个类中,方法名相同参数列表不同的方法称之为是重载方法。
+         *  参数列表不同:
+         *      1、参数个数不同
+         *      2、参数的数据类型
+         *      3、参数的顺序不同
+         *  ps:重载方法跟返回值没有关系。
+         *
+         *  遇见陌生的方法如何处理:
+         *      1、查看方法名,见名知意,通过名字大概就能知道该方法实现哪个功能
+         *      2、查看是都有static修饰,决定调用方法的方式不同。
+         *          2.1、static修饰的方法:类名.方法名(参数列表)。
+         *          2.2、非static修饰的方法:对象名.方法名(参数列表)。
+         *      3、查看返回值,查看注释,具体这个方法返回什么数据类型,跟业务是否相关。
+         *      4、看参数,多看注释,注意细节问题。
+         *      5、查看注释中的说明,解释该方法的作用。
+         */
+        String[] strs = {"hello","world","java"};
+        //打印数组
+        System.out.println(Arrays.toString(strs));
+        int[] arr = new int[]{12,231,31,3,14,1,41,4,1,4123,4321,1};
+        System.out.println(Arrays.toString(arr));
+        int[] ints = Arrays.copyOf(arr, arr.length);
+        System.out.println(Arrays.toString(ints));
+        int[] ints1 = Arrays.copyOfRange(ints, 1, 5);
+        System.out.println(Arrays.toString(ints1));
+        boolean equals = Arrays.equals(ints, arr);
+        System.out.println(equals);
+
+        String[] strings = new String[10];
+        System.out.println(Arrays.toString(strings));  // null...
+        Arrays.fill(strings,"hello"); // 填充数组
+        System.out.println(Arrays.toString(strings));
+
+        String[] strings2 = new String[10];
+        Arrays.fill(strings2,1,5,"hello");
+        System.out.println(Arrays.toString(strings2));
+    }
+}

+ 24 - 0
src/main/java/com/sf/part05/oop_01/Animal.java

@@ -0,0 +1,24 @@
+package main.java.com.sf.part05.oop_01;
+
+public class Animal {
+
+    String name;
+
+    Integer age;
+
+    public void eat() {
+        System.out.println("动物吃东西");
+    }
+
+    public void run() {
+        System.out.println("动物跑步");
+    }
+
+    @Override
+    public String toString() {
+        return "Animal{" +
+                "name='" + name + '\'' +
+                ", age=" + age +
+                '}';
+    }
+}

+ 16 - 0
src/main/java/com/sf/part05/oop_01/AnimalTest.java

@@ -0,0 +1,16 @@
+package main.java.com.sf.part05.oop_01;
+
+public class AnimalTest {
+    public static void main(String[] args) {
+        Animal animal = new Animal();
+        Animal animal1 = new Animal();
+        animal.eat();
+        animal.run();
+        animal.name = "小猫";
+        animal.age = 2;
+        System.out.println(animal.name + "今年" + animal.age + "岁了");
+        System.out.println(animal);
+        System.out.println(animal1);
+        System.out.println(animal == animal1); // false
+    }
+}

+ 18 - 0
src/main/java/com/sf/part05/oop_01/BSX.java

@@ -0,0 +1,18 @@
+package main.java.com.sf.part05.oop_01;
+
+public class BSX {
+
+    String count;
+
+
+    public String getInfo(){
+        return "BSX{" +
+                "count='" + count + '\'' +
+                '}';
+    }    @Override
+    public String toString() {
+        return "BSX{" +
+                "count='" + count + '\'' +
+                '}';
+    }
+}

+ 29 - 0
src/main/java/com/sf/part05/oop_01/Car.java

@@ -0,0 +1,29 @@
+package main.java.com.sf.part05.oop_01;
+//属性: 汽车编号 汽车的颜色  汽车的品牌  价格   车长度 ...
+//行为: 启动  停止  加速  减速  转弯  ...
+public class Car {
+    String carId;
+    String carName;
+    String carColor;
+    String carBrand;
+    Double carPrice;
+
+    public void start(){
+        System.out.println("汽车启动了");
+    }
+
+    public void stop(){
+        System.out.println("汽车停止了");
+    }
+
+    @Override
+    public String toString() {
+        return "Car{" +
+                "carId='" + carId + '\'' +
+                ", carName='" + carName + '\'' +
+                ", carColor='" + carColor + '\'' +
+                ", carBrand='" + carBrand + '\'' +
+                ", carPrice=" + carPrice +
+                '}';
+    }
+}

+ 31 - 0
src/main/java/com/sf/part05/oop_01/CarH.java

@@ -0,0 +1,31 @@
+package main.java.com.sf.part05.oop_01;
+
+public class CarH {
+
+    String name;
+
+    FDJ fdj;
+
+    BSX bsx;
+
+    DP dp;
+
+    public void printInfo() {
+        System.out.println("CarH{" +
+                "name='" + name + '\'' +
+                ", fdj=" + fdj +
+                ", bsx=" + bsx +
+                ", dp=" + dp +
+                '}');
+    }
+
+    @Override
+    public String toString() {
+        return "CarH{" +
+                "name='" + name + '\'' +
+                ", fdj=" + fdj.getInfo() +
+                ", bsx=" + bsx.getInfo() +
+                ", dp=" + dp.getInfo() +
+                '}';
+    }
+}

+ 23 - 0
src/main/java/com/sf/part05/oop_01/CarHTest.java

@@ -0,0 +1,23 @@
+package main.java.com.sf.part05.oop_01;
+
+public class CarHTest {
+    public static void main(String[] args) {
+        CarH carH = new CarH();
+        carH.name = "audi";
+        FDJ fdj = new FDJ();
+        fdj.ml = "ml";
+        fdj.pl = "pl";
+        carH.fdj = fdj;
+
+        BSX bsx = new BSX();
+        bsx.count = "count";
+        carH.bsx = bsx;
+
+        DP dp = new DP();
+        dp.type = "type";
+        carH.dp = dp;
+        System.out.println(carH);
+
+
+    }
+}

+ 21 - 0
src/main/java/com/sf/part05/oop_01/CarTest.java

@@ -0,0 +1,21 @@
+package main.java.com.sf.part05.oop_01;
+
+public class CarTest {
+    public static void main(String[] args) {
+        Car car = new Car();
+        car.carId = "1001";
+        car.carName = "S480L";
+        car.carPrice = 1000000.0;
+        car.carColor = "黑色";
+        car.carBrand = "奔驰";
+//        System.out.println(car.carId);
+//        System.out.println(car.carName);
+//        System.out.println(car.carPrice);
+//        System.out.println(car.carColor);
+//        System.out.println(car.carBrand);
+        car.start();
+        car.stop();
+        System.out.println(car);
+
+    }
+}

+ 19 - 0
src/main/java/com/sf/part05/oop_01/DP.java

@@ -0,0 +1,19 @@
+package main.java.com.sf.part05.oop_01;
+
+public class DP {
+
+    String  type;
+
+    public String getInfo(){
+        return "DP{" +
+                "type='" + type + '\'' +
+                '}';
+    }
+
+    @Override
+    public String toString() {
+        return "DP{" +
+                "type='" + type + '\'' +
+                '}';
+    }
+}

+ 21 - 0
src/main/java/com/sf/part05/oop_01/FDJ.java

@@ -0,0 +1,21 @@
+package main.java.com.sf.part05.oop_01;
+
+public class FDJ {
+    String ml;
+    String pl;
+
+    public String getInfo(){
+        return "FDJ{" +
+                "ml='" + ml + '\'' +
+                ", pl='" + pl + '\'' +
+                '}';
+    }
+
+    @Override
+    public String toString() {
+        return "FDJ{" +
+                "ml='" + ml + '\'' +
+                ", pl='" + pl + '\'' +
+                '}';
+    }
+}

+ 47 - 0
src/main/java/com/sf/part05/oop_01/Person.java

@@ -0,0 +1,47 @@
+package main.java.com.sf.part05.oop_01;
+
+public class Person {
+    String name;
+    int age;
+
+    Phone phone;
+
+    public void setPhone(Phone phone) {
+        this.phone = phone;
+    }
+
+    public Phone getPhone() {
+        return phone;
+    }
+
+    public void study(){
+        System.out.println("studying~");
+    }
+
+    public void setName(String name){
+        // 将传进来的这个参数 name  赋值给 属性name
+        // this 代表的是当前对象
+        this.name = name;
+    }
+
+    public String getName(){
+        return  name;
+    }
+
+    public void setAge(int age){
+        this.age = age;
+    }
+
+    public int getAge() {
+        return  age;
+    }
+
+    @Override
+    public String toString() {
+        return "Person{" +
+                "name='" + name + '\'' +
+                ", age=" + age +
+                ", phone=" + phone +
+                '}';
+    }
+}

+ 16 - 0
src/main/java/com/sf/part05/oop_01/PersonTest1.java

@@ -0,0 +1,16 @@
+package main.java.com.sf.part05.oop_01;
+
+public class PersonTest1 {
+    public static void main(String[] args) {
+        Person person = new Person();
+        person.setName("zhangsan");
+        person.setAge(20);
+        person.study();
+        Phone phone = new Phone();
+        phone.cpu = "cpu";
+        phone.ram = "ram";
+        phone.rom = "rom";
+        person.setPhone(phone);
+        System.out.println(person);
+    }
+}

+ 30 - 0
src/main/java/com/sf/part05/oop_01/Phone.java

@@ -0,0 +1,30 @@
+package main.java.com.sf.part05.oop_01;
+
+public class Phone {
+
+    String cpu;
+    String ram;
+    String rom;
+
+    public String getInfo(){
+        return "Phone{" +
+                "cpu='" + cpu + '\'' +
+                ", ram='" + ram + '\'' +
+                ", rom='" + rom + '\'' +
+                '}';
+    }
+
+    public void printInfo(Phone p){
+        System.out.print("printInfo  ===> ");
+        System.out.println(p.getInfo());
+    }
+
+    @Override
+    public String toString() {
+        return "Phone{" +
+                "cpu='" + cpu + '\'' +
+                ", ram='" + ram + '\'' +
+                ", rom='" + rom + '\'' +
+                '}';
+    }
+}

+ 63 - 0
src/main/java/com/sf/part05/oop_01/TestDemo.java

@@ -0,0 +1,63 @@
+package main.java.com.sf.part05.oop_01;
+
+/**
+ * 面向对象:java基础部分的核心
+ * java语言的编程思想是 面向对象编程 oop
+ * package: 包   说明当前这个类处于项目中哪个包结构下。
+ * import:导入   说明当前这个类需要使用到哪些包中的类
+ * UML: 统一建模语言  +  public   -  private  #protected
+ * 类:对现实生活中具有共同属性和行为的一类事物的抽象描述,规范了类具有的属性和行为。
+ *      eg:咱们班级学习数组比较好的这类人,学习集合也没有问题。
+ *      java编程思想基于面向对象: 万物皆对象
+ *      类中具有属性和行为:
+ *          技巧:类中如何区分属性和行为    属性都是静止的  行为都是动态的
+ *          属性: 说明当前类中具有哪些属性
+ *          行为/方法: 说明当前类中具有哪些属性
+ *       eg:汽车 :
+ *       属性 : 汽车的颜色  汽车的品牌  价格   汽车类厂  车长度 ...
+ *       行为:启动  停止  加速  减速  转弯  ...
+ *
+ *  创建一个汽车类:
+ *  属性/成员变量: 汽车编号 汽车的颜色  汽车的品牌  价格   车长度 ...
+ *  行为: 启动  停止  加速  减速  转弯  ...
+ *
+ *  eg:Audi A6L  -- >  模型 (外观  内饰  具有的功能)
+ *  Audi A6L { 汽车的颜色 ,价格,车长,... , 启动  主动刹车...}   类
+ *
+ *  去生产线:new 生产车辆  -- 基于模型  生成车辆  --  实例/对象
+ *
+ *  模型有1个   class
+ *  Car  car  = new Car();
+ *  Car  car1  = new Car();
+ *  car != car1
+ *  基于这个模型生产出的汽车  有n个     --  实例/对象
+ *
+ * 基本数据类型和包装类:
+ *  包装类:提供了好多基本数据类型没有的方法,方便开发。
+ *  int --装箱-->  Integer
+ *  byte <--拆箱-- Byte
+ *  short   Short
+ *  long   Long
+ *  float   Float
+ *  double   Double
+ *  boolean   Boolean
+ *  char   Character
+ *
+ * 对象:基于类所创建出来的实例。
+ *
+ * 重写toString()方法:object类是所有类的父类
+ * object类中toString()方法:返回对象的字符串表示形式。
+ *
+ *
+ * 基于需求类的创建
+ * 创建对象
+ * 给属性赋值  调用方法  重写toString()
+ *
+ */
+public class TestDemo {
+    public static void main(String[] args) {
+
+    }
+
+
+}

+ 28 - 0
src/main/java/com/sf/part05/oop_02/Car.java

@@ -0,0 +1,28 @@
+package main.java.com.sf.part05.oop_02;
+
+public class Car {
+    double weight;
+    int  horsepower;
+
+
+    public double proportion(){
+        return horsepower * 10 / weight;
+    }
+
+    public String getInfo(){
+        return "Car{" +
+                "weight=" + weight +
+                ", horsepower=" + horsepower +
+                ", proportion=" + proportion() +
+                '}';
+    }
+
+    @Override
+    public String toString() {
+        return "Car{" +
+                "weight=" + weight +
+                ", horsepower=" + horsepower +
+                ", proportion=" + proportion() +
+                '}';
+    }
+}

+ 27 - 0
src/main/java/com/sf/part05/oop_02/CarTest.java

@@ -0,0 +1,27 @@
+package main.java.com.sf.part05.oop_02;
+
+import java.util.Arrays;
+
+public class CarTest {
+
+    public static void main(String[] args) {
+        Car[] cars = new Car[3];
+        Car car1 = new Car();
+        car1.weight = 1500;
+        car1.horsepower = 180;
+        cars[0] =car1;
+
+        Car car2 = new Car();
+        car2.weight = 1300;
+        car2.horsepower = 125;
+        cars[1] =car2;
+
+        Car car3 = new Car();
+        car3.weight = 2000;
+        car3.horsepower = 230;
+        cars[2] =car3;
+
+        System.out.println(Arrays.toString(cars));
+
+    }
+}

+ 20 - 0
src/main/java/com/sf/part05/oop_02/Demo.java

@@ -0,0 +1,20 @@
+package main.java.com.sf.part05.oop_02;
+
+/*
+ 构造器/构造方法:
+    作用:1、用于对象的创建   2、用于属性的赋值
+    语法结构:
+        权限修饰符 类名(){}  --  无参构造器
+        权限修饰符 类名(参数列表){this.属性名 = 参数}  --  有参构造器
+    重载构造器
+ eg:  Person 类
+ 说明:如果一个类中没有构造器(无参构造器和有参构造器都没有),系统默认提供一个无参构造器
+     如果当前一个类中提供了有参有参构造器,那么系统将不会提供无参构造器。
+
+     参数的调用:this
+
+     标准的javaBean:属性 行为(toString  无参构造器,有参构造器  private修饰属性  setter/getter)
+      只有private修饰属性  才用setter/getter
+ */
+public class Demo {
+}

+ 50 - 0
src/main/java/com/sf/part05/oop_02/Person.java

@@ -0,0 +1,50 @@
+package main.java.com.sf.part05.oop_02;
+
+public class Person {
+    String id;
+    String name;
+    int age;
+    double height;
+    double weight;
+    String address;
+    // 五参构造器
+    public Person(){
+        System.out.println("我是无参构造器~");
+    }
+    public Person(String id, String name, int age, double height, double weight, String address) {
+        System.out.println("我是有参构造器~");
+        this.id = id;
+        this.name = name;
+        this.age = age;
+        this.height = height;
+        this.weight = weight;
+        this.address = address;
+    }
+
+    public Person(String id, String name) {
+        System.out.println("我是有参构造器~");
+        this.id = id;
+        this.name = name;
+    }
+
+    public Person(String id, String name, int age) {
+        this(id,name);
+        System.out.println("我是有参构造器~");
+        this.age = age;
+
+    }
+
+
+    // toString()方法
+    @Override
+    public String toString() {
+        return "Person{" +
+                "id='" + id + '\'' +
+                ", name='" + name + '\'' +
+                ", age=" + age +
+                ", height=" + height +
+                ", weight=" + weight +
+                ", address='" + address + '\'' +
+                '}';
+    }
+}

+ 10 - 0
src/main/java/com/sf/part05/oop_02/PersonTest.java

@@ -0,0 +1,10 @@
+package main.java.com.sf.part05.oop_02;
+
+public class PersonTest {
+    public static void main(String[] args) {
+        Person person = new Person();
+        System.out.println(person);
+        Person person1 = new Person("1001","zhangsan",19,179.1,170.1,"北京市");
+        System.out.println(person1);
+    }
+}

+ 19 - 0
src/main/java/com/sf/part05/oop_02/Student.java

@@ -0,0 +1,19 @@
+package main.java.com.sf.part05.oop_02;
+
+public class Student {
+    // 学号
+    int  number;
+    // 年级
+    int state;
+    // 成绩
+    int score;
+
+    @Override
+    public String toString() {
+        return "Student{" +
+                "number=" + number +
+                ", state=" + state +
+                ", score=" + score +
+                '}';
+    }
+}

+ 39 - 0
src/main/java/com/sf/part05/oop_02/StudentTest.java

@@ -0,0 +1,39 @@
+package main.java.com.sf.part05.oop_02;
+
+import java.util.Arrays;
+
+public class StudentTest {
+    public static void main(String[] args) {
+        Student[] students = new Student[5];
+        for (int i = 0; i < students.length; i++) {
+            Student student = new Student();
+            student.number = i+1;
+            student.state = (int)(Math.random()*5+1);
+            student.score = (int)(Math.random()*100+1);
+            students[i] = student;
+        }
+//        System.out.println(Arrays.toString(students));
+        // 打印出3年级(state值为3)的学生信息。
+        for (Student student : students) {
+            if (student.state == 3) {
+                System.out.println(student);
+            }
+        }
+
+        //遍历所有学生信息
+        for (Student student : students) {
+            System.out.println(student);
+        }
+        // 按照学生的成绩及进行冒泡排序
+        for (int i = 0; i < students.length; i++) {
+            for (int j = 0; j < students.length - 1 - i; j++) {
+                if (students[j].score > students[j+1].score) {
+                    Student temp = students[j];
+                    students[j] = students[j+1];
+                    students[j+1] = temp;
+                }
+            }
+        }
+        System.out.println(Arrays.toString(students));
+    }
+}

+ 25 - 0
src/main/java/com/sf/part05/oop_03/Animal.java

@@ -0,0 +1,25 @@
+package main.java.com.sf.part05.oop_03;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Animal {
+    private String id;
+    private String name;
+    public void eat(){
+        System.out.println("动物吃食物");
+    }
+    public void sleep(){
+        System.out.println("动物睡觉");
+    }
+    public void run(){
+        System.out.println("动物跑");
+    }
+    public void showInfo(){
+        System.out.println("自我介绍");
+    }
+}

+ 14 - 0
src/main/java/com/sf/part05/oop_03/AnimalTest.java

@@ -0,0 +1,14 @@
+package main.java.com.sf.part05.oop_03;
+
+public class AnimalTest {
+    public static void main(String[] args) {
+        Cat cat = new Cat();
+        cat.setId("1001");
+        cat.setName("小花");
+        cat.eat();
+        cat.run();
+        cat.sleep();
+        cat.showInfo();
+        cat.catchMouse();
+    }
+}

+ 33 - 0
src/main/java/com/sf/part05/oop_03/Book.java

@@ -0,0 +1,33 @@
+package main.java.com.sf.part05.oop_03;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data   // setter/getter/toString/
+@NoArgsConstructor  // 无参构造
+@AllArgsConstructor   // 全参构造
+public class Book {
+    // 属性:书名、作者、出版社、价格
+    private String bookName;
+    private String author;
+    private String press;
+    private double price;
+
+    public void setPrice(double price) {
+        if(price < 10){
+            price = 10;
+        }
+        this.price = price;
+    }
+
+    public String getInfo(){
+        return "Book{" +
+                "bookName='" + bookName + '\'' +
+                ", author='" + author + '\'' +
+                ", press='" + press + '\'' +
+                ", price=" + price +
+                '}';
+    }
+
+}

+ 13 - 0
src/main/java/com/sf/part05/oop_03/BookTest.java

@@ -0,0 +1,13 @@
+package main.java.com.sf.part05.oop_03;
+
+public class BookTest {
+    public static void main(String[] args) {
+        Book book = new Book();
+        book.setAuthor("鲁迅");
+        book.setBookName("呐喊");
+        book.setPrice(30.0);
+        book.setPress("人民文学出版社");
+        System.out.println(book);
+        System.out.println(book.getInfo());
+    }
+}

+ 21 - 0
src/main/java/com/sf/part05/oop_03/Cat.java

@@ -0,0 +1,21 @@
+package main.java.com.sf.part05.oop_03;
+
+public class Cat extends Animal{
+    // 只需要在子类中定义子类自己独有的方法就可以
+    public void catchMouse(){
+        System.out.println("猫捉老鼠");
+    }
+
+
+    @Override   //子类重写父类中方法的标识
+    public void eat() {
+        System.out.println("猫吃鱼");
+    }
+
+    @Override
+    public void sleep() {
+        System.out.println("猫在睡觉");
+    }
+
+
+}

+ 33 - 0
src/main/java/com/sf/part05/oop_03/Demo.java

@@ -0,0 +1,33 @@
+package main.java.com.sf.part05.oop_03;
+
+/**
+ * 封装:将类的信息隐藏在类的内部,通过类内提供的方法对当前类的信息进行操作
+ * 权限修饰符::
+ * private:私有的,只能在本类中访问
+ * 缺省:默认的,只能在本类和同包中访问
+ * protected:受保护的,只能在本类和同包中访问,也可以在子类中访问
+ * public :公共的,可以在任何地方访问
+ * 常用的: public  private
+ * 开发时:所有类的属性都需要用private进行修饰
+ * 演示: 创建一个 Person类,属性有name,age,phone,email提供方法对属性进行操作
+ * 一个标准的java类(javaBean):包含  属性 、setter/getter方法、 有参构造器、无参构造器、toString()方法
+ *
+ *
+ * 继承:子类去继承父类     extends关键字进行表示
+ * 子类继承父类     属性和行为  、
+ * eg:  父类中有 id   name  age     save(100w)   子类中有  email  phone
+ * 子类继承父类后,子类中就拥有父类的属性和行为
+ * son  extends   parent
+ * 子类中有  id   name  age   email  phone      save(100w) {100W}
+ * 如果子类对父类中的方法没有重写,直接调用父类中的方法
+ * 但是子类也可以对父类中的方法进行重写  save(100w) {1W}
+ * 当子类在调用save()时,就会默认调用子类自己重写后的方法   符合 就近原则
+ *
+ *
+ * 重写和重载的区别:
+ * 单继承
+ *
+ * 子类中的无参构造器 默认调用父类中的无参构造器
+ */
+public class Demo {
+}

+ 8 - 0
src/main/java/com/sf/part05/oop_03/Mouse.java

@@ -0,0 +1,8 @@
+package main.java.com.sf.part05.oop_03;
+
+public class Mouse extends Animal{
+    public void playD(){
+        System.out.println("老鼠打洞~");
+    }
+
+}

+ 66 - 0
src/main/java/com/sf/part05/oop_03/Person.java

@@ -0,0 +1,66 @@
+package main.java.com.sf.part05.oop_03;
+
+public class Person {
+
+    private String name;
+    private int age;
+    private String phone;
+    private String email;
+
+    public Person() {
+    }
+
+    public Person(String name, int age, String phone, String email) {
+        this.name = name;
+        this.age = age;
+        this.phone = phone;
+        this.email = email;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getAge() {
+        return age;
+    }
+
+    public void setAge(int age) {
+        if(age < 0 || age > 150){
+            System.out.println("输入年龄有误");
+            age = 20;
+        }
+        this.age = age;
+
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    @Override
+    public String toString() {
+        return "Person{" +
+                "name='" + name + '\'' +
+                ", age=" + age +
+                ", phone='" + phone + '\'' +
+                ", email='" + email + '\'' +
+                '}';
+    }
+}

+ 16 - 0
src/main/java/com/sf/part05/oop_03/PersonTest.java

@@ -0,0 +1,16 @@
+package main.java.com.sf.part05.oop_03;
+
+public class PersonTest {
+    public static void main(String[] args) {
+        Person person = new Person();
+        person.setName("张三");
+        person.setAge(12);
+        person.setPhone("123456789");
+        person.setEmail("123456789@qq.com");
+        System.out.println(person.getName());
+        System.out.println(person.getAge());
+        System.out.println(person.getPhone());
+        System.out.println(person.getEmail());
+        System.out.println(person);
+    }
+}

+ 14 - 0
src/main/java/com/sf/part05/oop_03/User.java

@@ -0,0 +1,14 @@
+package main.java.com.sf.part05.oop_03;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class User {
+    private String username;
+    private String password;
+
+}

+ 16 - 0
src/main/java/com/sf/part05/oop_03/UserManager.java

@@ -0,0 +1,16 @@
+package main.java.com.sf.part05.oop_03;
+
+public class UserManager {
+    public static boolean login( String username , String password ){
+        User user = new User();
+        user.setUsername("admin");
+        user.setPassword("123456");
+        if(username.equals(user.getUsername()) && password.equals(user.getPassword())){
+            System.out.println("登录成功");
+            return true;
+        }else {
+            System.out.println("登录失败,用户名或密码不对~");
+            return false;
+        }
+    }
+}

+ 8 - 0
src/main/java/com/sf/part05/oop_03/UserTest.java

@@ -0,0 +1,8 @@
+package main.java.com.sf.part05.oop_03;
+
+public class UserTest {
+    public static void main(String[] args) {
+        boolean admin = UserManager.login("admi1n", "123456");
+        System.out.println(admin);
+    }
+}

+ 59 - 0
src/main/java/com/sf/part05/oop_04/Demo.java

@@ -0,0 +1,59 @@
+package main.java.com.sf.part05.oop_04;
+
+
+/**
+ * static:关键字  静态的
+ * 作用:属性、方法、代码块、内部类
+ * 1、static修饰属性时候:静态变量
+ * 2、static修饰方法时候:静态方法   方法的调用方式不同:静态方法可以采用类名.方法名()调用,
+ * 也可以采用对象.方法名()调用
+ *      实例方法 :  没有static关键字进行修饰  调用方式:new  对象名.方法名()
+ *      static修饰的方法不能被重写。
+ * 3、  代码块、内部类: 静态代码块   静态内部类
+ * 4、静态方法中不能直接调用非静态方法,非静态方法中可以直接调用静态方法
+ *
+ * 类和对象
+ * 用static修饰的属性 都是属于类的  ,可以在多个对象之间进行数据共享
+ * 没有被static修饰的属性  都是属于对象的  ,多个对象之间相互独立
+ *
+ * static/final区别:
+ * 答案:
+ * static是一个关键字,可以修饰属性 方法  代码块 内部类
+ * 被static修饰的属性和方法我们称之为是类变量/属性或类方法,属于类的,随着类的加载而加载
+ * 并且在内存中只有一份,执行顺序在创建对象之前,并并且用static修饰的方法不能被重写
+ * 被static修饰的属性可以在多个对象之间进行数据共享。
+ * 被static修饰的代码块称之为静态代码块,执行顺序也在实例代码块之前,并且也属于类的,只执行一次,
+ * 实例代码块属于对象的,随着对象的创建而执行,并且执行顺序在构造器之前。
+ * 静态调用的方式  可以采用类名.方法名进行调用。
+ * final:
+ * final是一个关键字,可以修饰类、方法、属性
+ * 被final修饰的类不能被继承
+ * 常见的用fianl修饰的类 : String 、System、StringBuffer  Math
+ * 被final修饰的方法不能被重写
+ * 被final修饰的属性不能被二次赋值,final修饰的属性称之为常量。
+ *
+ *
+ * final:
+ * 最后的最终的   也是一个关键字
+ * final  可以 类 、 方法 、属性
+ * final 修饰的类不能被继承
+ *  常见的用fianl修饰的类 : String 、System、StringBuffer 、 Math
+ * final 修饰的方法不能被重写
+ * final 修饰的属性不能被二次赋值,final修饰的属性称之为常量,
+ * 常量名写法  所有字符都大写,多个字符之间采用_进行分格
+ *
+ *
+ * 代码块:
+ * 局部代码块:在方法内的代码块
+ * 静态代码块:
+ * 必须有static修饰,必须放在类下。与类一起加载执行。并且静态代码块执行一次
+ * 实例代码块:
+ * 没有static修饰,必须放在类下。与对象初始化一起加载,
+ * 即每次调用构造方法都会执行,并且在构造方法前执行。
+ */
+public class Demo {
+    public static final  String IP_ADDRESS = "192.168.1.1";
+    public static void main(String[] args) {
+//        IP_ADDRESS = "1234";
+    }
+}

+ 12 - 0
src/main/java/com/sf/part05/oop_04/FinalClass.java

@@ -0,0 +1,12 @@
+package main.java.com.sf.part05.oop_04;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public final class FinalClass {
+    private String name;
+}

+ 9 - 0
src/main/java/com/sf/part05/oop_04/FinalClassSon.java

@@ -0,0 +1,9 @@
+package main.java.com.sf.part05.oop_04;
+//  final修饰的类不能被子类继承
+//public class FinalClassSon extends FinalClass{
+//
+//}
+
+//public class FinalClassSon extends System{
+//
+//}

+ 26 - 0
src/main/java/com/sf/part05/oop_04/Parent.java

@@ -0,0 +1,26 @@
+package main.java.com.sf.part05.oop_04;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Parent {
+
+    private String pid;
+    private String pname;
+
+    public void save(int money){
+        System.out.println("父类中的save方法执行了"+money);
+    }
+
+    public static void get(){
+        System.out.println("父类中的get方法执行了");
+    }
+
+    public final void finalM1(){
+        System.out.println("父类中的finalM1方法执行了");
+    }
+}

+ 41 - 0
src/main/java/com/sf/part05/oop_04/Son.java

@@ -0,0 +1,41 @@
+package main.java.com.sf.part05.oop_04;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Son extends Parent{
+    private String id;
+    private String name;
+
+    public Son(String pid, String pname, String id, String name) {
+        super(pid, pname);
+        this.id = id;
+        this.name = name;
+    }
+
+    @Override
+    public void save(int money) {
+        System.out.println("save " + money);
+    }
+//    @Override
+//    public final void finalM1(){
+//        System.out.println("父类中的finalM1方法执行了");
+//    }
+
+
+    //
+    public static void get(){
+        System.out.println("子类中的get方法执行了");
+    }
+
+    public static void main(String[] args) {
+        Son son = new Son("001", "张三", "002", "张三parent");
+        son.save(1000);
+        son.get();
+        Parent.get();
+    }
+}

+ 32 - 0
src/main/java/com/sf/part05/oop_04/Test.java

@@ -0,0 +1,32 @@
+package main.java.com.sf.part05.oop_04;
+
+public class Test {
+	public static void main(String[] args) {
+		Son1 son = new Son1();
+	}
+}
+class Father{
+	static{
+		System.out.println("(1)父类的静态代码块");
+	}
+	{
+		System.out.println("(2)父类的非静态代码块");
+	}
+	Father(){
+		System.out.println("(3)父类的无参构造");
+	}
+}
+
+class Son1 extends Father{
+	static{
+		System.out.println("(4)子类的静态代码块");
+	}
+	{
+		System.out.println("(5)子类的非静态代码块");
+	}
+
+	Son1(){
+//		super();
+		System.out.println("(6)子类的无参构造");
+	}
+}

+ 36 - 0
src/main/java/com/sf/part05/oop_04/User.java

@@ -0,0 +1,36 @@
+package main.java.com.sf.part05.oop_04;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class User {
+    private String id;
+    private String name;
+
+    private static int age;
+
+    @Override
+    public String toString() {
+        return "User{" +
+                "id='" + id + '\'' +
+                ", name='" + name + '\'' +
+                ", age='" + age + '\'' +
+                '}';
+    }
+
+    public static void main(String[] args) {
+        User user = new User();
+        User user1 = new User();
+        user.setId("1");
+        user.setName("张三");
+        User.age = 111;
+        System.out.println(User.age);
+        System.out.println(user);
+        System.out.println(user1);
+
+    }
+}

+ 55 - 0
src/main/java/com/sf/part05/oop_05/Animal.java

@@ -0,0 +1,55 @@
+package main.java.com.sf.part05.oop_05;
+
+public class Animal {
+    int num = 10;
+    public void eat() {
+        System.out.println("动物吃食物");
+    }
+}
+
+
+class Dog extends Animal {
+    public void protectedHome() {
+        System.out.println("狗看家");
+    }
+    int num = 20;
+    @Override
+    public void eat() {
+        System.out.println("狗吃骨头");
+    }
+}
+
+class Cat extends Animal {
+    int num = 30;
+    @Override
+    public void eat() {
+        System.out.println("猫吃鱼");
+    }
+}
+
+class AnimalTest {
+    public static void main(String[] args) {
+        Dog dog = new Dog();
+        dog.eat();
+        Cat cat = new Cat();
+        cat.eat();
+
+        // 多态的形式
+        //父类的引用指向了子类的对象
+        // 父类/父接口  = new  子类();
+        // 多态的方式调用方法   编译看左边,运行看右边
+        // 多态调用属性/变量时,编译看左边,运行看左边
+        Animal animal = new Dog();
+        Animal animal1 = new Cat();
+        animal.eat();
+        int num = animal.num;
+        // 强转  父类 - > 子类
+        // instanceof  判断当前变量是否属于某种类型
+        if(animal instanceof Dog){
+            Dog dog1 = (Dog) animal;
+            dog1.protectedHome();
+        }
+        System.out.println(num);
+        animal1.eat();
+    }
+}

+ 18 - 0
src/main/java/com/sf/part05/oop_05/Demo.java

@@ -0,0 +1,18 @@
+package main.java.com.sf.part05.oop_05;
+
+/**
+ * 多态:同一种行为具有不同的表现形态
+ * 继承   Animal   eat()
+ *  Dog   重写 eat()    Cat  重写 eat()
+ * 父类的引用指向了子类对象
+ * 多态的前提:必须是子父类的关系
+ *
+ *
+ *
+ * 抽象类:
+ * 我们把没有方法体的方法称为抽象方法。
+ * Java语法规定,包含抽象方法的类就是抽象类
+ *
+ */
+public class Demo {
+}

+ 48 - 0
src/main/java/com/sf/part05/oop_05/Drink.java

@@ -0,0 +1,48 @@
+package main.java.com.sf.part05.oop_05;
+
+import java.util.Scanner;
+
+public class Drink {
+
+    public void state(){
+        System.out.println("饮料");
+    }
+
+
+
+}
+
+class  Coco extends Drink{
+    public void state(){
+        System.out.println("我是可口可乐,我是甜汽水");
+    }
+}
+
+class  SaltDrink extends Drink{
+    public void state(){
+        System.out.println("我是盐汽水,我是咸的");
+    }
+}
+
+
+class Test{
+    static Drink sell(String str){
+    if(str.equals("甜的")){
+        // Drink drink = new Coco();
+        return new Coco();
+    }else if(str.equals("咸的")){
+        //Drink drink =  new SaltDrink();
+        return new SaltDrink();
+    }
+    return null;
+    }
+
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        String next = scanner.next();
+        Drink drink = sell(next);
+        drink.state();
+    }
+}
+
+

+ 51 - 0
src/main/java/com/sf/part05/oop_05/Student.java

@@ -0,0 +1,51 @@
+package main.java.com.sf.part05.oop_05;
+
+/*
+抽象类中不一定都是抽象方法,也可以是实例方法,静态方法
+    但是包含抽象方法的类一定是抽象类。
+学习抽象方法的应用: 模板设计模式    减少了父类中定义无用的方法体 ,子类只需要重写抽象方法即可
+ */
+public abstract class Student {
+    // 抽象方法  没有方法体  一定需要被子类重写
+    public abstract void study();
+
+    // 实例方法  可以被重写  也可以不重写
+    public void eat(){
+        System.out.println("吃饭");
+    }
+
+    public abstract String eat1();
+
+
+    // 静态方法不能被重写
+    public static void sleep(){
+        System.out.println("睡觉");
+    }
+}
+
+
+class  StudentSon extends Student{
+
+    @Override
+    public void study() {
+        System.out.println("子类学习");
+    }
+
+    @Override
+    public void eat() {
+       super.eat();
+    }
+
+    @Override
+    public String eat1() {
+       return null;
+    }
+
+    public static void main(String[] args) {
+        // 多态
+        Student student = new StudentSon();
+        student.study();
+        student.eat();
+        student.sleep();
+    }
+}

+ 13 - 0
src/main/java/com/sf/part05/oop_06/Apple.java

@@ -0,0 +1,13 @@
+package main.java.com.sf.part05.oop_06;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Apple {
+    private Double size;
+    private String color;
+}

+ 30 - 0
src/main/java/com/sf/part05/oop_06/Circle.java

@@ -0,0 +1,30 @@
+package main.java.com.sf.part05.oop_06;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+
+public class Circle implements ShapeInterface{
+
+    double r;
+    @Override
+    public double getArea() {
+        return Math.PI * Math.pow(r, 2);
+//        return Math.PI * r * r;
+    }
+
+    @Override
+    public double getPerimeter() {
+        return 2*Math.PI*r;
+    }
+
+    @Override
+    public void show() {
+        System.out.print("r = "+r+"圆的面积是:"+getArea()+", ");
+        System.out.println("圆的周长是:"+getPerimeter());
+    }
+}

+ 13 - 0
src/main/java/com/sf/part05/oop_06/CompareAble.java

@@ -0,0 +1,13 @@
+package main.java.com.sf.part05.oop_06;
+
+public interface CompareAble {
+
+    default void compare(Apple a1, Apple a2){
+        System.out.println("默认挑大的:");
+        if(a1.getSize() > a2.getSize()){
+            System.out.println(a1.getSize()+"=="+a1.getColor());
+        }else{
+            System.out.println(a2.getSize()+"=="+a2.getColor());
+        }
+    }
+}

+ 14 - 0
src/main/java/com/sf/part05/oop_06/CompareBig.java

@@ -0,0 +1,14 @@
+package main.java.com.sf.part05.oop_06;
+
+public class CompareBig implements CompareAble{
+
+    @Override
+    public void compare(Apple a1, Apple a2) {
+        System.out.println("默认挑大的:");
+        if(a1.getSize() > a2.getSize()){
+            System.out.println(a1.getSize()+"=="+a1.getColor());
+        }else{
+            System.out.println(a2.getSize()+"=="+a2.getColor());
+        }
+    }
+}

+ 14 - 0
src/main/java/com/sf/part05/oop_06/CompareColor.java

@@ -0,0 +1,14 @@
+package main.java.com.sf.part05.oop_06;
+
+public class CompareColor implements CompareAble{
+    @Override
+    public void compare(Apple a1, Apple a2) {
+        System.out.println("挑红的:");
+        if("红色".equals(a1.getColor())){
+            System.out.println(a1.getSize()+"=="+a1.getColor());
+        }
+        if("红色".equals(a2.getColor())){
+            System.out.println(a2.getSize()+"=="+a2.getColor());
+        }
+    }
+}

+ 23 - 0
src/main/java/com/sf/part05/oop_06/Demo.java

@@ -0,0 +1,23 @@
+package main.java.com.sf.part05.oop_06;
+
+/**
+ * 引用数据类型中: 类  接口  数组
+ * 接口: 一种数据类型,
+ * 定义一个接口: public  interface 接口名{ }
+ *
+ * CLASS  A  extends  B  implements  C,D,E
+ * 类和类之间只能进行单继承,但是类和接口之间可以进行多实现
+ *
+ * 接口中抽象方法  默认修饰符是 public abstract
+ *
+ * 静态方法 默认修饰符是 public static  不能被重子类重写
+ *
+ * 默认方法 默认修饰符是 public default
+ *  子类可以重写,但是重写是  @Override   将default去掉
+ *
+ * 接口中可以定义常量,默认修饰符是 public static final,没有变量
+ *
+ * 接口可以进行多实现  多继承
+ */
+public class Demo {
+}

+ 10 - 0
src/main/java/com/sf/part05/oop_06/FightAble.java

@@ -0,0 +1,10 @@
+package main.java.com.sf.part05.oop_06;
+
+public interface FightAble {
+
+    void  specialFight();
+
+    default void  commonFight(){
+        System.out.println("普通攻击");
+    }
+}

+ 10 - 0
src/main/java/com/sf/part05/oop_06/Mage.java

@@ -0,0 +1,10 @@
+package main.java.com.sf.part05.oop_06;
+
+public class Mage  implements FightAble{
+    @Override
+    public void specialFight() {
+        System.out.println("魔法攻击");
+    }
+}
+
+

+ 7 - 0
src/main/java/com/sf/part05/oop_06/Person.java

@@ -0,0 +1,7 @@
+package main.java.com.sf.part05.oop_06;
+
+public class Person {
+    public void pickApple(CompareAble compareAble, Apple a1, Apple a2){
+        compareAble.compare(a1, a2);
+    }
+}

+ 24 - 0
src/main/java/com/sf/part05/oop_06/Player.java

@@ -0,0 +1,24 @@
+package main.java.com.sf.part05.oop_06;
+
+import java.util.Scanner;
+
+public class Player {
+   public static FightAble select(String str){
+        if(str.equals("法力角色")){
+            return  new Mage();
+       }else if ("普通角色".equals(str)){
+            return  new Solder();
+        }
+        return null;
+   }
+
+
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        String next = scanner.next();
+        FightAble fightAble = Player.select(next);
+        fightAble.specialFight();
+        fightAble.commonFight();
+        scanner.close();
+    }
+}

+ 28 - 0
src/main/java/com/sf/part05/oop_06/Rectangle.java

@@ -0,0 +1,28 @@
+package main.java.com.sf.part05.oop_06;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Rectangle implements ShapeInterface{
+    double length;
+    double width;
+
+    @Override
+    public double getArea() {
+        return length * width;
+    }
+
+    @Override
+    public double getPerimeter() {
+        return 2*(length + width);
+    }
+
+    @Override
+    public void show() {
+        System.out.println("length="+length+"width = "+width+"矩形的周长为:" + getPerimeter() + ",面积为:" + getArea());
+    }
+}

+ 20 - 0
src/main/java/com/sf/part05/oop_06/ShapeInterface.java

@@ -0,0 +1,20 @@
+package main.java.com.sf.part05.oop_06;
+
+public interface ShapeInterface {
+
+   double getArea();
+   double getPerimeter();
+
+   void show();
+
+
+   public static double compareToArea(ShapeInterface s1 ,ShapeInterface s2){
+      return s1.getArea() - s2.getArea();
+//       return Double.compare(s1.getArea(),s2.getArea());
+   }
+	public static int compareToPerimeter(ShapeInterface s1,ShapeInterface s2){
+        return Double.compare(s1.getPerimeter(),s2.getPerimeter());
+    }
+
+
+}

+ 36 - 0
src/main/java/com/sf/part05/oop_06/ShapeInterfaceTest.java

@@ -0,0 +1,36 @@
+package main.java.com.sf.part05.oop_06;
+
+public class ShapeInterfaceTest {
+    public static void main1(String[] args) {
+        ShapeInterface shapeInterface1 = new Rectangle(10,20);
+        ShapeInterface shapeInterface2 = new Rectangle(10,30);
+        shapeInterface1.show();
+        shapeInterface2.show();
+        int i = ShapeInterface.compareToPerimeter(shapeInterface1, shapeInterface2);
+        System.out.println(i);
+        double v = ShapeInterface.compareToArea(shapeInterface1, shapeInterface2);
+        System.out.println(v);
+    }
+
+    public static void main(String[] args) {
+        ShapeInterface shapeInterface1 = new Rectangle(10,20);
+        shapeInterface1.show();
+        ShapeInterface shapeInterface2 = new Circle(10.0);
+        shapeInterface2.show();
+        int i = ShapeInterface.compareToPerimeter(shapeInterface1, shapeInterface2);
+        System.out.println(i);
+        double v = ShapeInterface.compareToArea(shapeInterface1, shapeInterface2);
+        System.out.println(v);
+    }
+
+    public static void main3(String[] args) {
+        ShapeInterface shapeInterface1 = new Circle(10.0);
+        ShapeInterface shapeInterface2 = new Circle(20.0);
+        shapeInterface1.show();
+        shapeInterface2.show();
+        int i = ShapeInterface.compareToPerimeter(shapeInterface1, shapeInterface2);
+        System.out.println(i);
+        double v = ShapeInterface.compareToArea(shapeInterface1, shapeInterface2);
+        System.out.println(v);
+    }
+}

+ 8 - 0
src/main/java/com/sf/part05/oop_06/Solder.java

@@ -0,0 +1,8 @@
+package main.java.com.sf.part05.oop_06;
+
+public class Solder implements FightAble{
+    @Override
+    public void specialFight() {
+        System.out.println("武器攻击");
+    }
+}

+ 32 - 0
src/main/java/com/sf/part05/oop_06/Student.java

@@ -0,0 +1,32 @@
+package main.java.com.sf.part05.oop_06;
+
+public interface Student {
+    // 成员常量
+   public static final  int num = 10;
+
+
+
+    // 学习
+    public abstract void study();
+    // 吃饭
+    public abstract void eat();
+    // 睡觉
+     void sleep();
+    // 玩
+     void play();
+
+/**
+ * 静态方法get()的定义
+ * 该方法不需要创建对象即可调用,属于类级别的方法
+ */
+     public static void get(){
+    // 使用System.out.println输出静态方法get()执行的信息
+         System.out.println("静态方法get()执行了");
+     }
+
+     public default void show(){
+         System.out.println("default方法show()执行了");
+     }
+
+    // 私有方法
+}

+ 32 - 0
src/main/java/com/sf/part05/oop_06/StudentImpl.java

@@ -0,0 +1,32 @@
+package main.java.com.sf.part05.oop_06;
+
+public class StudentImpl implements Student{
+
+    @Override
+    public void study() {
+        // 业务逻辑  将数据插入到数据库
+        System.out.println("学习");
+    }
+
+    @Override
+    public void eat() {
+        System.out.println("吃饭");
+    }
+
+    @Override
+    public void sleep() {
+        System.out.println("睡觉");
+    }
+
+    @Override
+    public void play() {
+        System.out.println("玩");
+    }
+
+    @Override
+    public void show(){
+        System.out.println("default方法show()执行了");
+    }
+
+
+}

+ 10 - 0
src/main/java/com/sf/part05/oop_06/StudentTest.java

@@ -0,0 +1,10 @@
+package main.java.com.sf.part05.oop_06;
+
+public class StudentTest {
+    public static void main(String[] args) {
+        Student student = new StudentImpl();
+        student.study();
+        student.eat();
+        Student.get();
+    }
+}

+ 11 - 0
src/main/java/com/sf/part05/oop_06/TestApple.java

@@ -0,0 +1,11 @@
+package main.java.com.sf.part05.oop_06;
+
+public class TestApple {
+    public static void main(String[] args) {
+        Apple a1 = new Apple(5.0, "青色");
+        Apple a2 = new Apple(3.0, "红色");
+        Person person = new Person();
+        person.pickApple(new CompareBig(),a1,a2);
+        person.pickApple(new CompareColor(),a1,a2);
+    }
+}

+ 24 - 0
src/main/java/com/sf/part05/oop_06/Triangle.java

@@ -0,0 +1,24 @@
+package main.java.com.sf.part05.oop_06;
+
+public class Triangle implements ShapeInterface{
+
+    double a;
+    double h;
+    @Override
+    public double getArea() {
+        return a * h / 2;
+    }
+
+    @Override
+    public double getPerimeter() {
+        return a + h + Math.sqrt(a * a + h * h);
+    }
+
+    @Override
+    public void show() {
+        System.out.print("底 = "+a+",  ");
+        System.out.print("高 = "+h+",  ");
+        System.out.print("三角形面积为:" + getArea()+",  ");
+        System.out.println("三角形周长为:" + getPerimeter());
+    }
+}

+ 4 - 0
src/main/java/com/sf/part05/oop_07/Demo.java

@@ -0,0 +1,4 @@
+package main.java.com.sf.part05.oop_07;
+
+public class Demo {
+}

+ 18 - 0
src/main/java/com/sf/part05/oop_07/Employee.java

@@ -0,0 +1,18 @@
+package main.java.com.sf.part05.oop_07;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Employee {
+
+    private Integer id;
+    private String name;
+    private Integer age;
+    private Double salary;
+
+
+}

+ 50 - 0
src/main/java/com/sf/part05/oop_07/EmployeeServiceImpl.java

@@ -0,0 +1,50 @@
+package main.java.com.sf.part05.oop_07;
+
+public class EmployeeServiceImpl {
+
+    private Employee[] arr =  new Employee[5];
+    private int total;
+
+    public void add(Employee emp){
+        if (total < arr.length){
+            arr[total++] = emp;
+        }else {
+            // 扩容
+            Employee[] newArr = new Employee[arr.length * 2];
+            for (int i = 0; i < arr.length; i++) {
+                newArr[i] = arr[i];
+            }
+            newArr[total++] = emp;
+            arr = newArr;
+        }
+    }
+
+    public Employee[] get(MyPredicate myPredicate){
+        // 数组 承装满足条件的员工对象
+        Employee[] arrNew = new Employee[total];
+        int index = 0;
+        for (int i = 0; i < total; i++) {
+            if (myPredicate.test(arr[i])){
+                arrNew[index++] = arr[i];
+            }
+        }
+        return arrNew;
+    }
+
+    public Employee[] getName(MyPredicate myPredicate){
+        // 数组 承装满足条件的员工对象
+        Employee[] arrNew = new Employee[total];
+        int index = 0;
+        for (int i = 0; i < total; i++) {
+            if (myPredicate.test(arr[i])){
+                arrNew[index++] = arr[i];
+            }
+        }
+        return arrNew;
+    }
+
+
+    public  Employee[]  getArr(){
+        return arr;
+    }
+}

+ 75 - 0
src/main/java/com/sf/part05/oop_07/EmployeeServiceImplTest.java

@@ -0,0 +1,75 @@
+package main.java.com.sf.part05.oop_07;
+
+import java.util.Arrays;
+
+public class EmployeeServiceImplTest {
+    public static void main(String[] args) {
+        EmployeeServiceImpl employeeService = new EmployeeServiceImpl();
+        employeeService.add(new Employee(1001, "张三1", 51, 1999.1));
+        employeeService.add(new Employee(1002, "张三2", 52, 1999.2));
+        employeeService.add(new Employee(1003, "张三3", 53, 1999.3));
+        employeeService.add(new Employee(1004, "张三4", 54, 1999.4));
+        Employee[] arr = employeeService.getArr();
+        System.out.println(Arrays.toString(arr));
+
+//      方式一 :  匿名内部类
+        Employee[] employees1 = employeeService.get(new MyPredicate() {
+            @Override
+            public boolean test(Object obj) {
+                Employee e = null;
+                if (obj instanceof Employee) {
+                    e = (Employee) obj;
+                }
+                return e.getAge() > 52;
+            }
+        });
+        System.out.println(Arrays.toString(employees1));
+
+
+        // lambda表达式
+        Employee[] employees2 = employeeService.get(
+            obj -> {
+                Employee e = null;
+                if (obj instanceof Employee) {
+                    e = (Employee) obj;
+                }
+                return e.getAge() > 52;
+            }
+        );
+        System.out.println(Arrays.toString(employees2));
+
+
+        // 获取出名字等于张三3的员工  匿名内部类
+        Employee[] employeesByName1 = employeeService.getName(new MyPredicate() {
+            @Override
+            public boolean test(Object obj) {
+                Employee e = null;
+                if (obj instanceof Employee) {
+                    e = (Employee) obj;
+                }
+                return e.getName().equals("张三3");
+            }
+        });
+        System.out.println(Arrays.toString(employeesByName1));
+
+
+        // 获取出名字等于张三3的员工  lambda表达式
+        //  lambda  表达式可以省略参数类型
+        // 语法结构  (抽象方法的参数列表) -> {  方法体  }
+        // 前提  :  方法的入参是接口  (函数式接口)
+        Employee[] employeesByName2 = employeeService.getName(
+         obj -> ((Employee) obj).getName().equals("张三3")
+        );
+        System.out.println(Arrays.toString(employeesByName2));
+
+        // 获取出名字等于张三3的员工  匿名内部类转换 lambda表达式
+        Employee[] employeesByName3 = employeeService.getName(obj -> {
+            Employee e = null;
+            if (obj instanceof Employee) {
+                e = (Employee) obj;
+            }
+            return e.getName().equals("张三3");
+        });
+        System.out.println(Arrays.toString(employeesByName3));
+    }
+}

+ 20 - 0
src/main/java/com/sf/part05/oop_07/Inner03.java

@@ -0,0 +1,20 @@
+package main.java.com.sf.part05.oop_07;
+
+
+
+public class Inner03 {
+
+    public  void show(){
+        class AA{
+            public void showAA(){
+                System.out.println("AA");
+            }
+        }
+        new AA().showAA();
+    }
+
+    public static void main(String[] args) {
+        //  System.out.println("AA");  如何打印出AA
+        new Inner03().show();
+    }
+}

+ 11 - 0
src/main/java/com/sf/part05/oop_07/MyPredicate.java

@@ -0,0 +1,11 @@
+package main.java.com.sf.part05.oop_07;
+
+/**
+ * 接口中有且仅有一个抽象方法  -- 函数式接口
+ * @FunctionalInterface   标识符  -- 用来标识接口是函数式接口
+ * 作用  相当于 重写  @override
+ */
+@FunctionalInterface
+public interface MyPredicate {
+    boolean test(Object obj);
+}

+ 18 - 0
src/main/java/com/sf/part05/oop_07/Out01.java

@@ -0,0 +1,18 @@
+package main.java.com.sf.part05.oop_07;
+
+public class Out01 {
+
+    int num = 10;
+
+    class Inner01{
+        int innerNum = 10;
+    }
+
+    public static void main(String[] args) {
+        // innerNum
+        Out01 out01 = new Out01();
+        int innerNum = out01.new Inner01().innerNum;
+    }
+
+
+}

+ 22 - 0
src/main/java/com/sf/part05/oop_07/Out02.java

@@ -0,0 +1,22 @@
+package main.java.com.sf.part05.oop_07;
+
+public class Out02 {
+
+    int num = 10;
+
+  public static class Inner01{
+        int innerNum = 10;
+    }
+
+    public static void main(String[] args) {
+        // innerNum
+        Inner01 inner01 = new Out02.Inner01();
+        int innerNum = inner01.innerNum;
+
+        Out02.Inner01 inner011 = new Out02.Inner01();
+
+        Out02.Inner01 inner012 = new Out02.Inner01();
+    }
+
+
+}

+ 10 - 0
src/main/java/com/sf/part05/oop_07/Test.java

@@ -0,0 +1,10 @@
+package main.java.com.sf.part05.oop_07;
+
+public class Test {
+
+    public static void main(String[] args) {
+        // innerNum
+        Out02.Inner01 inner01 = new Out02.Inner01();
+
+    }
+}

+ 32 - 0
src/main/java/com/sf/part06/collection_01/Demo.java

@@ -0,0 +1,32 @@
+package main.java.com.sf.part06.collection_01;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 集合框架  :
+ *   collection  :单列集合
+ *          list接口   set接口
+ *   Collection接口里面的所有的方法  都需要会
+ *   map:双列集合
+ */
+public class Demo {
+    public static void main(String[] args) {
+        // 多态
+        Collection<String>  coll = new ArrayList<>();
+        Collection<String>  coll1 = new ArrayList<>();
+        coll.add("hello");
+        coll1.add("hello");
+        coll1.add("wwww");
+        coll.add("world");
+        coll.add("java");
+        System.out.println(coll);
+        boolean flag = coll.contains("hello");
+        boolean flag1 = coll.containsAll(coll1);
+        System.out.println(flag);
+        System.out.println(flag1);
+
+    }
+}

+ 15 - 0
src/main/java/com/sf/part06/collection_01/Student.java

@@ -0,0 +1,15 @@
+package main.java.com.sf.part06.collection_01;
+
+import lombok.Data;
+
+public class Student {
+    // 属性和行为
+    // 属性 静态的
+    // 行为  动态的
+
+    String name;
+
+    String  sex;
+
+    int age;
+}

+ 102 - 0
src/main/java/com/sf/part06/collection_02/Demo.java

@@ -0,0 +1,102 @@
+package main.java.com.sf.part06.collection_02;
+
+import java.util.*;
+
+public class Demo {
+    public static void main1(String[] args) {
+        Collection<String> coll = new ArrayList<>();
+        Collection<String> coll1 = new ArrayList<>();
+        Collection<String> coll2 = new ArrayList<>();
+
+        coll.add("小李广");
+        coll.add("扫地僧");
+        coll.add("石破天");
+        coll.add("佛地魔");
+        //集合转换为数组:集合的toArray()方法
+        Object[] objects = coll.toArray();
+        System.out.println("用数组返回coll中所有元素:" + Arrays.toString(objects));
+        // hashCode() 返回的是对象的哈希码  hash()
+        // 用于判断两个对象是否相等  hashcode
+        int i = coll.hashCode();
+        int i1 = coll1.hashCode();
+        int i2 = coll2.hashCode();
+        System.out.println(i);
+        System.out.println(i1);
+        System.out.println(i2);
+    }
+
+    public static void main2(String[] args) {
+        Collection<String> coll = new ArrayList<>();
+        coll.add("小李广");
+        coll.add("扫地僧");
+        coll.add("石破天");
+        coll.add("佛地魔");
+        // for增强
+        for (String s : coll) {
+            System.out.println(s);
+        }
+        Iterator<String> iterator = coll.iterator();
+        while (iterator.hasNext()) {
+            String next = iterator.next();
+            if(next.equals("扫地僧")){
+                iterator.remove();
+            }
+            System.out.println(next);
+        }
+        System.out.println(coll);
+    }
+
+    public static void main3(String[] args) {
+        List<String> coll = new ArrayList<>();
+        coll.add("abc");
+        coll.add("bcd");
+        coll.add("cde");
+        coll.add("aof");
+        System.out.println(coll);
+        for (int i = 0; i < coll.size(); i++) {
+            String str = coll.get(i);
+            if(str.contains("b")){
+                coll.remove(i);
+                i--;
+            }
+        }
+        System.out.println(coll);
+    }
+
+    public static void main4(String[] args) {
+        // String[] strs  = new String[m];
+        List<String> list = new ArrayList<>();  // 创建一个空数组
+        list.add("abc");
+    }
+
+    public static void main5(String[] args) {
+        List<String> list = new LinkedList<>();
+    }
+
+    public static void main6(String[] args) {
+        Vector<Integer> vec = new Vector<Integer>();
+        vec.add(1);
+        vec.add(2);
+        vec.add(3);
+        Enumeration<Integer> elements = vec.elements();
+        while (elements.hasMoreElements()){
+            Integer integer = elements.nextElement();
+            System.out.println(integer);
+        }
+    }
+
+    public static void main(String[] args) {
+        // HashSet  底层数据结构   数组+链表+红黑树       set底层就是map
+        // 负载因子  0.75F   为啥负载因子是0.75F  哈希冲突最小,泊松概率
+        // 默认初始容量16
+        // set  里面的方法的使用
+        //  set中元素的存储过程
+        //  set去重
+        // 链表转成红黑树  链表的长度大于8时候
+        // 红黑树转换成链表  链表的长度小于6时,哈希表的长度大于64.
+        // 哈希冲突   hash值相同
+        // 解决哈希冲突的办法:链地址法
+        Set<String> set = new HashSet<>();
+        set.add("abc");
+    }
+}

+ 55 - 0
src/main/java/com/sf/part06/collection_03/Demo.java

@@ -0,0 +1,55 @@
+package main.java.com.sf.part06.collection_03;
+
+import java.util.*;
+
+public class Demo {
+    public static void main1(String[] args) {
+//        LinkedHashSet<String> set = new LinkedHashSet<>();
+        // api    hashSet
+//        HashSet
+        TreeSet<String> set = new TreeSet<>(
+//                new Comparator<String>() {
+//            @Override
+//            public int compare(String o1, String o2) {
+//                return o2.compareTo(o1);
+//            }
+//        }
+                // lambda
+        (o1, o2) -> o2.compareTo(o1)
+        );
+        set.add("f");
+        set.add("a");
+        set.add("b");
+        set.add("c");
+        set.add("d");
+        set.add("e");
+        System.out.println(set);
+    }
+
+    public static void main2(String[] args) {
+        // 如果年龄相同按照名字进行排序
+        Set<User> set = new TreeSet<>(new Comparator<User>() {
+            @Override
+            public int compare(User o1, User o2) {
+                if(o1.getAge() == o2.getAge()){
+                    return o1.getName().compareTo(o2.getName());
+                }
+                return o1.getAge() - o2.getAge();
+                }
+        });
+        set.add(new User("a", 20));
+        set.add(new User("b", 20));
+        set.add(new User("c", 18));
+        set.add(new User("d", 18));
+        System.out.println(set);
+    }
+
+    public static void main(String[] args) {
+        Set<Person> set = new TreeSet<>();
+        set.add(new Person("a", 20));
+        set.add(new Person("b", 20));
+        set.add(new Person("c", 18));
+        set.add(new Person("d", 18));
+        System.out.println(set);
+    }
+}

+ 27 - 0
src/main/java/com/sf/part06/collection_03/Person.java

@@ -0,0 +1,27 @@
+package main.java.com.sf.part06.collection_03;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Person implements Comparable<Person> {
+
+    private String name;
+    private int age;
+
+    @Override
+    public int compareTo(Person person) {
+        // 年龄相同采用名字进行排序
+        if(person.getAge() == this.age){
+//     降序       return person.getName().compareTo(this.name);
+            return this.name.compareTo(person.getName());
+        }
+//   降序     return person.getAge() - this.age;
+        return this.age - person.getAge();
+    }
+}
+
+

+ 13 - 0
src/main/java/com/sf/part06/collection_03/User.java

@@ -0,0 +1,13 @@
+package main.java.com.sf.part06.collection_03;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class User {
+    private String name;
+    private int age;
+}

+ 38 - 0
src/main/java/com/sf/part06/map_04/Demo.java

@@ -0,0 +1,38 @@
+package main.java.com.sf.part06.map_04;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.BiConsumer;
+
+/*
+map:双列集合  ,存储键值对 Map<key,value>  userName,admin
+ */
+public class Demo {
+    public static void main(String[] args) {
+        Map<String,String> map = new HashMap<>();
+        map.put("admin","123");
+        map.put("root","456");
+        map.put("user","789");
+        System.out.println(map);
+        Set<Map.Entry<String, String>> entries = map.entrySet();
+        for (Map.Entry<String, String> entry : entries) {
+            System.out.println(entry);
+            System.out.println(entry.getKey()+" "+entry.getValue());
+        }
+        System.out.println("==================");
+        for (Map.Entry<String, String> entry : entries) {
+            System.out.println(entry);
+        }
+
+
+        map.forEach(new BiConsumer<String, String>() {
+            @Override
+            public void accept(String key, String value) {
+                System.out.println(key+" == "+value);
+                System.out.println(map.get(key));
+            }
+        });
+
+    }
+}

+ 117 - 0
src/main/java/com/sf/part06/map_05/Demo.java

@@ -0,0 +1,117 @@
+package main.java.com.sf.part06.map_05;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.*;
+
+public class Demo {
+    public static void main1(String[] args) {
+        Hashtable<String, String> hashtable = new Hashtable<>();
+        hashtable.put("1", "1");
+//        其他方法自行实现
+    }
+
+    public static void main2(String[] args) throws IOException {
+        Properties properties = new Properties();
+        // 读取资源文件
+        // 配置文件   用java去连接数据库  数据库的信息  url地址   用户名  密码
+        /*
+          jdbc.properties
+          jdbc_url = jdbc:mysql://localhost:3306/test
+          jdbc_username = root
+          jdbc_password = 123456
+         */
+        // 将jdbc_properties文件抽象File对象
+        File file = new File("src/main/java/com/sf/part06/map_05/jdbc_properties");
+        // 将jdbc_properties文件抽象File对象 将对象变成FileInputStream流
+        FileInputStream fileInputStream = new FileInputStream(file);
+        // 将文件加载到properties对象中
+        properties.load(fileInputStream);
+        // 基于key 获取value
+        System.out.println(properties.getProperty("jdbc_url"));
+        System.out.println(properties.getProperty("jdbc_username"));
+        System.out.println(properties.getProperty("jdbc_password"));
+    }
+
+    public static void main3(String[] args) {
+        List<User> list = new ArrayList<>();
+        list.add(new User("c", 20));
+        list.add(new User("d", 20));
+        list.add(new User("a", 19));
+        list.add(new User("b", 19));
+        Collections.sort(list);
+        System.out.println(list);
+    }
+
+    public static void main4(String[] args) {
+        List<Student> list = new ArrayList<>();
+        list.add(new Student("c", 20));
+        list.add(new Student("d", 20));
+        list.add(new Student("a", 19));
+        list.add(new Student("b", 19));
+        Collections.sort(list, new Comparator<Student>() { // 匿名内部类
+            @Override
+            public int compare(Student s1, Student s2) {
+                if (s1.getAge() == s2.getAge()) {
+                    return s1.getName().compareTo(s2.getName());
+                }
+                return s1.getAge() - s2.getAge();
+            }
+        });
+        System.out.println(list);
+    }
+
+    public static void main5(String[] args) {
+        List<Integer> list = new ArrayList<>();
+        list.add(1);
+        list.add(2);
+        list.add(3);
+        list.add(4);
+        Collections.sort(list);
+        int i = Collections.binarySearch(list, 3);
+        System.out.println(i);
+    }
+
+    public static void main6(String[] args) {
+        List<String> src = new ArrayList<>();
+        List<String> dest = new ArrayList<>();
+        src.add("a");
+        src.add("b");
+        src.add("c");
+        dest.add("1");
+        dest.add("2");
+        dest.add("3");
+        dest.add("4");
+        System.out.println(src.size());
+        System.out.println(dest.size());
+        Collections.copy(dest,src);
+        System.out.println(dest);
+    }
+
+    public static void main7(String[] args) {
+        List<String> list = new ArrayList<>();
+        list.add("a");
+        list.add("b");
+        list.add("c");
+        List<String> list1 = Collections.unmodifiableList(list);
+        System.out.println(list);
+        System.out.println(list1);
+//        list1.set(0,"d");
+        list.add(0,"d");
+        System.out.println(list1);
+    }
+
+    public static void main8(String[] args) {
+        List<String> list1 = new ArrayList<>();
+        List<String> list = Collections.synchronizedList(list1);
+        list.add("a");
+        list.add("b");
+        list.add("c");
+        list.add("d");
+        list.add("e");
+        list.add("f");
+        System.out.println(list.subList(1, 4));
+    }
+}

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff