☕
TechLearn
Java Tutorial
Back to Home
What is Java?Features of JavaUses of JavaJava Editions (Java SE, EE, ME)JDK, JRE and JVMJava ArchitecturePlatform IndependenceBytecodeHow Java WorksFirst Java ProgramJava Compilation ProcessJava Execution FlowJava InstallationSetting JAVA_HOMEJava Environment SetupJava Naming ConventionsJava KeywordsJava Reserved WordsJava IdentifiersJava Unicode SystemJava CommentsJava Coding Standards
Variables in JavaData Types in JavaPrimitive Data TypesNon-Primitive Data TypesLiteralsType CastingWidening CastingNarrowing CastingOperatorsArithmetic OperatorsRelational OperatorsLogical OperatorsBitwise OperatorsAssignment OperatorsUnary OperatorsTernary Operatorinstanceof OperatorInput and OutputScanner ClassBufferedReaderConsole Inputprintf()Escape SequencesCommand Line Arguments
Control Statementsif Statementif-else StatementNested ifswitch Statementswitch Expressionfor Loopwhile Loopdo-while LoopEnhanced for Loopbreak Statementcontinue Statementreturn Statement
OOP ConceptsClassesObjectsObject CreationDefault ConstructorParameterized ConstructorConstructor OverloadingCopy Constructorthis Keywordstatic Keywordfinal KeywordAccess ModifiersEncapsulationSingle InheritanceMultilevel InheritanceHierarchical InheritanceMethod Overridingsuper KeywordCompile-time PolymorphismRuntime PolymorphismAbstractionAbstract ClassInterfaceMultiple Inheritance using InterfaceAssociationAggregationCompositionObject ClassAnonymous ObjectInitialization BlocksNested ClassesInner ClassesAnonymous Inner ClassesStatic Nested Classes
Array BasicsOne-Dimensional ArrayTwo-Dimensional ArrayMultidimensional ArrayJagged ArrayArray InitializationArray TraversalArray SortingArray SearchingArrays ClassCopying ArraysPassing Arrays to MethodsReturning Arraysvarargs
String ClassString PoolImmutable StringMutable StringString MethodsString Comparisonequals() vs ==StringBufferStringBuilderStringTokenizerStringJoinerText BlocksUnicode HandlingRegular ExpressionsPattern ClassMatcher Class
Exception Basicstry-catchMultiple catchfinallythrowthrowsCustom ExceptionChecked ExceptionUnchecked ExceptionError vs ExceptionStack Tracetry-with-resourcesException PropagationChained Exceptions
Package ConceptBuilt-in PackagesUser-defined PackagesimportStatic ImportPackage ProtectionJAR FilesManifest File
Stack MemoryHeap MemoryMetaspaceJVM Memory ModelGarbage CollectionGC AlgorithmsMemory Leakfinalize()Reference Types (Weak, Soft, Phantom)
Collections OverviewIterableCollection InterfaceArrayListLinkedListVectorStackQueue InterfacePriorityQueueDequeArrayDequeHashSetLinkedHashSetTreeSetSortedSetNavigableSetHashMapLinkedHashMapTreeMapHashtableConcurrentHashMapWeakHashMapIdentityHashMapEnumMapCollections ClassComparableComparatorIteratorListIteratorSpliteratorFail-Fast vs Fail-SafeImmutable CollectionsSynchronized Collections
Generic ClassGeneric MethodType ParametersBounded TypesWildcardsUpper BoundLower BoundType ErasureGeneric InterfaceRaw Types
Process vs ThreadThread BasicsCreating ThreadsThread LifecycleThread PriorityThread SchedulerSynchronizationsynchronized KeywordInter-thread Communicationwait()notify()notifyAll()DeadlockRace ConditionStarvationThread SafetyvolatileAtomic VariablesExecutors FrameworkThread PoolFutureCompletableFutureForkJoinPoolLocks APIReentrantLockReadWriteLockSemaphoreCountDownLatchCyclicBarrierPhaserParallel StreamsVirtual Threads
I/O BasicsByte StreamsCharacter StreamsFile HandlingFile ClassFileInputStreamFileOutputStreamBuffered StreamsFileReaderFileWriterBufferedReaderBufferedWriterPrintWriterDataInputStreamDataOutputStreamSerializationDeserializationtransientExternalization
NIO OverviewPathFiles ClassChannelsBuffersWatchService
Lambda ExpressionsFunctional InterfacesPredicateFunctionConsumerSupplierMethod ReferencesStream APIIntermediate OperationsTerminal OperationsOptionalDefault MethodsStatic Interface MethodsDate Time APIBase64Parallel Streams
Module System (JPMS)JShellCollection Factory MethodsPrivate Interface Methodsvar KeywordHTTP Client APIString ImprovementsSwitch ExpressionsText BlocksPattern MatchingRecordsSealed ClassesPattern Matching for switchRecord PatternsSequenced CollectionsVirtual ThreadsStructured ConcurrencyScoped Values
Functional Programming BasicsPure FunctionsHigher Order FunctionsClosuresCurryingImmutable ProgrammingStream Pipelines
LocalDateLocalTimeLocalDateTimeZonedDateTimePeriodDurationDateTimeFormatterTime ZonesLegacy Date APICalendar
JDBC ArchitectureJDBC DriversDriverManagerConnectionStatementPreparedStatementCallableStatementResultSetTransactionsBatch ProcessingConnection PoolingMetadataRowSetStored Procedures
319 topics covered
☕
TechLearn
Java Tutorial
Back to Home
What is Java?Features of JavaUses of JavaJava Editions (Java SE, EE, ME)JDK, JRE and JVMJava ArchitecturePlatform IndependenceBytecodeHow Java WorksFirst Java ProgramJava Compilation ProcessJava Execution FlowJava InstallationSetting JAVA_HOMEJava Environment SetupJava Naming ConventionsJava KeywordsJava Reserved WordsJava IdentifiersJava Unicode SystemJava CommentsJava Coding Standards
Variables in JavaData Types in JavaPrimitive Data TypesNon-Primitive Data TypesLiteralsType CastingWidening CastingNarrowing CastingOperatorsArithmetic OperatorsRelational OperatorsLogical OperatorsBitwise OperatorsAssignment OperatorsUnary OperatorsTernary Operatorinstanceof OperatorInput and OutputScanner ClassBufferedReaderConsole Inputprintf()Escape SequencesCommand Line Arguments
Control Statementsif Statementif-else StatementNested ifswitch Statementswitch Expressionfor Loopwhile Loopdo-while LoopEnhanced for Loopbreak Statementcontinue Statementreturn Statement
OOP ConceptsClassesObjectsObject CreationDefault ConstructorParameterized ConstructorConstructor OverloadingCopy Constructorthis Keywordstatic Keywordfinal KeywordAccess ModifiersEncapsulationSingle InheritanceMultilevel InheritanceHierarchical InheritanceMethod Overridingsuper KeywordCompile-time PolymorphismRuntime PolymorphismAbstractionAbstract ClassInterfaceMultiple Inheritance using InterfaceAssociationAggregationCompositionObject ClassAnonymous ObjectInitialization BlocksNested ClassesInner ClassesAnonymous Inner ClassesStatic Nested Classes
Array BasicsOne-Dimensional ArrayTwo-Dimensional ArrayMultidimensional ArrayJagged ArrayArray InitializationArray TraversalArray SortingArray SearchingArrays ClassCopying ArraysPassing Arrays to MethodsReturning Arraysvarargs
String ClassString PoolImmutable StringMutable StringString MethodsString Comparisonequals() vs ==StringBufferStringBuilderStringTokenizerStringJoinerText BlocksUnicode HandlingRegular ExpressionsPattern ClassMatcher Class
Exception Basicstry-catchMultiple catchfinallythrowthrowsCustom ExceptionChecked ExceptionUnchecked ExceptionError vs ExceptionStack Tracetry-with-resourcesException PropagationChained Exceptions
Package ConceptBuilt-in PackagesUser-defined PackagesimportStatic ImportPackage ProtectionJAR FilesManifest File
Stack MemoryHeap MemoryMetaspaceJVM Memory ModelGarbage CollectionGC AlgorithmsMemory Leakfinalize()Reference Types (Weak, Soft, Phantom)
Collections OverviewIterableCollection InterfaceArrayListLinkedListVectorStackQueue InterfacePriorityQueueDequeArrayDequeHashSetLinkedHashSetTreeSetSortedSetNavigableSetHashMapLinkedHashMapTreeMapHashtableConcurrentHashMapWeakHashMapIdentityHashMapEnumMapCollections ClassComparableComparatorIteratorListIteratorSpliteratorFail-Fast vs Fail-SafeImmutable CollectionsSynchronized Collections
Generic ClassGeneric MethodType ParametersBounded TypesWildcardsUpper BoundLower BoundType ErasureGeneric InterfaceRaw Types
Process vs ThreadThread BasicsCreating ThreadsThread LifecycleThread PriorityThread SchedulerSynchronizationsynchronized KeywordInter-thread Communicationwait()notify()notifyAll()DeadlockRace ConditionStarvationThread SafetyvolatileAtomic VariablesExecutors FrameworkThread PoolFutureCompletableFutureForkJoinPoolLocks APIReentrantLockReadWriteLockSemaphoreCountDownLatchCyclicBarrierPhaserParallel StreamsVirtual Threads
I/O BasicsByte StreamsCharacter StreamsFile HandlingFile ClassFileInputStreamFileOutputStreamBuffered StreamsFileReaderFileWriterBufferedReaderBufferedWriterPrintWriterDataInputStreamDataOutputStreamSerializationDeserializationtransientExternalization
NIO OverviewPathFiles ClassChannelsBuffersWatchService
Lambda ExpressionsFunctional InterfacesPredicateFunctionConsumerSupplierMethod ReferencesStream APIIntermediate OperationsTerminal OperationsOptionalDefault MethodsStatic Interface MethodsDate Time APIBase64Parallel Streams
Module System (JPMS)JShellCollection Factory MethodsPrivate Interface Methodsvar KeywordHTTP Client APIString ImprovementsSwitch ExpressionsText BlocksPattern MatchingRecordsSealed ClassesPattern Matching for switchRecord PatternsSequenced CollectionsVirtual ThreadsStructured ConcurrencyScoped Values
Functional Programming BasicsPure FunctionsHigher Order FunctionsClosuresCurryingImmutable ProgrammingStream Pipelines
LocalDateLocalTimeLocalDateTimeZonedDateTimePeriodDurationDateTimeFormatterTime ZonesLegacy Date APICalendar
JDBC ArchitectureJDBC DriversDriverManagerConnectionStatementPreparedStatementCallableStatementResultSetTransactionsBatch ProcessingConnection PoolingMetadataRowSetStored Procedures
319 topics covered
Home/Java/Functional Programming
☕ Java

Functional Programming

7 lessons in this section of the Java tutorial. Work through them in order, or jump to the one you need.

  1. 1.Functional Programming Basics

    Functional programming is a programming paradigm that treats computation as the evaluation and composition of functions, favors expressions that produce values over…

  2. 2.Pure Functions

    A pure function is a function whose return value depends solely on the arguments passed to it, with no dependence on any hidden or external state, and which produces no…

  3. 3.Higher Order Functions

    A higher-order function is a function that takes one or more other functions as parameters, returns a function as its result, or both — as opposed to a first-order…

  4. 4.Closures

    A closure is a function bundled together with the variables from its enclosing lexical scope that it refers to, captured at the time the function is created, so that the…

  5. 5.Currying

    Currying is the technique of transforming a function that accepts multiple arguments into a chain of functions that each accept exactly one argument, so that calling the…

  6. 6.Immutable Programming

    Immutable programming in Java refers to a design discipline — not a single language feature — of constructing objects whose observable state cannot change after…

  7. 7.Stream Pipelines

    A stream pipeline is the architectural pattern underlying the Streams API (introduced in Java 8 alongside lambdas): a source, followed by zero or more intermediate…

← Java 9 to 21 FeaturesDate Time API →
TechLearn

Free Java and Spring Boot tutorials for developers, written by Ajeet Kumar.

Tutorials

  • Java Tutorial
  • Spring Boot Tutorial

About & Legal

  • About
  • Contact
  • Privacy Policy
  • Terms & Conditions
  • Disclaimer

© 2026 TechLearn. All rights reserved.