{"id":61891,"url":"https://github.com/labex-labs/java-free-tutorials","name":"java-free-tutorials","description":"Free Java tutorials for beginners with 54 interactive lessons. Easy-to-follow programming guides with hands-on practice exercises.","projects_count":57,"last_synced_at":"2026-04-09T10:00:19.774Z","repository":{"id":241206126,"uuid":"804635946","full_name":"labex-labs/java-free-tutorials","owner":"labex-labs","description":"Free Java tutorials for beginners with 54 interactive lessons. Easy-to-follow programming guides with hands-on practice exercises.","archived":false,"fork":false,"pushed_at":"2025-10-23T00:25:16.000Z","size":109,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-02-14T05:49:37.593Z","etag":null,"topics":["awesome","awesome-list","beginner-tutorials","coding-education","core-java","exercises","free","free-tutorials","hands-on","java","java-programming","labex","object-oriented-programming","oop-concepts","open-source-learning","programming","programming-language","software-development","tutorials"],"latest_commit_sha":null,"homepage":"https://labex.io/learn/java","language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/labex-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-05-23T01:09:57.000Z","updated_at":"2025-10-23T00:25:20.000Z","dependencies_parsed_at":"2025-11-20T14:00:41.537Z","dependency_job_id":null,"html_url":"https://github.com/labex-labs/java-free-tutorials","commit_stats":null,"previous_names":["labex-labs/java-free-tutorials"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/labex-labs/java-free-tutorials","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/labex-labs%2Fjava-free-tutorials","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/labex-labs%2Fjava-free-tutorials/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/labex-labs%2Fjava-free-tutorials/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/labex-labs%2Fjava-free-tutorials/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/labex-labs","download_url":"https://codeload.github.com/labex-labs/java-free-tutorials/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/labex-labs%2Fjava-free-tutorials/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29856795,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T08:51:08.701Z","status":"ssl_error","status_checked_at":"2026-02-26T08:50:19.607Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"readme":"# Practice Java Free Tutorials\n\n## Languages\n\n🇨🇳 [简体中文](README_zh.md) 🇯🇵 [日本語](README_ja.md) 🇪🇸 [Español](README_es.md) 🇫🇷 [Français](README_fr.md) 🇩🇪 [Deutsch](README_de.md) 🇷🇺 [Русский](README_ru.md) 🇰🇷 [한국어](README_ko.md) 🇧🇷 [Português](README_pt.md) 🇺🇸 [English](README.md) \n\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"128px\" src=\"https://file.labex.io/path/vBtgM8cNsQFn.png\"\u003e\n\u003c/div\u003e\n\nLearn Java, a versatile, object-oriented programming language, with this comprehensive learning path. Designed for beginners, these Java courses provide a structured roadmap to master OOP concepts, Java syntax, and application development. Gain real-world experience by building Java applications through hands-on, practical coding exercises in an interactive Java playground.\n\n|   Index | Name                                                                                                                                                                                                                 | Difficulty   | Tutorial Link                                                                                                                         |\n|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------|---------------------------------------------------------------------------------------------------------------------------------------|\n|      01 | [📖 Introduction to Java Programming](https://labex.io/tutorials/java-introduction-to-java-programming-178546)                                                                                                       | Advanced     | [🔗 View](https://labex.io/tutorials/java-introduction-to-java-programming-178546)                                                    |\n|      02 | [📖 Variables and Operators in Java](https://labex.io/tutorials/java-variables-and-operators-in-java-178553)                                                                                                         | Intermediate | [🔗 View](https://labex.io/tutorials/java-variables-and-operators-in-java-178553)                                                     |\n|      03 | [📖 Java Conditional Expressions Fundamentals](https://labex.io/tutorials/java-java-conditional-expressions-fundamentals-178545)                                                                                     | Beginner     | [🔗 View](https://labex.io/tutorials/java-java-conditional-expressions-fundamentals-178545)                                           |\n|      04 | [📖 Recursion and Loops](https://labex.io/tutorials/java-recursion-and-loops-178552)                                                                                                                                 | Beginner     | [🔗 View](https://labex.io/tutorials/java-recursion-and-loops-178552)                                                                 |\n|      05 | [📖 Methods \u0026 Parameters and Object](https://labex.io/tutorials/java-methods-parameters-and-object-178547)                                                                                                           | Beginner     | [🔗 View](https://labex.io/tutorials/java-methods-parameters-and-object-178547)                                                       |\n|      06 | [📖 Spy in Mockito](https://labex.io/tutorials/java-spy-in-mockito-117989)                                                                                                                                           | Beginner     | [🔗 View](https://labex.io/tutorials/java-spy-in-mockito-117989)                                                                      |\n|      07 | [📖 Reading a CSV File](https://labex.io/tutorials/java-reading-a-csv-file-117982)                                                                                                                                   | Beginner     | [🔗 View](https://labex.io/tutorials/java-reading-a-csv-file-117982)                                                                  |\n|      08 | [📖 Java Long Compare Method](https://labex.io/tutorials/java-java-long-compare-method-117868)                                                                                                                       | Beginner     | [🔗 View](https://labex.io/tutorials/java-java-long-compare-method-117868)                                                            |\n|      09 | [📖 Convert Character to Lowercase in Java](https://labex.io/tutorials/java-convert-character-to-lowercase-in-java-117580)                                                                                           | Beginner     | [🔗 View](https://labex.io/tutorials/java-convert-character-to-lowercase-in-java-117580)                                              |\n|      10 | [📖 Determining Space Characters in Java](https://labex.io/tutorials/java-determining-space-characters-in-java-117547)                                                                                               | Beginner     | [🔗 View](https://labex.io/tutorials/java-determining-space-characters-in-java-117547)                                                |\n|      11 | [📖 How to Find Maximum Value Map](https://labex.io/tutorials/java-how-to-find-maximum-value-map-117436)                                                                                                             | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-find-maximum-value-map-117436)                                                       |\n|      12 | [📖 How to Convert Enum to String](https://labex.io/tutorials/java-how-to-convert-enum-to-string-117421)                                                                                                             | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-convert-enum-to-string-117421)                                                       |\n|      13 | [📖 Resolving 'Could Not Find or Load Main Class' Error in Java](https://labex.io/tutorials/java-resolving-could-not-find-or-load-main-class-error-in-java-117401)                                                   | Beginner     | [🔗 View](https://labex.io/tutorials/java-resolving-could-not-find-or-load-main-class-error-in-java-117401)                           |\n|      14 | [📖 Convert Integer List to Int Array](https://labex.io/tutorials/java-convert-integer-list-to-int-array-117397)                                                                                                     | Beginner     | [🔗 View](https://labex.io/tutorials/java-convert-integer-list-to-int-array-117397)                                                   |\n|      15 | [📖 Comparator and Comparable](https://labex.io/tutorials/java-comparator-and-comparable-117394)                                                                                                                     | Beginner     | [🔗 View](https://labex.io/tutorials/java-comparator-and-comparable-117394)                                                           |\n|      16 | [📖 Check if Input Is Integer](https://labex.io/tutorials/java-check-if-input-is-integer-117391)                                                                                                                     | Beginner     | [🔗 View](https://labex.io/tutorials/java-check-if-input-is-integer-117391)                                                           |\n|      17 | [📖 How to resolve 'cannot access class' error](https://labex.io/tutorials/java-how-to-resolve-cannot-access-class-error-417323)                                                                                     | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-resolve-cannot-access-class-error-417323)                                            |\n|      18 | [📖 How to get the current date and next date using LocalDate in Java](https://labex.io/tutorials/java-how-to-get-the-current-date-and-next-date-using-localdate-in-java-414036)                                     | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-get-the-current-date-and-next-date-using-localdate-in-java-414036)                   |\n|      19 | [📖 How to handle 'java.time.format.DateTimeParseException'](https://labex.io/tutorials/java-how-to-handle-java-time-format-datetimeparseexception-417320)                                                           | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-handle-java-time-format-datetimeparseexception-417320)                               |\n|      20 | [📖 How to resolve 'cannot find symbol' error in Java](https://labex.io/tutorials/java-how-to-resolve-cannot-find-symbol-error-in-java-415709)                                                                       | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-resolve-cannot-find-symbol-error-in-java-415709)                                     |\n|      21 | [📖 How to split a string into an ArrayList using a delimiter in Java](https://labex.io/tutorials/java-how-to-split-a-string-into-an-arraylist-using-a-delimiter-in-java-415655)                                     | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-split-a-string-into-an-arraylist-using-a-delimiter-in-java-415655)                   |\n|      22 | [📖 How to work with Unicode characters in Java](https://labex.io/tutorials/java-how-to-work-with-unicode-characters-in-java-414959)                                                                                 | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-work-with-unicode-characters-in-java-414959)                                         |\n|      23 | [📖 How to print a Java boolean result](https://labex.io/tutorials/java-how-to-print-a-java-boolean-result-414108)                                                                                                   | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-print-a-java-boolean-result-414108)                                                  |\n|      24 | [📖 How to handle invalid user input in a Java program](https://labex.io/tutorials/java-how-to-handle-invalid-user-input-in-a-java-program-414054)                                                                   | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-handle-invalid-user-input-in-a-java-program-414054)                                  |\n|      25 | [📖 How to handle division by zero in Java programs](https://labex.io/tutorials/java-how-to-handle-division-by-zero-in-java-programs-414047)                                                                         | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-handle-division-by-zero-in-java-programs-414047)                                     |\n|      26 | [📖 How to print variable type in Java](https://labex.io/tutorials/java-how-to-print-variable-type-in-java-421459)                                                                                                   | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-print-variable-type-in-java-421459)                                                  |\n|      27 | [📖 How to compare Java objects based on multiple attributes](https://labex.io/tutorials/java-how-to-compare-java-objects-based-on-multiple-attributes-417392)                                                       | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-compare-java-objects-based-on-multiple-attributes-417392)                            |\n|      28 | [📖 How to configure ObjectMapper to ignore unknown properties in JSON in Java](https://labex.io/tutorials/java-how-to-configure-objectmapper-to-ignore-unknown-properties-in-json-in-java-417583)                   | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-configure-objectmapper-to-ignore-unknown-properties-in-json-in-java-417583)          |\n|      29 | [📖 How to read JSON file from relative path in Java](https://labex.io/tutorials/java-how-to-read-json-file-from-relative-path-in-java-417587)                                                                       | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-read-json-file-from-relative-path-in-java-417587)                                    |\n|      30 | [📖 How to handle null values when joining Java strings](https://labex.io/tutorials/java-how-to-handle-null-values-when-joining-java-strings-417590)                                                                 | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-handle-null-values-when-joining-java-strings-417590)                                 |\n|      31 | [📖 How to fix 'no main manifest attribute' error in Java](https://labex.io/tutorials/java-how-to-fix-no-main-manifest-attribute-error-in-java-417707)                                                               | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-fix-no-main-manifest-attribute-error-in-java-417707)                                 |\n|      32 | [📖 How to fix 'package does not exist' error in Java](https://labex.io/tutorials/java-how-to-fix-package-does-not-exist-error-in-java-417708)                                                                       | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-fix-package-does-not-exist-error-in-java-417708)                                     |\n|      33 | [📖 How to set time zone for LocalDate in Java](https://labex.io/tutorials/java-how-to-set-time-zone-for-localdate-in-java-417752)                                                                                   | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-set-time-zone-for-localdate-in-java-417752)                                          |\n|      34 | [📖 How to create Java arrays with fixed size](https://labex.io/tutorials/java-how-to-create-java-arrays-with-fixed-size-418028)                                                                                     | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-create-java-arrays-with-fixed-size-418028)                                           |\n|      35 | [📖 How to manage Java project structure](https://labex.io/tutorials/java-how-to-manage-java-project-structure-419476)                                                                                               | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-manage-java-project-structure-419476)                                                |\n|      36 | [📖 Java Arrays and ArrayLists](https://labex.io/tutorials/java-java-arrays-and-arraylists-413820)                                                                                                                   | Beginner     | [🔗 View](https://labex.io/tutorials/java-java-arrays-and-arraylists-413820)                                                          |\n|      37 | [📖 Abstraction and Interface](https://labex.io/tutorials/java-abstraction-and-interface-178542)                                                                                                                     | Beginner     | [🔗 View](https://labex.io/tutorials/java-abstraction-and-interface-178542)                                                           |\n|      38 | [📖 Access Modifiers and Inheritance](https://labex.io/tutorials/java-access-modifiers-and-inheritance-178543)                                                                                                       | Beginner     | [🔗 View](https://labex.io/tutorials/java-access-modifiers-and-inheritance-178543)                                                    |\n|      39 | [📖 Class and Object](https://labex.io/tutorials/java-class-and-object-178544)                                                                                                                                       | Beginner     | [🔗 View](https://labex.io/tutorials/java-class-and-object-178544)                                                                    |\n|      40 | [📖 Number, String and Array](https://labex.io/tutorials/java-number-string-and-array-178548)                                                                                                                        | Beginner     | [🔗 View](https://labex.io/tutorials/java-number-string-and-array-178548)                                                             |\n|      41 | [📖 Overloading and Overriding](https://labex.io/tutorials/java-overloading-and-overriding-178549)                                                                                                                   | Beginner     | [🔗 View](https://labex.io/tutorials/java-overloading-and-overriding-178549)                                                          |\n|      42 | [📖 Your First Java Lab](https://labex.io/tutorials/java-your-first-java-lab-411751)                                                                                                                                 | Advanced     | [🔗 View](https://labex.io/tutorials/java-your-first-java-lab-411751)                                                                 |\n|      43 | [📖 Java Data Types and Basic Operations](https://labex.io/tutorials/java-java-data-types-and-basic-operations-413744)                                                                                               | Intermediate | [🔗 View](https://labex.io/tutorials/java-java-data-types-and-basic-operations-413744)                                                |\n|      44 | [📖 Java Control Flow: Conditionals and Loops](https://labex.io/tutorials/java-java-control-flow-conditionals-and-loops-413751)                                                                                      | Beginner     | [🔗 View](https://labex.io/tutorials/java-java-control-flow-conditionals-and-loops-413751)                                            |\n|      45 | [📖 Java Methods and Basic Object-Oriented Programming](https://labex.io/tutorials/java-java-methods-and-basic-object-oriented-programming-413809)                                                                   | Beginner     | [🔗 View](https://labex.io/tutorials/java-java-methods-and-basic-object-oriented-programming-413809)                                  |\n|      46 | [📖 How to find a word in a Java String using the indexOf() method](https://labex.io/tutorials/java-how-to-find-a-word-in-a-java-string-using-the-indexof-method-414025)                                             | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-find-a-word-in-a-java-string-using-the-indexof-method-414025)                        |\n|      47 | [📖 Java Scanner Input Challenge](https://labex.io/tutorials/java-java-scanner-input-challenge-413835)                                                                                                               | Beginner     | [🔗 View](https://labex.io/tutorials/java-java-scanner-input-challenge-413835)                                                        |\n|      48 | [📖 Java ArrayList Shopping Cart Challenge](https://labex.io/tutorials/java-java-arraylist-shopping-cart-challenge-413849)                                                                                           | Beginner     | [🔗 View](https://labex.io/tutorials/java-java-arraylist-shopping-cart-challenge-413849)                                              |\n|      49 | [📖 Java Book Class Challenge](https://labex.io/tutorials/java-java-book-class-challenge-413850)                                                                                                                     | Beginner     | [🔗 View](https://labex.io/tutorials/java-java-book-class-challenge-413850)                                                           |\n|      50 | [📖 Java Fahrenheit to Celsius Conversion](https://labex.io/tutorials/java-java-fahrenheit-to-celsius-conversion-413851)                                                                                             | Beginner     | [🔗 View](https://labex.io/tutorials/java-java-fahrenheit-to-celsius-conversion-413851)                                               |\n|      51 | [📖 Java FizzBuzz Challenge](https://labex.io/tutorials/java-java-fizzbuzz-challenge-413852)                                                                                                                         | Beginner     | [🔗 View](https://labex.io/tutorials/java-java-fizzbuzz-challenge-413852)                                                             |\n|      52 | [📖 How to convert a Long to a double in Java](https://labex.io/tutorials/java-how-to-convert-a-long-to-a-double-in-java-413969)                                                                                     | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-convert-a-long-to-a-double-in-java-413969)                                           |\n|      53 | [📖 How to create a mutable List from a Java array without affecting the original array](https://labex.io/tutorials/java-how-to-create-a-mutable-list-from-a-java-array-without-affecting-the-original-array-413983) | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-create-a-mutable-list-from-a-java-array-without-affecting-the-original-array-413983) |\n|      54 | [📖 How to create a new Java file in the terminal](https://labex.io/tutorials/java-how-to-create-a-new-java-file-in-the-terminal-413984)                                                                             | Beginner     | [🔗 View](https://labex.io/tutorials/java-how-to-create-a-new-java-file-in-the-terminal-413984)                                       |\n\n## More\n\n- 🔗 [Java Learn more about](https://labex.io/skilltrees/java)\n- 🔗 [Awesome Programming Courses](https://github.com/labex-labs/awesome-programming-courses)\n- 🔗 [Awesome Programming Projects](https://github.com/labex-labs/awesome-programming-projects)\n\n","created_at":"2024-06-13T01:07:50.968Z","updated_at":"2026-04-09T10:00:19.775Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["More","More Free Tutorials","Languages"],"sub_categories":[],"projects_url":"https://awesome.ecosyste.ms/api/v1/lists/labex-labs%2Fjava-free-tutorials/projects"}