《Java核心技术》(Core Java)(第12版)书中代码
- 本书网站:https://horstmann.com/corejava/
- 源代码:https://horstmann.com/corejava/corejava.zip
- 笔记:https://zzy979.github.io/posts/java-note-index/
- JDK 17
- Python 3
方式一:在命令行中编译和运行。例如:
cd v1ch02/Welcome
javac Welcome.java
java Welcome
方式二:使用工具脚本。用法:
python -m corejava run {chapter}/{target}
其中,chapter为章节名称(例如v1ch02),target为示例程序名称,格式为[subdir/][package.]classname
(例如Welcome/Welcome)。例如:
python -m corejava run v1ch02/Welcome/Welcome
python -m corejava run v1ch05/arrayList.ArrayListTest
在项目根目录下执行:
python -m corejava test [chapter...]
- 程序清单3-1 FirstSample/FirstSample.java
- Constants/Constants.java
- Constants/Constants2.java
- 程序清单3-2 InputTest/InputTest.java
- 程序清单3-3 Retirement/Retirement.java
- 程序清单3-4 Retirement2/Retirement2.java
- 程序清单3-5 LotteryOdds/LotteryOdds.java
- 程序清单3-6 BigIntegerTest/BigIntegerTest.java
- Message/Message.java
- 程序清单3-7 LotteryDrawing/LotteryDrawing.java
- 程序清单3-8 CompoundInterest/CompoundInterest.java
- 程序清单3-9 LotteryArray/LotteryArray.java
- 程序清单4-1 CalendarTest/CalendarTest.java
- 程序清单4-2 EmployeeTest/EmployeeTest.java
- 程序清单4-3 StaticTest/StaticTest.java
- 程序清单4-4 ParamTest/ParamTest.java
- 程序清单4-5 ConstructorTest/ConstructorTest.java
- 程序清单4-6 RecordTest/RecordTest.java
- 程序清单4-7 PackageTest/PackageTest.java
- 程序清单4-8 PackageTest/com/horstmann/corejava/Employee.java
- 程序清单5-1 inheritance/ManagerTest.java
- 程序清单5-2 inheritance/Employee.java
- 程序清单5-3 inheritance/Manager.java
- 程序清单5-4 equals/EqualsTest.java
- 程序清单5-5 equals/Employee.java
- 程序清单5-6 equals/Manager.java
- 程序清单5-7 arrayList/ArrayListTest.java
- 程序清单5-8 abstractClasses/PersonTest.java
- 程序清单5-9 abstractClasses/Person.java
- 程序清单5-10 abstractClasses/Employee.java
- 程序清单5-11 abstractClasses/Student.java
- 程序清单5-12 enums/EnumTest.java
- 程序清单5-13 sealed/SealedTest.java
- 程序清单5-14 resources/ResourceTest.java
- 程序清单5-15 reflection/ReflectionTest.java
- 程序清单5-16 objectAnalyzer/ObjectAnalyzerTest.java
- 程序清单5-17 objectAnalyzer/ObjectAnalyzer.java
- 程序清单5-18 arrays/CopyOfTest.java
- 程序清单5-19 methods/MethodTableTest.java
- 程序清单6-1 interfaces/EmployeeSortTest.java
- 程序清单6-2 interfaces/Employee.java
- 程序清单6-3 timer/TimerTest.java
- 程序清单6-4 clone/CloneTest.java
- 程序清单6-5 clone/Employee.java
- 程序清单6-6 lambda/LambdaTest.java
- comparator/ComparatorTest.java
- 程序清单6-7 innerClass/InnerClassTest.java
- localInnerClass/LocalInnerClassTest.java
- 程序清单6-8 anonymousInnerClass/AnonymousInnerClassTest.java
- 程序清单6-9 staticInnerClass/StaticInnerClassTest.java
- serviceLoader/ServiceLoaderTest.java
- 程序清单6-10 proxy/ProxyTest.java
- except/ExceptTest.java
- 程序清单7-1 stackTrace/StackTraceTest.java
- exceptional/ExceptionalTest.java
- assertion/AssertionTest.java
- 程序清单7-2 logging/LoggingImageViewer.java
- pair/Pair.java
- 程序清单8-1 pair1/PairTest1.java
- 程序清单8-2 pair2/PairTest2.java
- bridgeMethod/BridgeMethodTest.java
- genericAlgorithms/Pair.java
- limitations/NoGenericArray.java
- genericAlgorithms/GenericAlgorithms.java
- limitations/DefeatCheckedExceptionChecking.java
- 程序清单8-3 pair3/PairTest3.java
- 程序清单8-4 genericReflection/GenericReflectionTest.java
- 程序清单8-5 genericReflection/TypeLiterals.java
- circularArrayQueue/CircularArrayQueue.java
- circularArrayQueue/CircularArrayQueueTest.java
- 程序清单9-1 linkedList/LinkedListTest.java
- 程序清单9-2 set/SetTest.java
- 程序清单9-3 treeSet/TreeSetTest.java
- 程序清单9-4 treeSet/Item.java
- 程序清单9-5 priorityQueue/PriorityQueueTest.java
- 程序清单9-6 map/MapTest.java
- 程序清单9-7 shuffle/ShuffleTest.java
- properties/ImageViewer.java
- 程序清单9-8 sieve/Sieve.java
- 程序清单9-9 sieve/sieve.cpp
- 程序清单10-1 simpleFrame/SimpleFrameTest.java
- sizedFrame/SizedFrame.java
- 程序清单10-2 notHelloWorld/NotHelloWorldComponent.java
- 程序清单10-3 draw/DrawComponent.java
- fill/FillComponent.java
- listFonts/ListFonts.java
- 程序清单10-4 font/FontComponent.java
- image/ImageComponent.java
- 程序清单10-5 button/ButtonFrame.java
- plaf/PlafFrame.java
- action/ActionFrame.java
- 程序清单10-6 mouse/MouseComponent.java
- 程序清单10-7 preferences/ImageViewerFrame.java
为方便起见,将第10、11章中所有Swing示例集合打包成一个JAR文件,可以直接通过GUI选择要运行的示例。
打包命令:
cd swing-demos
bash build_swing_demos.sh
运行命令:
java -jar swing-demos.jar
- layoutManager/FlowLayoutFrame.java
- layoutManager/BorderLayoutFrame.java
- calculator/CalculatorPanel.java
- 程序清单11-1 text/TextComponentFrame.java
- 程序清单11-2 checkBox/CheckBoxFrame.java
- 程序清单11-3 radioButton/RadioButtonFrame.java
- border/BorderFrame.java
- 程序清单11-4 comboBox/ComboBoxFrame.java
- 程序清单11-5 slider/SliderFrame.java
- 程序清单11-6 menu/MenuFrame.java
- toolBar/ToolBarFrame.java
- 程序清单11-7 gridbag/FontFrame.java
- 程序清单11-8 gridbag/GBC.java
- 程序清单11-9 circleLayout/CircleLayout.java
- 程序清单11-10 circleLayout/CircleLayoutFrame.java
- optionDialog/OptionDialogFrame.java
- 程序清单11-11 dialog/DialogFrame.java
- 程序清单11-12 dialog/AboutDialog.java
- 程序清单11-13 dataExchange/DataExchangeFrame.java
- 程序清单11-14 dataExchange/PasswordChooser.java
- fileChooser/ImageViewerFrame.java
- fileChooser/ImagePreviewer.java
- fileChooser/FileIconView.java
- colorChooser/ColorChooserPanel.java
- eventTracer/EventTracer.java
- robot/RobotTest.java
- bounce/Bounce.java
- bounceThread/BounceThread.java
- 程序清单12-1 threads/ThreadTest.java
- 程序清单12-2 threads/Bank.java
- 程序清单12-3 unsynch/UnsynchBankTest.java
- lock/Bank.java
- lock/LockBankTest.java
- 程序清单12-4 synch/Bank.java
- synch/SynchBankTest.java
- 程序清单12-5 synch2/Bank.java
- synch2/SynchBankTest2.java
- 程序清单12-6 blockingQueue/BlockingQueueTest.java
- 程序清单12-7 concurrentHashMap/ConcurrentHashMapDemo.java
- future/FutureTest.java
- threadPool/ThreadPoolTest.java
- 程序清单12-8 executors/ExecutorDemo.java
- 程序清单12-9 forkJoin/ForkJoinTest.java
- 程序清单12-10 completableFutures/CompletableFutureDemo.java
- 程序清单12-11 swingWorker/SwingWorkerTest.java
- process/ReadDir.java
- 程序清单1-1 streams/CountLongWords.java
- 程序清单1-2 streams/CreatingStreams.java
- 程序清单1-3 optional/OptionalTest.java
- 程序清单1-4 collecting/CollectingResults.java
- 程序清单1-5 collecting/CollectingIntoMaps.java
- 程序清单1-6 collecting/DownstreamCollectors.java
- 程序清单1-7 streams/PrimitiveTypeStreams.java
- 程序清单1-8 parallel/ParallelStreams.java
- 程序清单2-1 textFile/TextFileTest.java
- 程序清单2-2 randomAccess/RandomAccessTest.java
- 程序清单2-3 serial/ObjectStreamTest.java
- serializationTweaks/ObjectStreamTest.java
- 程序清单2-4 serialClone/SerialCloneTest.java
- findDirectories/FindDirectories.java
- zip/ZipTest.java
- 程序清单2-5 memoryMap/MemoryMapTest.java
- randomAccess2/RandomAccessTest.java
- 程序清单2-6 match/HrefMatch.java
- 程序清单2-7 regex/RegexTest.java
- 程序清单3-1 dom/JSONConverter.java
- dom/DOMTreeFrame.java
- 程序清单3-2 read/XMLReadTest.java
- 程序清单3-3 read/config.xml
- read/config-schema.xml
- 程序清单3-4 config.dtd
- 程序清单3-5 config.xsd
- readOld/GridBagPane.java
- 程序清单3-6 xpath/XPathTest.java
- xpathOld/XPathFrame.java
- 程序清单3-7 sax/SAXTest.java
- 程序清单3-8 stax/StAXTest.java
- 程序清单3-9 write/XMLWriteTest.java
- writeOld/XMLWriteFrame.java
- 程序清单3-10 transform/makehtml.xsl
- 程序清单3-11 transform/makeprop.xsl
- 程序清单3-12 transform/TransformTest.java
- 程序清单4-1 socket/SocketTest.java
- 程序清单4-2 inetAddress/InetAddressTest.java
- 程序清单4-3 server/EchoServer.java
- 程序清单4-4 threaded/ThreadedEchoServer.java
- 程序清单4-5 interruptible/InterruptibleSocketTest.java
- 程序清单4-6 urlConnection/URLConnectionTest.java
- 程序清单4-7 post/PostTest.java
- 程序清单4-8 client/HttpClientTest.java
- 程序清单4-9 mail/MailTest.java
- 程序清单5-1 test/TestDB.java
- 程序清单5-2 exec/ExecSQL.java
- 程序清单5-3 query/QueryTest.java
- 程序清单5-4 view/ViewDB.java
- 程序清单6-1 timeline/TimeLine.java
- 程序清单6-2 localdates/LocalDates.java
- 程序清单6-3 zonedtimes/ZonedTimes.java
- 程序清单6-4 formatting/Formatting.java
- 程序清单8-1 script/ScriptTest.java
- 程序清单8-2 buttons1/ButtonFrame.java
- compiler/StringSource.java
- compiler/ByteArrayClass.java
- compiler/ByteArrayClassLoader.java
- 程序清单8-3 compiler/CompilerTest.java
- 程序清单8-4 buttons2/ButtonFrame.java
- 程序清单8-5 buttons2/action.properties
- 程序清单8-6 runtimeAnnotations/ActionListenerInstaller.java
- 程序清单8-7 buttons3/ButtonFrame.java
- 程序清单8-8 runtimeAnnotations/ActionListenerFor.java
- sourceAnnotations/ToStringAnnotationProcessor.java
- rect/SourceLevelAnnotationDemo.java
- 程序清单8-9 bytecodeAnnotations/EntryLogger.java
- 程序清单8-10 set/Item.java
- 程序清单8-11 set/SetTest.java
- 程序清单8-12 bytecodeAnnotations/EntryLoggingAgent.java