dev-notes/languages/java/java.html

7640 lines
No EOL
310 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="author" content="Marcello Lamonaca">
<link rel="canonical" href="http://m-lamonaca.github.io/dev-notes/languages/java/java.html">
<link rel="prev" href="../dotnet/database/entity-framework.html">
<link rel="next" href="java-collection-framework.html">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.34">
<title>Java - Dev Notes</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.35f28582.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
<script src="https://unpkg.com/iframe-worker/shim"></script>
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<meta property="og:type" content="website" >
<meta property="og:title" content="Java - Dev Notes" >
<meta property="og:description" content="None" >
<meta property="og:image" content="http://m-lamonaca.github.io/dev-notes/assets/images/social/languages/java/java.png" >
<meta property="og:image:type" content="image/png" >
<meta property="og:image:width" content="1200" >
<meta property="og:image:height" content="630" >
<meta property="og:url" content="http://m-lamonaca.github.io/dev-notes/languages/java/java.html" >
<meta name="twitter:card" content="summary_large_image" >
<meta name="twitter:title" content="Java - Dev Notes" >
<meta name="twitter:description" content="None" >
<meta name="twitter:image" content="http://m-lamonaca.github.io/dev-notes/assets/images/social/languages/java/java.png" >
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="orange" data-md-color-accent="deep-orange">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#java" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../../index.html" title="Dev Notes" class="md-header__button md-logo" aria-label="Dev Notes" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6m80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3l89.3 89.4-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Dev Notes
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Java
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="orange" data-md-color-accent="deep-orange" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="deep-orange" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/m-lamonaca/dev-notes" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../../index.html" class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="../../containers/docker.html" class="md-tabs__link">
Containers
</a>
</li>
<li class="md-tabs__item">
<a href="../../databases/redis.html" class="md-tabs__link">
Databases
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../html/html.html" class="md-tabs__link">
Languages
</a>
</li>
<li class="md-tabs__item">
<a href="../../misc/git.html" class="md-tabs__link">
Misc
</a>
</li>
<li class="md-tabs__item">
<a href="../../linux/filesystem/file-links.html" class="md-tabs__link">
Linux
</a>
</li>
</ul>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../../index.html" title="Dev Notes" class="md-nav__button md-logo" aria-label="Dev Notes" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6m80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3l89.3 89.4-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3"/></svg>
</a>
Dev Notes
</label>
<div class="md-nav__source">
<a href="https://github.com/m-lamonaca/dev-notes" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../index.html" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
Containers
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Containers
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../containers/docker.html" class="md-nav__link">
<span class="md-ellipsis">
Docker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../containers/kubernetes.html" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
<span class="md-ellipsis">
Databases
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Databases
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../databases/redis.html" class="md-nav__link">
<span class="md-ellipsis">
Redis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../databases/sql.html" class="md-nav__link">
<span class="md-ellipsis">
SQL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../databases/mongo-db.html" class="md-nav__link">
<span class="md-ellipsis">
MongoDB
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked>
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="">
<span class="md-ellipsis">
Languages
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Languages
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../html/html.html" class="md-nav__link">
<span class="md-ellipsis">
HTML
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../markdown.html" class="md-nav__link">
<span class="md-ellipsis">
Markdown
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../css/css.html" class="md-nav__link">
<span class="md-ellipsis">
CSS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../c/c.html" class="md-nav__link">
<span class="md-ellipsis">
C
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../kotlin/kotlin.html" class="md-nav__link">
<span class="md-ellipsis">
Kotlin
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../swift/swift.html" class="md-nav__link">
<span class="md-ellipsis">
Swift
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_7" >
<label class="md-nav__link" for="__nav_4_7" id="__nav_4_7_label" tabindex="">
<span class="md-ellipsis">
Assembly
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_7">
<span class="md-nav__icon md-icon"></span>
Assembly
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../assembly/intel.html" class="md-nav__link">
<span class="md-ellipsis">
Intel
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../assembly/riscv.html" class="md-nav__link">
<span class="md-ellipsis">
RISC-V
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_8" >
<label class="md-nav__link" for="__nav_4_8" id="__nav_4_8_label" tabindex="">
<span class="md-ellipsis">
Python
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_8">
<span class="md-nav__icon md-icon"></span>
Python
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../python/python.html" class="md-nav__link">
<span class="md-ellipsis">
Python
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_8_2" >
<label class="md-nav__link" for="__nav_4_8_2" id="__nav_4_8_2_label" tabindex="0">
<span class="md-ellipsis">
Modules
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_8_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_8_2">
<span class="md-nav__icon md-icon"></span>
Modules
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../python/modules/argparse.html" class="md-nav__link">
<span class="md-ellipsis">
argparse
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/modules/collections.html" class="md-nav__link">
<span class="md-ellipsis">
collection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/modules/csv.html" class="md-nav__link">
<span class="md-ellipsis">
csv
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/modules/ftplib.html" class="md-nav__link">
<span class="md-ellipsis">
ftplib
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/modules/itertools.html" class="md-nav__link">
<span class="md-ellipsis">
itertools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/modules/json.html" class="md-nav__link">
<span class="md-ellipsis">
json
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/modules/logging.html" class="md-nav__link">
<span class="md-ellipsis">
logging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/modules/shutil.html" class="md-nav__link">
<span class="md-ellipsis">
shutil
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/modules/smtplib.html" class="md-nav__link">
<span class="md-ellipsis">
smtplib
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/modules/socket.html" class="md-nav__link">
<span class="md-ellipsis">
socket
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/modules/sqlite.html" class="md-nav__link">
<span class="md-ellipsis">
sqlite
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/modules/time-datetime.html" class="md-nav__link">
<span class="md-ellipsis">
time & datetime
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/modules/unittest.html" class="md-nav__link">
<span class="md-ellipsis">
unittest
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_8_3" >
<label class="md-nav__link" for="__nav_4_8_3" id="__nav_4_8_3_label" tabindex="0">
<span class="md-ellipsis">
Libraries
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_8_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_8_3">
<span class="md-nav__icon md-icon"></span>
Libraries
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../python/libs/tkinter.html" class="md-nav__link">
<span class="md-ellipsis">
TKinter
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/libs/numpy.html" class="md-nav__link">
<span class="md-ellipsis">
Numpy
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/libs/pandas.html" class="md-nav__link">
<span class="md-ellipsis">
Pandas
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/libs/seaborn.html" class="md-nav__link">
<span class="md-ellipsis">
Seaborn
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/libs/requests.html" class="md-nav__link">
<span class="md-ellipsis">
Requests
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../python/libs/beautiful-soup.html" class="md-nav__link">
<span class="md-ellipsis">
Beatiful Soup
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_9" >
<label class="md-nav__link" for="__nav_4_9" id="__nav_4_9_label" tabindex="">
<span class="md-ellipsis">
.NET
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_9">
<span class="md-nav__icon md-icon"></span>
.NET
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_9_1" >
<label class="md-nav__link" for="__nav_4_9_1" id="__nav_4_9_1_label" tabindex="0">
<span class="md-ellipsis">
C#
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_9_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_9_1">
<span class="md-nav__icon md-icon"></span>
C#
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../dotnet/csharp/csharp.html" class="md-nav__link">
<span class="md-ellipsis">
C#
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dotnet/csharp/linq.html" class="md-nav__link">
<span class="md-ellipsis">
Linq
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dotnet/csharp/collections.html" class="md-nav__link">
<span class="md-ellipsis">
Collections
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dotnet/csharp/reactive-extensions.html" class="md-nav__link">
<span class="md-ellipsis">
Reactive Extensions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dotnet/csharp/async-programming.html" class="md-nav__link">
<span class="md-ellipsis">
Async Programming
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dotnet/csharp/unit-tests.html" class="md-nav__link">
<span class="md-ellipsis">
Unit Tests
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_9_2" >
<label class="md-nav__link" for="__nav_4_9_2" id="__nav_4_9_2_label" tabindex="0">
<span class="md-ellipsis">
ASP.NET
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_9_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_9_2">
<span class="md-nav__icon md-icon"></span>
ASP.NET
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../dotnet/asp.net/minimal-api.html" class="md-nav__link">
<span class="md-ellipsis">
Minimal API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dotnet/asp.net/filters.html" class="md-nav__link">
<span class="md-ellipsis">
FIlters
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dotnet/asp.net/middleware.html" class="md-nav__link">
<span class="md-ellipsis">
Middleware
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dotnet/asp.net/razor-syntax.html" class="md-nav__link">
<span class="md-ellipsis">
Razor Syntax
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dotnet/asp.net/blazor.html" class="md-nav__link">
<span class="md-ellipsis">
Blazor
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dotnet/asp.net/signalr.html" class="md-nav__link">
<span class="md-ellipsis">
SignalR
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dotnet/asp.net/web-forms.html" class="md-nav__link">
<span class="md-ellipsis">
Web Forms
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_9_3" >
<label class="md-nav__link" for="__nav_4_9_3" id="__nav_4_9_3_label" tabindex="0">
<span class="md-ellipsis">
Database
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_9_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_9_3">
<span class="md-nav__icon md-icon"></span>
Database
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../dotnet/database/ado.net.html" class="md-nav__link">
<span class="md-ellipsis">
ADO.NET
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dotnet/database/entity-framework.html" class="md-nav__link">
<span class="md-ellipsis">
Entity Framework
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_10" checked>
<label class="md-nav__link" for="__nav_4_10" id="__nav_4_10_label" tabindex="">
<span class="md-ellipsis">
Java
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_10_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4_10">
<span class="md-nav__icon md-icon"></span>
Java
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Java
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="java.html" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Java
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#basics" class="md-nav__link">
<span class="md-ellipsis">
Basics
</span>
</a>
<nav class="md-nav" aria-label="Basics">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#main-method-entry-point-of-algorithm" class="md-nav__link">
<span class="md-ellipsis">
Main Method (entry point of algorithm)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#variable-assignment" class="md-nav__link">
<span class="md-ellipsis">
Variable Assignment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#constant-definition-outside-of-main-methodfunction" class="md-nav__link">
<span class="md-ellipsis">
Constant Definition (outside of main method/function)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#constant-definition-inside-main-methodfunction" class="md-nav__link">
<span class="md-ellipsis">
Constant Definition (inside main method/function)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#screen-output" class="md-nav__link">
<span class="md-ellipsis">
Screen Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output-formatting" class="md-nav__link">
<span class="md-ellipsis">
Output Formatting
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#keyboard-input" class="md-nav__link">
<span class="md-ellipsis">
Keyboard Input
</span>
</a>
<nav class="md-nav" aria-label="Keyboard Input">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#primitive-types" class="md-nav__link">
<span class="md-ellipsis">
Primitive Types
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#floating-point-numbers-precision-calcs" class="md-nav__link">
<span class="md-ellipsis">
Floating-Point numbers &amp; Precision Calcs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type-conversion-casting-type-checking" class="md-nav__link">
<span class="md-ellipsis">
Type Conversion (casting) &amp; Type checking
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#wrapper-classes" class="md-nav__link">
<span class="md-ellipsis">
Wrapper Classes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#string-char" class="md-nav__link">
<span class="md-ellipsis">
String &amp; Char
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#special-characters" class="md-nav__link">
<span class="md-ellipsis">
Special Characters
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#string-concatenation" class="md-nav__link">
<span class="md-ellipsis">
String Concatenation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#string-conversion-to-number" class="md-nav__link">
<span class="md-ellipsis">
String Conversion to Number
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#string-class-methods" class="md-nav__link">
<span class="md-ellipsis">
String Class Methods
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#mathematical-operations" class="md-nav__link">
<span class="md-ellipsis">
Mathematical Operations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#arithmetic-operators" class="md-nav__link">
<span class="md-ellipsis">
Arithmetic Operators
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#comparison-operators" class="md-nav__link">
<span class="md-ellipsis">
Comparison Operators
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#logical-operators" class="md-nav__link">
<span class="md-ellipsis">
Logical Operators
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#bitwise-operators" class="md-nav__link">
<span class="md-ellipsis">
Bitwise Operators
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#compound-assignment-operators" class="md-nav__link">
<span class="md-ellipsis">
Compound Assignment Operators
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#operator-precedence" class="md-nav__link">
<span class="md-ellipsis">
Operator Precedence
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#short-circuit-evaluation" class="md-nav__link">
<span class="md-ellipsis">
Short Circuit Evaluation
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#decision-statements" class="md-nav__link">
<span class="md-ellipsis">
Decision Statements
</span>
</a>
<nav class="md-nav" aria-label="Decision Statements">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#if-else" class="md-nav__link">
<span class="md-ellipsis">
If Else
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#if-else-if-else" class="md-nav__link">
<span class="md-ellipsis">
If, Else If, Else
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ternary-operator" class="md-nav__link">
<span class="md-ellipsis">
Ternary Operator
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#switch" class="md-nav__link">
<span class="md-ellipsis">
Switch
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#loop-statements" class="md-nav__link">
<span class="md-ellipsis">
Loop Statements
</span>
</a>
<nav class="md-nav" aria-label="Loop Statements">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#while-loop" class="md-nav__link">
<span class="md-ellipsis">
While Loop
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#do-while-loop" class="md-nav__link">
<span class="md-ellipsis">
Do While Loop
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#for-loop" class="md-nav__link">
<span class="md-ellipsis">
For Loop
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#foreach-loop" class="md-nav__link">
<span class="md-ellipsis">
Foreach Loop
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#multiple-iterators-in-for-loop" class="md-nav__link">
<span class="md-ellipsis">
Multiple iterators in For Loop
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#forced-program-termination" class="md-nav__link">
<span class="md-ellipsis">
Forced Program Termination
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#assertion-checks" class="md-nav__link">
<span class="md-ellipsis">
Assertion Checks
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#static-methods" class="md-nav__link">
<span class="md-ellipsis">
Static Methods
</span>
</a>
<nav class="md-nav" aria-label="Static Methods">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#static-void-method-definition" class="md-nav__link">
<span class="md-ellipsis">
Static Void Method Definition
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-method-definition" class="md-nav__link">
<span class="md-ellipsis">
Static Method Definition
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-method-invocation" class="md-nav__link">
<span class="md-ellipsis">
Static Method Invocation
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#array" class="md-nav__link">
<span class="md-ellipsis">
Array
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#array-declaration" class="md-nav__link">
<span class="md-ellipsis">
Array Declaration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#array-creation-by-initialization" class="md-nav__link">
<span class="md-ellipsis">
Array Creation by Initialization
</span>
</a>
<nav class="md-nav" aria-label="Array Creation by Initialization">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#arrays-as-method-parameters" class="md-nav__link">
<span class="md-ellipsis">
Arrays as method parameters
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#equality-of-arrays" class="md-nav__link">
<span class="md-ellipsis">
Equality of Arrays
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#methods-returning-arrays" class="md-nav__link">
<span class="md-ellipsis">
Methods returning Arrays
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#variable-numbers-of-parameters-in-a-method" class="md-nav__link">
<span class="md-ellipsis">
Variable numbers of parameters in a method
</span>
</a>
<nav class="md-nav" aria-label="Variable numbers of parameters in a method">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#multi-dimensional-arrays" class="md-nav__link">
<span class="md-ellipsis">
Multi-Dimensional Arrays
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#multi-dimensional-arrays-as-parameters" class="md-nav__link">
<span class="md-ellipsis">
Multi-Dimensional Arrays as parameters
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#methods-returning-multi-dimensional-arrays" class="md-nav__link">
<span class="md-ellipsis">
Methods returning multi-dimensional arrays
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#array-length-of-multi-dimensional-arrays" class="md-nav__link">
<span class="md-ellipsis">
Array Length of multi-dimensional arrays
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#irregular-table-visualization" class="md-nav__link">
<span class="md-ellipsis">
Irregular Table Visualization
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#recursion-guidelines" class="md-nav__link">
<span class="md-ellipsis">
Recursion Guidelines
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#exception-handling" class="md-nav__link">
<span class="md-ellipsis">
Exception Handling
</span>
</a>
<nav class="md-nav" aria-label="Exception Handling">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#try-catch-finally" class="md-nav__link">
<span class="md-ellipsis">
Try-Catch-Finally
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#try-with-resources" class="md-nav__link">
<span class="md-ellipsis">
Try with Resources
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#throw-throws" class="md-nav__link">
<span class="md-ellipsis">
Throw &amp; Throws
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#defining-personalized-exceptions" class="md-nav__link">
<span class="md-ellipsis">
Defining Personalized Exceptions
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#object-oriented-programming" class="md-nav__link">
<span class="md-ellipsis">
Object Oriented Programming
</span>
</a>
<nav class="md-nav" aria-label="Object Oriented Programming">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#access-modifiers" class="md-nav__link">
<span class="md-ellipsis">
Access Modifiers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#instance-method-definition" class="md-nav__link">
<span class="md-ellipsis">
Instance Method Definition
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#void-instance-method" class="md-nav__link">
<span class="md-ellipsis">
Void Instance Method
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#class-definition" class="md-nav__link">
<span class="md-ellipsis">
Class Definition
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#this-identifier" class="md-nav__link">
<span class="md-ellipsis">
This identifier
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#classes-and-reference-addresses" class="md-nav__link">
<span class="md-ellipsis">
Classes and Reference Addresses
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#constructors" class="md-nav__link">
<span class="md-ellipsis">
Constructors
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-variables" class="md-nav__link">
<span class="md-ellipsis">
Static Variables
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#getters-setter-methods" class="md-nav__link">
<span class="md-ellipsis">
Getters &amp; Setter Methods
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#tostring-method" class="md-nav__link">
<span class="md-ellipsis">
ToString() Method
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-methods-in-classes" class="md-nav__link">
<span class="md-ellipsis">
Static Methods in Classes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#method-overloading" class="md-nav__link">
<span class="md-ellipsis">
Method Overloading
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#inheritance-method-overriding" class="md-nav__link">
<span class="md-ellipsis">
Inheritance &amp; Method Overriding
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#abstract-classes-abstract-methods" class="md-nav__link">
<span class="md-ellipsis">
Abstract Classes &amp; Abstract Methods
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#interfaces" class="md-nav__link">
<span class="md-ellipsis">
Interfaces
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#enumerations" class="md-nav__link">
<span class="md-ellipsis">
Enumerations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#anonymous-classes" class="md-nav__link">
<span class="md-ellipsis">
Anonymous Classes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cloning" class="md-nav__link">
<span class="md-ellipsis">
Cloning
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#generics" class="md-nav__link">
<span class="md-ellipsis">
Generics
</span>
</a>
<nav class="md-nav" aria-label="Generics">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#multiple-generics" class="md-nav__link">
<span class="md-ellipsis">
Multiple Generics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#parameters-constraints" class="md-nav__link">
<span class="md-ellipsis">
Parameters Constraints
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#generic-methods" class="md-nav__link">
<span class="md-ellipsis">
Generic Methods
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#file-io" class="md-nav__link">
<span class="md-ellipsis">
File I/O
</span>
</a>
<nav class="md-nav" aria-label="File I/O">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#text-files" class="md-nav__link">
<span class="md-ellipsis">
Text Files
</span>
</a>
<nav class="md-nav" aria-label="Text Files">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#writing-on-a-file" class="md-nav__link">
<span class="md-ellipsis">
Writing on a file
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#reading-from-a-file" class="md-nav__link">
<span class="md-ellipsis">
Reading from a file
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#file-class" class="md-nav__link">
<span class="md-ellipsis">
File() class
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#binary-files" class="md-nav__link">
<span class="md-ellipsis">
Binary Files
</span>
</a>
<nav class="md-nav" aria-label="Binary Files">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#writing-to-a-binary-file" class="md-nav__link">
<span class="md-ellipsis">
Writing to a binary file
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#reading-from-a-binary-file" class="md-nav__link">
<span class="md-ellipsis">
Reading from a binary file
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#object-array-io-with-binary-files-serialization" class="md-nav__link">
<span class="md-ellipsis">
Object &amp; Array I/O with Binary Files (Serialization)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#functional-programming-in-java" class="md-nav__link">
<span class="md-ellipsis">
Functional Programming in Java
</span>
</a>
<nav class="md-nav" aria-label="Functional Programming in Java">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#functional-interfaces" class="md-nav__link">
<span class="md-ellipsis">
Functional Interfaces
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#streams" class="md-nav__link">
<span class="md-ellipsis">
Streams
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#lambda-expressions" class="md-nav__link">
<span class="md-ellipsis">
Lambda Expressions
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="java-collection-framework.html" class="md-nav__link">
<span class="md-ellipsis">
Java Collection Framework
</span>
</a>
</li>
<li class="md-nav__item">
<a href="dao.html" class="md-nav__link">
<span class="md-ellipsis">
DAO
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_10_4" >
<label class="md-nav__link" for="__nav_4_10_4" id="__nav_4_10_4_label" tabindex="0">
<span class="md-ellipsis">
Web
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_10_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_10_4">
<span class="md-nav__icon md-icon"></span>
Web
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="web/servlet.html" class="md-nav__link">
<span class="md-ellipsis">
Serverlet
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_10_4_2" >
<label class="md-nav__link" for="__nav_4_10_4_2" id="__nav_4_10_4_2_label" tabindex="0">
<span class="md-ellipsis">
Spring
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_4_10_4_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_10_4_2">
<span class="md-nav__icon md-icon"></span>
Spring
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="spring/pom.xml.html" class="md-nav__link">
<span class="md-ellipsis">
POM
</span>
</a>
</li>
<li class="md-nav__item">
<a href="spring/spring-project.html" class="md-nav__link">
<span class="md-ellipsis">
Project Structure
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_11" >
<label class="md-nav__link" for="__nav_4_11" id="__nav_4_11_label" tabindex="">
<span class="md-ellipsis">
PHP
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_11">
<span class="md-nav__icon md-icon"></span>
PHP
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../php/php.html" class="md-nav__link">
<span class="md-ellipsis">
PHP
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../php/database.html" class="md-nav__link">
<span class="md-ellipsis">
Database
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../php/web.html" class="md-nav__link">
<span class="md-ellipsis">
Web
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../php/dependency-injection.html" class="md-nav__link">
<span class="md-ellipsis">
Dependency Injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../php/unit-tests.html" class="md-nav__link">
<span class="md-ellipsis">
Unit Tests
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../php/composer.html" class="md-nav__link">
<span class="md-ellipsis">
Composer
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../php/psr-7.html" class="md-nav__link">
<span class="md-ellipsis">
PSR 7
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../php/plates-templating.html" class="md-nav__link">
<span class="md-ellipsis">
Plates
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_11_9" >
<label class="md-nav__link" for="__nav_4_11_9" id="__nav_4_11_9_label" tabindex="0">
<span class="md-ellipsis">
Simple MVC
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_11_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_11_9">
<span class="md-nav__icon md-icon"></span>
Simple MVC
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../php/simple-mvc/simple-mvc.html" class="md-nav__link">
<span class="md-ellipsis">
Simple MVC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../php/simple-mvc/rest-api.html" class="md-nav__link">
<span class="md-ellipsis">
REST API
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_12" >
<label class="md-nav__link" for="__nav_4_12" id="__nav_4_12_label" tabindex="">
<span class="md-ellipsis">
Rust
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_12_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_12">
<span class="md-nav__icon md-icon"></span>
Rust
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../rust/rust.html" class="md-nav__link">
<span class="md-ellipsis">
Rust
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rust/macros.html" class="md-nav__link">
<span class="md-ellipsis">
Macros
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rust/cargo.html" class="md-nav__link">
<span class="md-ellipsis">
Cargo
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rust/concurrency.html" class="md-nav__link">
<span class="md-ellipsis">
Concurrency
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rust/unit-tests.html" class="md-nav__link">
<span class="md-ellipsis">
Unit Tests
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_13" >
<label class="md-nav__link" for="__nav_4_13" id="__nav_4_13_label" tabindex="">
<span class="md-ellipsis">
Javascript
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_13_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_13">
<span class="md-nav__icon md-icon"></span>
Javascript
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../javascript/javascript.html" class="md-nav__link">
<span class="md-ellipsis">
Javascript
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../javascript/dom.html" class="md-nav__link">
<span class="md-ellipsis">
DOM
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../javascript/events-animation.html" class="md-nav__link">
<span class="md-ellipsis">
Events & Animation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../javascript/ajax.html" class="md-nav__link">
<span class="md-ellipsis">
AJAX
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../javascript/jquery.html" class="md-nav__link">
<span class="md-ellipsis">
jQuery
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_13_6" >
<label class="md-nav__link" for="__nav_4_13_6" id="__nav_4_13_6_label" tabindex="0">
<span class="md-ellipsis">
React
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_13_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_13_6">
<span class="md-nav__icon md-icon"></span>
React
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../javascript/react/react.html" class="md-nav__link">
<span class="md-ellipsis">
React
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../javascript/react/react-router.html" class="md-nav__link">
<span class="md-ellipsis">
React Router
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../javascript/react/react-tests.html" class="md-nav__link">
<span class="md-ellipsis">
React Tests
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../javascript/react/redux.html" class="md-nav__link">
<span class="md-ellipsis">
Redux
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../javascript/react/redux-tests.html" class="md-nav__link">
<span class="md-ellipsis">
Redux Tests
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../javascript/svelte/svelte.html" class="md-nav__link">
<span class="md-ellipsis">
Svelte
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_14" >
<label class="md-nav__link" for="__nav_4_14" id="__nav_4_14_label" tabindex="">
<span class="md-ellipsis">
PowerShell
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_14_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_14">
<span class="md-nav__icon md-icon"></span>
PowerShell
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../powershell/scripting.html" class="md-nav__link">
<span class="md-ellipsis">
Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../powershell/commands.html" class="md-nav__link">
<span class="md-ellipsis">
Commands
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_15" >
<label class="md-nav__link" for="__nav_4_15" id="__nav_4_15_label" tabindex="">
<span class="md-ellipsis">
Bash
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_15">
<span class="md-nav__icon md-icon"></span>
Bash
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../bash/scripting.html" class="md-nav__link">
<span class="md-ellipsis">
Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../bash/commands.html" class="md-nav__link">
<span class="md-ellipsis">
Commands
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
Misc
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Misc
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../misc/git.html" class="md-nav__link">
<span class="md-ellipsis">
Git
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../misc/graph-ql.html" class="md-nav__link">
<span class="md-ellipsis">
GraphQL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../misc/regular-expressions.html" class="md-nav__link">
<span class="md-ellipsis">
RegEx
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../misc/ssh.html" class="md-nav__link">
<span class="md-ellipsis">
SSH
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../misc/web-components.html" class="md-nav__link">
<span class="md-ellipsis">
WebComponents
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-ellipsis">
Linux
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Linux
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_1" >
<label class="md-nav__link" for="__nav_6_1" id="__nav_6_1_label" tabindex="0">
<span class="md-ellipsis">
Filesystem
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6_1">
<span class="md-nav__icon md-icon"></span>
Filesystem
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../linux/filesystem/file-links.html" class="md-nav__link">
<span class="md-ellipsis">
File Links
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../linux/filesystem/procfs.html" class="md-nav__link">
<span class="md-ellipsis">
/proc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../linux/filesystem/sysfs.html" class="md-nav__link">
<span class="md-ellipsis">
/sys
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_2" >
<label class="md-nav__link" for="__nav_6_2" id="__nav_6_2_label" tabindex="0">
<span class="md-ellipsis">
System Init
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6_2">
<span class="md-nav__icon md-icon"></span>
System Init
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../linux/init/systemd.html" class="md-nav__link">
<span class="md-ellipsis">
Systemd
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../linux/init/open-rc.html" class="md-nav__link">
<span class="md-ellipsis">
OpenRC
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#basics" class="md-nav__link">
<span class="md-ellipsis">
Basics
</span>
</a>
<nav class="md-nav" aria-label="Basics">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#main-method-entry-point-of-algorithm" class="md-nav__link">
<span class="md-ellipsis">
Main Method (entry point of algorithm)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#variable-assignment" class="md-nav__link">
<span class="md-ellipsis">
Variable Assignment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#constant-definition-outside-of-main-methodfunction" class="md-nav__link">
<span class="md-ellipsis">
Constant Definition (outside of main method/function)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#constant-definition-inside-main-methodfunction" class="md-nav__link">
<span class="md-ellipsis">
Constant Definition (inside main method/function)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#screen-output" class="md-nav__link">
<span class="md-ellipsis">
Screen Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output-formatting" class="md-nav__link">
<span class="md-ellipsis">
Output Formatting
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#keyboard-input" class="md-nav__link">
<span class="md-ellipsis">
Keyboard Input
</span>
</a>
<nav class="md-nav" aria-label="Keyboard Input">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#primitive-types" class="md-nav__link">
<span class="md-ellipsis">
Primitive Types
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#floating-point-numbers-precision-calcs" class="md-nav__link">
<span class="md-ellipsis">
Floating-Point numbers &amp; Precision Calcs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#type-conversion-casting-type-checking" class="md-nav__link">
<span class="md-ellipsis">
Type Conversion (casting) &amp; Type checking
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#wrapper-classes" class="md-nav__link">
<span class="md-ellipsis">
Wrapper Classes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#string-char" class="md-nav__link">
<span class="md-ellipsis">
String &amp; Char
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#special-characters" class="md-nav__link">
<span class="md-ellipsis">
Special Characters
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#string-concatenation" class="md-nav__link">
<span class="md-ellipsis">
String Concatenation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#string-conversion-to-number" class="md-nav__link">
<span class="md-ellipsis">
String Conversion to Number
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#string-class-methods" class="md-nav__link">
<span class="md-ellipsis">
String Class Methods
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#mathematical-operations" class="md-nav__link">
<span class="md-ellipsis">
Mathematical Operations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#arithmetic-operators" class="md-nav__link">
<span class="md-ellipsis">
Arithmetic Operators
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#comparison-operators" class="md-nav__link">
<span class="md-ellipsis">
Comparison Operators
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#logical-operators" class="md-nav__link">
<span class="md-ellipsis">
Logical Operators
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#bitwise-operators" class="md-nav__link">
<span class="md-ellipsis">
Bitwise Operators
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#compound-assignment-operators" class="md-nav__link">
<span class="md-ellipsis">
Compound Assignment Operators
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#operator-precedence" class="md-nav__link">
<span class="md-ellipsis">
Operator Precedence
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#short-circuit-evaluation" class="md-nav__link">
<span class="md-ellipsis">
Short Circuit Evaluation
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#decision-statements" class="md-nav__link">
<span class="md-ellipsis">
Decision Statements
</span>
</a>
<nav class="md-nav" aria-label="Decision Statements">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#if-else" class="md-nav__link">
<span class="md-ellipsis">
If Else
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#if-else-if-else" class="md-nav__link">
<span class="md-ellipsis">
If, Else If, Else
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ternary-operator" class="md-nav__link">
<span class="md-ellipsis">
Ternary Operator
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#switch" class="md-nav__link">
<span class="md-ellipsis">
Switch
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#loop-statements" class="md-nav__link">
<span class="md-ellipsis">
Loop Statements
</span>
</a>
<nav class="md-nav" aria-label="Loop Statements">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#while-loop" class="md-nav__link">
<span class="md-ellipsis">
While Loop
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#do-while-loop" class="md-nav__link">
<span class="md-ellipsis">
Do While Loop
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#for-loop" class="md-nav__link">
<span class="md-ellipsis">
For Loop
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#foreach-loop" class="md-nav__link">
<span class="md-ellipsis">
Foreach Loop
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#multiple-iterators-in-for-loop" class="md-nav__link">
<span class="md-ellipsis">
Multiple iterators in For Loop
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#forced-program-termination" class="md-nav__link">
<span class="md-ellipsis">
Forced Program Termination
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#assertion-checks" class="md-nav__link">
<span class="md-ellipsis">
Assertion Checks
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#static-methods" class="md-nav__link">
<span class="md-ellipsis">
Static Methods
</span>
</a>
<nav class="md-nav" aria-label="Static Methods">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#static-void-method-definition" class="md-nav__link">
<span class="md-ellipsis">
Static Void Method Definition
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-method-definition" class="md-nav__link">
<span class="md-ellipsis">
Static Method Definition
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-method-invocation" class="md-nav__link">
<span class="md-ellipsis">
Static Method Invocation
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#array" class="md-nav__link">
<span class="md-ellipsis">
Array
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#array-declaration" class="md-nav__link">
<span class="md-ellipsis">
Array Declaration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#array-creation-by-initialization" class="md-nav__link">
<span class="md-ellipsis">
Array Creation by Initialization
</span>
</a>
<nav class="md-nav" aria-label="Array Creation by Initialization">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#arrays-as-method-parameters" class="md-nav__link">
<span class="md-ellipsis">
Arrays as method parameters
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#equality-of-arrays" class="md-nav__link">
<span class="md-ellipsis">
Equality of Arrays
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#methods-returning-arrays" class="md-nav__link">
<span class="md-ellipsis">
Methods returning Arrays
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#variable-numbers-of-parameters-in-a-method" class="md-nav__link">
<span class="md-ellipsis">
Variable numbers of parameters in a method
</span>
</a>
<nav class="md-nav" aria-label="Variable numbers of parameters in a method">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#multi-dimensional-arrays" class="md-nav__link">
<span class="md-ellipsis">
Multi-Dimensional Arrays
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#multi-dimensional-arrays-as-parameters" class="md-nav__link">
<span class="md-ellipsis">
Multi-Dimensional Arrays as parameters
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#methods-returning-multi-dimensional-arrays" class="md-nav__link">
<span class="md-ellipsis">
Methods returning multi-dimensional arrays
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#array-length-of-multi-dimensional-arrays" class="md-nav__link">
<span class="md-ellipsis">
Array Length of multi-dimensional arrays
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#irregular-table-visualization" class="md-nav__link">
<span class="md-ellipsis">
Irregular Table Visualization
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#recursion-guidelines" class="md-nav__link">
<span class="md-ellipsis">
Recursion Guidelines
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#exception-handling" class="md-nav__link">
<span class="md-ellipsis">
Exception Handling
</span>
</a>
<nav class="md-nav" aria-label="Exception Handling">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#try-catch-finally" class="md-nav__link">
<span class="md-ellipsis">
Try-Catch-Finally
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#try-with-resources" class="md-nav__link">
<span class="md-ellipsis">
Try with Resources
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#throw-throws" class="md-nav__link">
<span class="md-ellipsis">
Throw &amp; Throws
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#defining-personalized-exceptions" class="md-nav__link">
<span class="md-ellipsis">
Defining Personalized Exceptions
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#object-oriented-programming" class="md-nav__link">
<span class="md-ellipsis">
Object Oriented Programming
</span>
</a>
<nav class="md-nav" aria-label="Object Oriented Programming">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#access-modifiers" class="md-nav__link">
<span class="md-ellipsis">
Access Modifiers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#instance-method-definition" class="md-nav__link">
<span class="md-ellipsis">
Instance Method Definition
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#void-instance-method" class="md-nav__link">
<span class="md-ellipsis">
Void Instance Method
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#class-definition" class="md-nav__link">
<span class="md-ellipsis">
Class Definition
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#this-identifier" class="md-nav__link">
<span class="md-ellipsis">
This identifier
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#classes-and-reference-addresses" class="md-nav__link">
<span class="md-ellipsis">
Classes and Reference Addresses
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#constructors" class="md-nav__link">
<span class="md-ellipsis">
Constructors
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-variables" class="md-nav__link">
<span class="md-ellipsis">
Static Variables
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#getters-setter-methods" class="md-nav__link">
<span class="md-ellipsis">
Getters &amp; Setter Methods
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#tostring-method" class="md-nav__link">
<span class="md-ellipsis">
ToString() Method
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-methods-in-classes" class="md-nav__link">
<span class="md-ellipsis">
Static Methods in Classes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#method-overloading" class="md-nav__link">
<span class="md-ellipsis">
Method Overloading
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#inheritance-method-overriding" class="md-nav__link">
<span class="md-ellipsis">
Inheritance &amp; Method Overriding
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#abstract-classes-abstract-methods" class="md-nav__link">
<span class="md-ellipsis">
Abstract Classes &amp; Abstract Methods
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#interfaces" class="md-nav__link">
<span class="md-ellipsis">
Interfaces
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#enumerations" class="md-nav__link">
<span class="md-ellipsis">
Enumerations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#anonymous-classes" class="md-nav__link">
<span class="md-ellipsis">
Anonymous Classes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cloning" class="md-nav__link">
<span class="md-ellipsis">
Cloning
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#generics" class="md-nav__link">
<span class="md-ellipsis">
Generics
</span>
</a>
<nav class="md-nav" aria-label="Generics">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#multiple-generics" class="md-nav__link">
<span class="md-ellipsis">
Multiple Generics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#parameters-constraints" class="md-nav__link">
<span class="md-ellipsis">
Parameters Constraints
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#generic-methods" class="md-nav__link">
<span class="md-ellipsis">
Generic Methods
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#file-io" class="md-nav__link">
<span class="md-ellipsis">
File I/O
</span>
</a>
<nav class="md-nav" aria-label="File I/O">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#text-files" class="md-nav__link">
<span class="md-ellipsis">
Text Files
</span>
</a>
<nav class="md-nav" aria-label="Text Files">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#writing-on-a-file" class="md-nav__link">
<span class="md-ellipsis">
Writing on a file
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#reading-from-a-file" class="md-nav__link">
<span class="md-ellipsis">
Reading from a file
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#file-class" class="md-nav__link">
<span class="md-ellipsis">
File() class
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#binary-files" class="md-nav__link">
<span class="md-ellipsis">
Binary Files
</span>
</a>
<nav class="md-nav" aria-label="Binary Files">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#writing-to-a-binary-file" class="md-nav__link">
<span class="md-ellipsis">
Writing to a binary file
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#reading-from-a-binary-file" class="md-nav__link">
<span class="md-ellipsis">
Reading from a binary file
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#object-array-io-with-binary-files-serialization" class="md-nav__link">
<span class="md-ellipsis">
Object &amp; Array I/O with Binary Files (Serialization)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#functional-programming-in-java" class="md-nav__link">
<span class="md-ellipsis">
Functional Programming in Java
</span>
</a>
<nav class="md-nav" aria-label="Functional Programming in Java">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#functional-interfaces" class="md-nav__link">
<span class="md-ellipsis">
Functional Interfaces
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#streams" class="md-nav__link">
<span class="md-ellipsis">
Streams
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#lambda-expressions" class="md-nav__link">
<span class="md-ellipsis">
Lambda Expressions
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="java">Java</h1>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span>
<span class="normal"><a href="#__codelineno-0-2">2</a></span>
<span class="normal"><a href="#__codelineno-0-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="c1">//single line comment</span>
<a id="__codelineno-0-2" name="__codelineno-0-2"></a><span class="cm">/* multi line comment */</span>
<a id="__codelineno-0-3" name="__codelineno-0-3"></a><span class="cm">/** javaDoc docstring */</span>
</code></pre></div></td></tr></table></div>
<table>
<thead>
<tr>
<th>Java element</th>
<th>Case</th>
</tr>
</thead>
<tbody>
<tr>
<td>package</td>
<td>lowercase</td>
</tr>
<tr>
<td>class</td>
<td>PascalCase</td>
</tr>
<tr>
<td>variable</td>
<td>camelCase</td>
</tr>
<tr>
<td>method</td>
<td>camelCase</td>
</tr>
</tbody>
</table>
<h2 id="basics">Basics</h2>
<p>Package definition: <code>package &lt;package_location&gt;;</code></p>
<h3 id="main-method-entry-point-of-algorithm">Main Method (entry point of algorithm)</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1">1</a></span>
<span class="normal"><a href="#__codelineno-1-2">2</a></span>
<span class="normal"><a href="#__codelineno-1-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1"></a><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="w"> </span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-1-2" name="__codelineno-1-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-1-3" name="__codelineno-1-3"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="variable-assignment">Variable Assignment</h3>
<p><code>Type variable_1 = &lt;expr&gt;, ..., variable_n = &lt;expr&gt;;</code></p>
<h3 id="constant-definition-outside-of-main-methodfunction">Constant Definition (outside of main method/function)</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1">1</a></span>
<span class="normal"><a href="#__codelineno-2-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1"></a><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="n">CONSTANT_NAME</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value</span><span class="p">;</span>
<a id="__codelineno-2-2" name="__codelineno-2-2"></a><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">PI</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">3.14159</span><span class="p">;</span><span class="w"> </span><span class="c1">//example</span>
</code></pre></div></td></tr></table></div>
<h3 id="constant-definition-inside-main-methodfunction">Constant Definition (inside main method/function)</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-1">1</a></span>
<span class="normal"><a href="#__codelineno-3-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1"></a><span class="kd">final</span><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="n">CONSTANT_NAME</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value</span><span class="p">;</span>
<a id="__codelineno-3-2" name="__codelineno-3-2"></a><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">PI</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">3.14159</span><span class="p">;</span><span class="w"> </span><span class="c1">//example</span>
</code></pre></div></td></tr></table></div>
<h3 id="screen-output">Screen Output</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-1">1</a></span>
<span class="normal"><a href="#__codelineno-4-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1"></a><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">output_1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">output_n</span><span class="p">);</span><span class="w"> </span><span class="c1">//newline at every invocation</span>
<a id="__codelineno-4-2" name="__codelineno-4-2"></a><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">print</span><span class="p">(</span><span class="n">output_1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">output_n</span><span class="p">);</span>
</code></pre></div></td></tr></table></div>
<h3 id="output-formatting">Output Formatting</h3>
<p><a href="https://dzone.com/articles/java-string-format-examples">String.format() Examples</a></p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-1">1</a></span>
<span class="normal"><a href="#__codelineno-5-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1"></a><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">printf</span><span class="p">(</span><span class="s">&quot;string %..&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">variable</span><span class="p">);</span>
<a id="__codelineno-5-2" name="__codelineno-5-2"></a><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">String</span><span class="p">.</span><span class="na">format</span><span class="p">(</span><span class="n">format</span><span class="p">,</span><span class="w"> </span><span class="n">args</span><span class="p">));</span>
</code></pre></div></td></tr></table></div>
<p>Methods inherited from C. The value pf the variable substitutes %.<br />
<code>%d</code> int, <code>%f</code> float, <code>%c</code> char, <code>%s</code> string, <code>%e</code> scientific notation.<br />
<code>%digitNumber.decimalDigitNumber</code> specifies the space occupied by the output.</p>
<p><code>NumberFormat</code> class is used to format a number output.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-6-1">1</a></span>
<span class="normal"><a href="#__codelineno-6-2">2</a></span>
<span class="normal"><a href="#__codelineno-6-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1"></a><span class="n">Locale</span><span class="w"> </span><span class="n">locale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Locale</span><span class="p">(</span><span class="s">&quot;language&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;country&quot;</span><span class="p">);</span><span class="w"> </span><span class="c1">// as defined by IETF lang tag, RCF 5646, RCF 4647</span>
<a id="__codelineno-6-2" name="__codelineno-6-2"></a><span class="n">NumberFormat</span><span class="w"> </span><span class="n">fmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">NumberFormat</span><span class="p">.</span><span class="na">getCurrencyInstance</span><span class="p">(</span><span class="n">locale</span><span class="p">);</span><span class="w"> </span><span class="c1">// format a number as a currency based on a Locale</span>
<a id="__codelineno-6-3" name="__codelineno-6-3"></a><span class="n">fmt</span><span class="p">.</span><span class="na">format</span><span class="p">(</span><span class="n">number</span><span class="p">);</span><span class="w"> </span><span class="c1">// apply format to a number, returns a String</span>
</code></pre></div></td></tr></table></div>
<h2 id="keyboard-input">Keyboard Input</h2>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-7-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-7-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-7-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-7-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-7-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-7-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-7-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-7-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-7-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-7-10">10</a></span>
<span class="normal"><a href="#__codelineno-7-11">11</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1"></a><span class="kn">import</span><span class="w"> </span><span class="nn">java.util.Scanner</span><span class="p">;</span><span class="w"> </span><span class="c1">//package import</span>
<a id="__codelineno-7-2" name="__codelineno-7-2"></a><span class="n">Scanner</span><span class="w"> </span><span class="n">scanner</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Scanner</span><span class="p">(</span><span class="n">System</span><span class="p">.</span><span class="na">in</span><span class="p">);</span><span class="w"> </span><span class="c1">//Scanner obj init</span>
<a id="__codelineno-7-3" name="__codelineno-7-3"></a><span class="n">scanner</span><span class="p">.</span><span class="na">useDelimiter</span><span class="p">(</span><span class="s">&quot;delimitatore&quot;</span><span class="p">);</span><span class="w"> </span><span class="c1">//delimiter setting</span>
<a id="__codelineno-7-4" name="__codelineno-7-4"></a><span class="n">scanner</span><span class="p">.</span><span class="na">close</span><span class="p">()</span><span class="w"> </span><span class="c1">//closing of Scanner, releases memory</span>
<a id="__codelineno-7-5" name="__codelineno-7-5"></a>
<a id="__codelineno-7-6" name="__codelineno-7-6"></a><span class="kt">int</span><span class="w"> </span><span class="n">variable_int_1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">scanner</span><span class="p">.</span><span class="na">nextInt</span><span class="p">();</span><span class="w"> </span><span class="c1">//takes integer number</span>
<a id="__codelineno-7-7" name="__codelineno-7-7"></a><span class="n">String</span><span class="w"> </span><span class="n">string_1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">scanner</span><span class="p">.</span><span class="na">nextLine</span><span class="p">();</span><span class="w"> </span><span class="c1">//takes line of text (\n ends line)</span>
<a id="__codelineno-7-8" name="__codelineno-7-8"></a><span class="n">String</span><span class="w"> </span><span class="n">string_1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">scanner</span><span class="p">.</span><span class="na">next</span><span class="p">();</span><span class="w"> </span><span class="c1">//takes text (space ends word)</span>
<a id="__codelineno-7-9" name="__codelineno-7-9"></a><span class="kt">double</span><span class="w"> </span><span class="n">variable_double_1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">scanner</span><span class="p">.</span><span class="na">nextDouble</span><span class="p">();</span><span class="w"> </span><span class="c1">//takes double decimal number</span>
<a id="__codelineno-7-10" name="__codelineno-7-10"></a><span class="kt">boolean</span><span class="w"> </span><span class="n">variable_bool</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">scanner</span><span class="p">.</span><span class="na">nextBoolean</span><span class="p">();</span><span class="w"> </span><span class="c1">//takes boolean value</span>
<a id="__codelineno-7-11" name="__codelineno-7-11"></a><span class="c1">//(TRUE, FALSE, true, false, True, False)</span>
</code></pre></div></td></tr></table></div>
<p>The <code>nextLine()</code> method imports from the <strong>last</strong> <code>\n</code>.<br />
Thus when switching to a different input method is necessary to call <code>nextLine()</code> one more time to avoid errors.</p>
<h3 id="primitive-types">Primitive Types</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-8-1">1</a></span>
<span class="normal"><a href="#__codelineno-8-2">2</a></span>
<span class="normal"><a href="#__codelineno-8-3">3</a></span>
<span class="normal"><a href="#__codelineno-8-4">4</a></span>
<span class="normal"><a href="#__codelineno-8-5">5</a></span>
<span class="normal"><a href="#__codelineno-8-6">6</a></span>
<span class="normal"><a href="#__codelineno-8-7">7</a></span>
<span class="normal"><a href="#__codelineno-8-8">8</a></span>
<span class="normal"><a href="#__codelineno-8-9">9</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1"></a><span class="n">TYPE</span><span class="w"> </span><span class="n">WRAPPER</span><span class="w"> </span><span class="n">SIZE</span><span class="w"> </span><span class="n">MIN_VALUE</span><span class="w"> </span><span class="n">MAX_VALUE</span>
<a id="__codelineno-8-2" name="__codelineno-8-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">Integer</span><span class="w"> </span><span class="o">-</span><span class="mi">2147483648</span><span class="w"> </span><span class="mi">2147483647</span>
<a id="__codelineno-8-3" name="__codelineno-8-3"></a><span class="kt">byte</span><span class="w"> </span><span class="n">Byte</span><span class="w"> </span><span class="mi">8</span><span class="w"> </span><span class="n">bit</span><span class="w"> </span><span class="o">-</span><span class="mi">128</span><span class="w"> </span><span class="mi">127</span>
<a id="__codelineno-8-4" name="__codelineno-8-4"></a><span class="kt">short</span><span class="w"> </span><span class="n">Short</span><span class="w"> </span><span class="mi">16</span><span class="w"> </span><span class="n">bit</span><span class="w"> </span><span class="o">-</span><span class="mi">32768</span><span class="w"> </span><span class="mi">32767</span>
<a id="__codelineno-8-5" name="__codelineno-8-5"></a><span class="kt">long</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">L</span><span class="w"> </span><span class="n">Long</span><span class="w"> </span><span class="mi">32</span><span class="w"> </span><span class="n">bit</span><span class="w"> </span><span class="o">-</span><span class="mi">9223372036854775808</span><span class="w"> </span><span class="mi">9223372036854775807</span>
<a id="__codelineno-8-6" name="__codelineno-8-6"></a><span class="kt">float</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="n">Float</span><span class="w"> </span><span class="mi">32</span><span class="w"> </span><span class="n">bit</span><span class="w"> </span><span class="mf">1.4</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">10</span><span class="o">^-</span><span class="mi">45</span><span class="w"> </span><span class="mf">3.4028235</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">10</span><span class="o">^</span><span class="mi">38</span>
<a id="__codelineno-8-7" name="__codelineno-8-7"></a><span class="kt">double</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="n">Double</span><span class="w"> </span><span class="mi">64</span><span class="w"> </span><span class="n">bit</span><span class="w"> </span><span class="mf">4.9</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">10</span><span class="o">^-</span><span class="mi">324</span><span class="w"> </span><span class="mf">1.7976931348623157</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">10</span><span class="o">^</span><span class="mi">308</span>
<a id="__codelineno-8-8" name="__codelineno-8-8"></a><span class="kt">char</span><span class="w"> </span><span class="n">Character</span><span class="w"> </span><span class="mi">16</span><span class="w"> </span><span class="n">bit</span><span class="w"> </span><span class="n">U</span><span class="o">+</span><span class="mo">0000</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="n">U</span><span class="o">+</span><span class="n">FFFF</span><span class="w"> </span><span class="p">(</span><span class="mi">65535</span><span class="p">)</span>
<a id="__codelineno-8-9" name="__codelineno-8-9"></a><span class="kt">boolean</span><span class="w"> </span><span class="n">Boolean</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="kc">true</span>
</code></pre></div></td></tr></table></div>
<p>Digits can be separated by _ (underscore).<br />
If not specified int &amp; double are the default types.</p>
<h3 id="floating-point-numbers-precision-calcs">Floating-Point numbers &amp; Precision Calcs</h3>
<p>Don't use <code>==</code> or <code>!=</code> to confront floating value numbers since they use approximation or have a lot of digits.<br />
It's best to check if the difference between two numbers is small enough.<br />
For high precision calcs is best to use <code>BigDecimal</code>.</p>
<h3 id="type-conversion-casting-type-checking">Type Conversion (casting) &amp; Type checking</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1">1</a></span>
<span class="normal"><a href="#__codelineno-9-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1"></a><span class="n">Type</span><span class="w"> </span><span class="n">variable</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">Type</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;</span><span class="n">expression</span><span class="o">&gt;</span><span class="p">;</span><span class="w"> </span><span class="c1">// convert to other Type</span>
<a id="__codelineno-9-2" name="__codelineno-9-2"></a><span class="kd">var</span><span class="w"> </span><span class="n">instanceof</span><span class="w"> </span><span class="n">Type</span><span class="p">;</span><span class="w"> </span><span class="c1">// true if var is an instance of Type</span>
</code></pre></div></td></tr></table></div>
<h3 id="wrapper-classes">Wrapper Classes</h3>
<p>Every primitive type has a corresponding wrapper class.<br />
Wrapper classes permits the creation of an object with the same type of a primitive type but with added methods and constants.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-10-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-10-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-10-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-10-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-10-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-10-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-10-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-10-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-10-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-10-10">10</a></span>
<span class="normal"><a href="#__codelineno-10-11">11</a></span>
<span class="normal"><a href="#__codelineno-10-12">12</a></span>
<span class="normal"><a href="#__codelineno-10-13">13</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1"></a><span class="n">WrapperClass</span><span class="w"> </span><span class="n">objectName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">WrapperClass</span><span class="p">(</span><span class="n">primitiveValue</span><span class="p">);</span><span class="w"> </span><span class="c1">//declaration</span>
<a id="__codelineno-10-2" name="__codelineno-10-2"></a><span class="n">WrapperClass</span><span class="w"> </span><span class="n">objectName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">primitiveValue</span><span class="p">;</span><span class="w"> </span><span class="c1">//shortened declaration</span>
<a id="__codelineno-10-3" name="__codelineno-10-3"></a>
<a id="__codelineno-10-4" name="__codelineno-10-4"></a>
<a id="__codelineno-10-5" name="__codelineno-10-5"></a><span class="n">Type</span><span class="w"> </span><span class="n">variable</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">object</span><span class="p">.</span><span class="o">&lt;</span><span class="n">Type</span><span class="o">&gt;</span><span class="n">Value</span><span class="p">();</span><span class="w"> </span><span class="c1">//unboxing</span>
<a id="__codelineno-10-6" name="__codelineno-10-6"></a><span class="n">Type</span><span class="w"> </span><span class="n">variable</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">object</span><span class="p">;</span><span class="w"> </span><span class="c1">//autoboxing</span>
<a id="__codelineno-10-7" name="__codelineno-10-7"></a><span class="n">Type</span><span class="w"> </span><span class="n">variable</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">WrapperClass</span><span class="p">(</span><span class="n">primitiveValue</span><span class="p">);</span><span class="w"> </span><span class="c1">//automatic unboxing</span>
<a id="__codelineno-10-8" name="__codelineno-10-8"></a>
<a id="__codelineno-10-9" name="__codelineno-10-9"></a><span class="n">WrapperClass</span><span class="p">.</span><span class="na">MIN_VALUE</span><span class="w"> </span><span class="c1">//constant holding min possible value of wrapper class</span>
<a id="__codelineno-10-10" name="__codelineno-10-10"></a><span class="n">WrapperClass</span><span class="p">.</span><span class="na">MAX_VALUE</span><span class="w"> </span><span class="c1">//constant holding man possible value of wrapper class</span>
<a id="__codelineno-10-11" name="__codelineno-10-11"></a>
<a id="__codelineno-10-12" name="__codelineno-10-12"></a><span class="n">WrapperClass</span><span class="p">.</span><span class="na">parseClasseWrapper</span><span class="p">(</span><span class="n">string</span><span class="p">);</span><span class="w"> </span><span class="c1">// converts the tring to the wrapper class, NumberFOrmatException on error</span>
<a id="__codelineno-10-13" name="__codelineno-10-13"></a><span class="n">WrapperClass</span><span class="p">.</span><span class="na">toString</span><span class="p">(</span><span class="n">primitive</span><span class="p">);</span><span class="w"> </span><span class="c1">// converts the wrapper class value to a string</span>
</code></pre></div></td></tr></table></div>
<h3 id="string-char">String &amp; Char</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-11-1">1</a></span>
<span class="normal"><a href="#__codelineno-11-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1"></a><span class="n">String</span><span class="w"> </span><span class="n">string</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;text&quot;</span><span class="p">;</span><span class="w"> </span><span class="c1">//strings always in double quotes</span>
<a id="__codelineno-11-2" name="__codelineno-11-2"></a><span class="kt">char</span><span class="w"> </span><span class="n">character</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sc">&#39;C&#39;</span><span class="p">;</span><span class="w"> </span><span class="c1">//chars always in single quotes</span>
</code></pre></div></td></tr></table></div>
<h3 id="special-characters">Special Characters</h3>
<table>
<thead>
<tr>
<th>Escape Character</th>
<th>Character</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>\n</code></td>
<td>new line</td>
</tr>
<tr>
<td><code>\t</code></td>
<td>tab</td>
</tr>
<tr>
<td><code>\b</code></td>
<td>backspace</td>
</tr>
<tr>
<td><code>\r</code></td>
<td>carriage return</td>
</tr>
<tr>
<td><code>\f</code></td>
<td>form feed</td>
</tr>
<tr>
<td><code>\\</code></td>
<td>backslash</td>
</tr>
<tr>
<td><code>\"</code></td>
<td>double quote</td>
</tr>
<tr>
<td><code>\u&lt;4_hex_digits&gt;</code></td>
<td>unicode characters</td>
</tr>
<tr>
<td><code>\x&lt;digits&gt;</code></td>
<td>hexadecimal characters</td>
</tr>
<tr>
<td><code>\o&lt;digits&gt;</code></td>
<td>octal characters</td>
</tr>
<tr>
<td><code>\&lt;digits&gt;</code></td>
<td>ASCII character</td>
</tr>
</tbody>
</table>
<h3 id="string-concatenation">String Concatenation</h3>
<p>The value of the variable is appende to the string literal.<br />
<code>"text" + variable</code><br />
String are immutable. Concatenation creates a new string.</p>
<h3 id="string-conversion-to-number">String Conversion to Number</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-12-1">1</a></span>
<span class="normal"><a href="#__codelineno-12-2">2</a></span>
<span class="normal"><a href="#__codelineno-12-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1"></a><span class="kt">double</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Double</span><span class="p">.</span><span class="na">parseDouble</span><span class="p">(</span><span class="n">string</span><span class="p">);</span>
<a id="__codelineno-12-2" name="__codelineno-12-2"></a><span class="kt">float</span><span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Float</span><span class="p">.</span><span class="na">parseFloat</span><span class="p">(</span><span class="n">string</span><span class="p">);</span>
<a id="__codelineno-12-3" name="__codelineno-12-3"></a><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">integer</span><span class="p">.</span><span class="na">parseInt</span><span class="p">(</span><span class="n">string</span><span class="p">);</span>
</code></pre></div></td></tr></table></div>
<h3 id="string-class-methods">String Class Methods</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-13-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-13-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-13-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-13-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-13-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-13-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-13-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-13-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-13-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-13-10">10</a></span>
<span class="normal"><a href="#__codelineno-13-11">11</a></span>
<span class="normal"><a href="#__codelineno-13-12">12</a></span>
<span class="normal"><a href="#__codelineno-13-13">13</a></span>
<span class="normal"><a href="#__codelineno-13-14">14</a></span>
<span class="normal"><a href="#__codelineno-13-15">15</a></span>
<span class="normal"><a href="#__codelineno-13-16">16</a></span>
<span class="normal"><a href="#__codelineno-13-17">17</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1"></a><span class="n">string</span><span class="p">.</span><span class="na">equals</span><span class="p">(</span><span class="n">otherString</span><span class="p">);</span><span class="w"> </span><span class="c1">// returns TRUE if the strings are equal</span>
<a id="__codelineno-13-2" name="__codelineno-13-2"></a><span class="n">string</span><span class="p">.</span><span class="na">equalsIgnoreCase</span><span class="p">(</span><span class="n">otherString</span><span class="p">);</span><span class="w"> </span><span class="c1">// returns TRUE if the strings are equals ignoring the case</span>
<a id="__codelineno-13-3" name="__codelineno-13-3"></a><span class="n">string</span><span class="p">.</span><span class="na">charAt</span><span class="p">(</span><span class="n">index</span><span class="p">);</span><span class="w"> </span><span class="c1">// returns the character at position INDEX</span>
<a id="__codelineno-13-4" name="__codelineno-13-4"></a><span class="n">string</span><span class="p">.</span><span class="na">startsWith</span><span class="p">(</span><span class="n">otherString</span><span class="p">);</span><span class="w"> </span><span class="c1">// returns TRUE if string starts with otherString</span>
<a id="__codelineno-13-5" name="__codelineno-13-5"></a><span class="n">string</span><span class="p">.</span><span class="na">endsWith</span><span class="p">(</span><span class="n">otherString</span><span class="p">)</span><span class="w"> </span><span class="c1">// returns TRUE if string ends with otherString</span>
<a id="__codelineno-13-6" name="__codelineno-13-6"></a><span class="n">string</span><span class="p">.</span><span class="na">concat</span><span class="p">(</span><span class="n">otherString</span><span class="p">);</span><span class="w"> </span><span class="c1">// concatenation of two strings</span>
<a id="__codelineno-13-7" name="__codelineno-13-7"></a><span class="n">string</span><span class="p">.</span><span class="na">indexOf</span><span class="p">(</span><span class="n">otherString</span><span class="p">);</span><span class="w"> </span><span class="c1">// returns index of the first occurrence of other string</span>
<a id="__codelineno-13-8" name="__codelineno-13-8"></a><span class="n">string</span><span class="p">.</span><span class="na">lastIndexOf</span><span class="p">(</span><span class="n">otherString</span><span class="p">);</span><span class="w"> </span><span class="c1">// returns index of the last occurrence of other string</span>
<a id="__codelineno-13-9" name="__codelineno-13-9"></a><span class="n">string</span><span class="p">.</span><span class="na">length</span><span class="p">();</span><span class="w"> </span><span class="c1">// returns the length of the string</span>
<a id="__codelineno-13-10" name="__codelineno-13-10"></a><span class="n">string</span><span class="p">.</span><span class="na">toLowerCase</span><span class="p">();</span><span class="w"> </span><span class="c1">// transform the string in uppercase characters</span>
<a id="__codelineno-13-11" name="__codelineno-13-11"></a><span class="n">string</span><span class="p">.</span><span class="na">toUpperCase</span><span class="p">();</span><span class="w"> </span><span class="c1">// transform the string in lowercase characters</span>
<a id="__codelineno-13-12" name="__codelineno-13-12"></a><span class="n">string</span><span class="p">.</span><span class="na">replace</span><span class="p">(</span><span class="n">character</span><span class="p">,</span><span class="w"> </span><span class="n">newCharacter</span><span class="p">);</span><span class="w"> </span><span class="c1">// substitutes character with newCharacter</span>
<a id="__codelineno-13-13" name="__codelineno-13-13"></a><span class="n">string</span><span class="p">.</span><span class="na">replaceAll</span><span class="p">(</span><span class="n">regex</span><span class="p">,</span><span class="w"> </span><span class="n">replacement</span><span class="p">);</span>
<a id="__codelineno-13-14" name="__codelineno-13-14"></a><span class="n">string</span><span class="p">.</span><span class="na">substring</span><span class="p">(</span><span class="n">start</span><span class="p">,</span><span class="w"> </span><span class="n">end</span><span class="p">);</span><span class="w"> </span><span class="c1">// returns a substring starting as START and ending at END (included)</span>
<a id="__codelineno-13-15" name="__codelineno-13-15"></a><span class="n">string</span><span class="p">.</span><span class="na">trim</span><span class="p">();</span><span class="w"> </span><span class="c1">// removes spaces before and after the string</span>
<a id="__codelineno-13-16" name="__codelineno-13-16"></a><span class="n">string</span><span class="p">.</span><span class="na">Split</span><span class="p">(</span><span class="n">delimiter</span><span class="p">);</span><span class="w"> </span><span class="c1">// return a String[] generated by splitting string at the occurrence of delimiter</span>
<a id="__codelineno-13-17" name="__codelineno-13-17"></a><span class="n">string</span><span class="p">.</span><span class="na">compareTo</span><span class="p">(</span><span class="n">otherString</span><span class="p">);</span>
</code></pre></div></td></tr></table></div>
<p><code>compareTo()</code> returns a number: </p>
<ul>
<li><code>-1</code> if <code>string</code> precedes <code>otherString</code></li>
<li><code>0</code> if the strings are equal </li>
<li><code>1</code> if <code>otherString</code> precedes <code>string</code></li>
</ul>
<p><code>compareTo()</code> compares the lexicographic order (based on UNICODE).<br />
To compare in alphabetical order both strings must have the same case.</p>
<h3 id="mathematical-operations">Mathematical Operations</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-14-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-14-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-14-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-14-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-14-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-14-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-14-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-14-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-14-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-14-10">10</a></span>
<span class="normal"><a href="#__codelineno-14-11">11</a></span>
<span class="normal"><a href="#__codelineno-14-12">12</a></span>
<span class="normal"><a href="#__codelineno-14-13">13</a></span>
<span class="normal"><a href="#__codelineno-14-14">14</a></span>
<span class="normal"><a href="#__codelineno-14-15">15</a></span>
<span class="normal"><a href="#__codelineno-14-16">16</a></span>
<span class="normal"><a href="#__codelineno-14-17">17</a></span>
<span class="normal"><a href="#__codelineno-14-18">18</a></span>
<span class="normal"><a href="#__codelineno-14-19">19</a></span>
<span class="normal"><a href="#__codelineno-14-20">20</a></span>
<span class="normal"><a href="#__codelineno-14-21">21</a></span>
<span class="normal"><a href="#__codelineno-14-22">22</a></span>
<span class="normal"><a href="#__codelineno-14-23">23</a></span>
<span class="normal"><a href="#__codelineno-14-24">24</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1"></a><span class="n">Math</span><span class="p">.</span><span class="na">PI</span><span class="w"> </span><span class="c1">// value of pi</span>
<a id="__codelineno-14-2" name="__codelineno-14-2"></a><span class="n">Math</span><span class="p">.</span><span class="na">E</span><span class="w"> </span><span class="c1">// value of e</span>
<a id="__codelineno-14-3" name="__codelineno-14-3"></a>
<a id="__codelineno-14-4" name="__codelineno-14-4"></a><span class="n">Math</span><span class="p">.</span><span class="na">abs</span><span class="p">(</span><span class="n">x</span><span class="p">);</span><span class="w"> </span><span class="c1">//absolute value of x</span>
<a id="__codelineno-14-5" name="__codelineno-14-5"></a><span class="n">Math</span><span class="p">.</span><span class="na">acos</span><span class="p">(</span><span class="n">x</span><span class="p">);</span>
<a id="__codelineno-14-6" name="__codelineno-14-6"></a><span class="n">Math</span><span class="p">.</span><span class="na">asin</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<a id="__codelineno-14-7" name="__codelineno-14-7"></a><span class="n">Math</span><span class="p">.</span><span class="na">atan</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<a id="__codelineno-14-8" name="__codelineno-14-8"></a><span class="n">Math</span><span class="p">.</span><span class="na">atan2</span><span class="p">(</span><span class="n">y</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="p">)</span>
<a id="__codelineno-14-9" name="__codelineno-14-9"></a><span class="n">Math</span><span class="p">.</span><span class="na">ceil</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<a id="__codelineno-14-10" name="__codelineno-14-10"></a><span class="n">Math</span><span class="p">.</span><span class="na">cos</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<a id="__codelineno-14-11" name="__codelineno-14-11"></a><span class="n">Math</span><span class="p">.</span><span class="na">exp</span><span class="p">(</span><span class="n">x</span><span class="p">);</span><span class="w"> </span><span class="c1">//e^x</span>
<a id="__codelineno-14-12" name="__codelineno-14-12"></a><span class="n">Math</span><span class="p">.</span><span class="na">floor</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<a id="__codelineno-14-13" name="__codelineno-14-13"></a><span class="n">Math</span><span class="p">.</span><span class="na">log</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<a id="__codelineno-14-14" name="__codelineno-14-14"></a><span class="n">Math</span><span class="p">.</span><span class="na">max</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">)</span>
<a id="__codelineno-14-15" name="__codelineno-14-15"></a><span class="n">Math</span><span class="p">.</span><span class="na">min</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">)</span>
<a id="__codelineno-14-16" name="__codelineno-14-16"></a><span class="n">Math</span><span class="p">.</span><span class="na">pow</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">);</span><span class="w"> </span><span class="c1">//x^y</span>
<a id="__codelineno-14-17" name="__codelineno-14-17"></a><span class="n">Math</span><span class="p">.</span><span class="na">random</span><span class="p">()</span>
<a id="__codelineno-14-18" name="__codelineno-14-18"></a><span class="n">Math</span><span class="p">.</span><span class="na">rint</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<a id="__codelineno-14-19" name="__codelineno-14-19"></a><span class="n">Math</span><span class="p">.</span><span class="na">round</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<a id="__codelineno-14-20" name="__codelineno-14-20"></a><span class="n">Math</span><span class="p">.</span><span class="na">sin</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<a id="__codelineno-14-21" name="__codelineno-14-21"></a><span class="n">Math</span><span class="p">.</span><span class="na">sqrt</span><span class="p">(</span><span class="n">x</span><span class="p">);</span><span class="w"> </span><span class="c1">//square root, x^(1/2)</span>
<a id="__codelineno-14-22" name="__codelineno-14-22"></a><span class="n">Math</span><span class="p">.</span><span class="na">tan</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<a id="__codelineno-14-23" name="__codelineno-14-23"></a><span class="n">Math</span><span class="p">.</span><span class="na">toDegrees</span><span class="p">(</span><span class="n">rad</span><span class="p">)</span>
<a id="__codelineno-14-24" name="__codelineno-14-24"></a><span class="n">Math</span><span class="p">.</span><span class="na">toRadians</span><span class="p">(</span><span class="n">deg</span><span class="p">)</span>
</code></pre></div></td></tr></table></div>
<h3 id="arithmetic-operators">Arithmetic Operators</h3>
<table>
<thead>
<tr>
<th>operator</th>
<th>operation</th>
</tr>
</thead>
<tbody>
<tr>
<td>a <code>+</code> b</td>
<td>sum</td>
</tr>
<tr>
<td>a <code>-</code> b</td>
<td>subtraction</td>
</tr>
<tr>
<td>a <code>*</code> b</td>
<td>multiplication</td>
</tr>
<tr>
<td>a <code>/</code> b</td>
<td>division</td>
</tr>
<tr>
<td>a <code>%</code> b</td>
<td>modulo</td>
</tr>
<tr>
<td>a<code>++</code></td>
<td>increment</td>
</tr>
<tr>
<td>a<code>--</code></td>
<td>decrement</td>
</tr>
</tbody>
</table>
<h3 id="comparison-operators">Comparison Operators</h3>
<table>
<thead>
<tr>
<th>operator</th>
<th>operation</th>
</tr>
</thead>
<tbody>
<tr>
<td>a <code>==</code> b</td>
<td>equal to</td>
</tr>
<tr>
<td>a <code>!=</code> b</td>
<td>not equal to</td>
</tr>
<tr>
<td>a <code>&gt;</code> b</td>
<td>greater than</td>
</tr>
<tr>
<td>a <code>&lt;</code> b</td>
<td>lesser than</td>
</tr>
<tr>
<td>a <code>&gt;=</code> b</td>
<td>greater than or equal to</td>
</tr>
<tr>
<td>a <code>&lt;=</code> b</td>
<td>lesser than or equal to</td>
</tr>
</tbody>
</table>
<h3 id="logical-operators">Logical Operators</h3>
<table>
<thead>
<tr>
<th>operator</th>
<th>operation</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>!</code>a</td>
<td>logical negation (<strong>NOT</strong>)</td>
</tr>
<tr>
<td>a <code>&amp;&amp;</code> b,</td>
<td>logical <strong>AND</strong></td>
</tr>
<tr>
<td>a <code>||</code> b,</td>
<td>logical <strong>OR</strong></td>
</tr>
</tbody>
</table>
<h3 id="bitwise-operators">Bitwise Operators</h3>
<table>
<thead>
<tr>
<th>operator</th>
<th>operation</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>~</code>a</td>
<td>bitwise <strong>NOT</strong></td>
</tr>
<tr>
<td>a <code>&amp;</code> b</td>
<td>bitwise <strong>AND</strong></td>
</tr>
<tr>
<td>a <code>|</code> b</td>
<td>bitwise <strong>OR</strong></td>
</tr>
<tr>
<td>a <code>^</code> b</td>
<td>bitwise <strong>XOR</strong></td>
</tr>
<tr>
<td>a <code>&lt;&lt;</code> b</td>
<td>bitwise left shift</td>
</tr>
<tr>
<td>a <code>&gt;&gt;</code> b</td>
<td>bitwise right shift</td>
</tr>
</tbody>
</table>
<h3 id="compound-assignment-operators">Compound Assignment Operators</h3>
<table>
<thead>
<tr>
<th>operator</th>
<th>operation</th>
</tr>
</thead>
<tbody>
<tr>
<td>a <code>+=</code> b</td>
<td>a = a + b</td>
</tr>
<tr>
<td>a <code>-=</code> b</td>
<td>a = a - b</td>
</tr>
<tr>
<td>a <code>*=</code> b</td>
<td>a = a * b</td>
</tr>
<tr>
<td>a <code>/=</code> b</td>
<td>a = a / b</td>
</tr>
<tr>
<td>a <code>%=</code> b</td>
<td>a = a % b</td>
</tr>
<tr>
<td>a <code>&amp;=</code> b</td>
<td>a = a &amp; b</td>
</tr>
<tr>
<td>a <code>|=</code> b</td>
<td>a = a</td>
</tr>
<tr>
<td>a <code>^=</code> b</td>
<td>a = a ^ b</td>
</tr>
<tr>
<td>a <code>&lt;&lt;=</code> b</td>
<td>a = a &lt;&lt; b</td>
</tr>
<tr>
<td>a <code>&gt;&gt;=</code> b</td>
<td>a = a &gt;&gt; b</td>
</tr>
</tbody>
</table>
<h3 id="operator-precedence">Operator Precedence</h3>
<ol>
<li>unary operators <code>++</code> , <code>--</code>, <code>!</code></li>
<li>binary arithmetic operators <code>*</code>, <code>/</code>, <code>%</code></li>
<li>binary arithmetic operators <code>+</code>, <code>-</code></li>
<li>boolean operators <code>&lt;</code>, <code>&gt;</code> , <code>&lt;=</code>, <code>&gt;=</code></li>
<li>boolean operators <code>==</code>, <code>!=</code></li>
<li>bitwise operator <code>&amp;</code></li>
<li>bitwise operator <code>|</code></li>
<li>logical operator <code>&amp;&amp;</code></li>
<li>logical operator <code>||</code></li>
</ol>
<h3 id="short-circuit-evaluation">Short Circuit Evaluation</h3>
<p>If in <code>(expressionA || expressionB)</code> expressionA results <code>true</code>, Java returns <code>true</code> without evaluating expressionB.<br />
If in <code>(expressionA &amp;&amp; expressionB)</code> expressionA results <code>false</code>, Java returns <code>false</code> without evaluating expressionB.<br />
Full evaluation can be forced using <code>&amp;</code> and <code>|</code>.</p>
<h2 id="decision-statements">Decision Statements</h2>
<h3 id="if-else"><code>If Else</code></h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-15-1">1</a></span>
<span class="normal"><a href="#__codelineno-15-2">2</a></span>
<span class="normal"><a href="#__codelineno-15-3">3</a></span>
<span class="normal"><a href="#__codelineno-15-4">4</a></span>
<span class="normal"><a href="#__codelineno-15-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1"></a><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">condition</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-15-2" name="__codelineno-15-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-15-3" name="__codelineno-15-3"></a><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-15-4" name="__codelineno-15-4"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-15-5" name="__codelineno-15-5"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="if-else-if-else"><code>If, Else If, Else</code></h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-16-1">1</a></span>
<span class="normal"><a href="#__codelineno-16-2">2</a></span>
<span class="normal"><a href="#__codelineno-16-3">3</a></span>
<span class="normal"><a href="#__codelineno-16-4">4</a></span>
<span class="normal"><a href="#__codelineno-16-5">5</a></span>
<span class="normal"><a href="#__codelineno-16-6">6</a></span>
<span class="normal"><a href="#__codelineno-16-7">7</a></span>
<span class="normal"><a href="#__codelineno-16-8">8</a></span>
<span class="normal"><a href="#__codelineno-16-9">9</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1"></a><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">condition</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-16-2" name="__codelineno-16-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-16-3" name="__codelineno-16-3"></a><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">condition</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-16-4" name="__codelineno-16-4"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-16-5" name="__codelineno-16-5"></a><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">condition</span><span class="p">){</span>
<a id="__codelineno-16-6" name="__codelineno-16-6"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-16-7" name="__codelineno-16-7"></a><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-16-8" name="__codelineno-16-8"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-16-9" name="__codelineno-16-9"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="ternary-operator">Ternary Operator</h3>
<p><code>(condition) ? istruzione_1 : istruzione_2;</code><br />
if condition is <code>true</code> executes instruction1 otherwise executes instruction2.</p>
<h3 id="switch"><code>Switch</code></h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-17-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-17-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-17-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-17-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-17-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-17-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-17-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-17-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-17-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-17-10">10</a></span>
<span class="normal"><a href="#__codelineno-17-11">11</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1"></a><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">matchExpression</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-17-2" name="__codelineno-17-2"></a><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="n">matchingPattern</span><span class="p">:</span>
<a id="__codelineno-17-3" name="__codelineno-17-3"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-17-4" name="__codelineno-17-4"></a><span class="w"> </span><span class="k">break</span><span class="p">;</span>
<a id="__codelineno-17-5" name="__codelineno-17-5"></a><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="n">matchingPattern</span><span class="p">:</span>
<a id="__codelineno-17-6" name="__codelineno-17-6"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-17-7" name="__codelineno-17-7"></a><span class="w"> </span><span class="k">break</span><span class="p">;</span>
<a id="__codelineno-17-8" name="__codelineno-17-8"></a><span class="w"> </span><span class="k">default</span><span class="p">:</span>
<a id="__codelineno-17-9" name="__codelineno-17-9"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-17-10" name="__codelineno-17-10"></a><span class="w"> </span><span class="k">break</span><span class="p">;</span>
<a id="__codelineno-17-11" name="__codelineno-17-11"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<p>Omitting the <code>break</code> keyword causes multiple branches to execute the same code.</p>
<h2 id="loop-statements">Loop Statements</h2>
<h3 id="while-loop"><code>While</code> Loop</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-18-1">1</a></span>
<span class="normal"><a href="#__codelineno-18-2">2</a></span>
<span class="normal"><a href="#__codelineno-18-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1"></a><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">condition</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-18-2" name="__codelineno-18-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-18-3" name="__codelineno-18-3"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="do-while-loop"><code>Do While</code> Loop</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-19-1">1</a></span>
<span class="normal"><a href="#__codelineno-19-2">2</a></span>
<span class="normal"><a href="#__codelineno-19-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1"></a><span class="k">do</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-19-2" name="__codelineno-19-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-19-3" name="__codelineno-19-3"></a><span class="p">}</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">espressione_booleana</span><span class="p">);</span>
</code></pre></div></td></tr></table></div>
<p>Loop body executed <em>at least</em> one time</p>
<h3 id="for-loop"><code>For</code> Loop</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-20-1">1</a></span>
<span class="normal"><a href="#__codelineno-20-2">2</a></span>
<span class="normal"><a href="#__codelineno-20-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">initializer</span><span class="p">;</span><span class="w"> </span><span class="n">condition</span><span class="p">;</span><span class="w"> </span><span class="n">iterator</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-20-2" name="__codelineno-20-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-20-3" name="__codelineno-20-3"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="foreach-loop"><code>Foreach</code> Loop</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-21-1">1</a></span>
<span class="normal"><a href="#__codelineno-21-2">2</a></span>
<span class="normal"><a href="#__codelineno-21-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">Type</span><span class="w"> </span><span class="n">variable</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">iterable</span><span class="p">){</span>
<a id="__codelineno-21-2" name="__codelineno-21-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-21-3" name="__codelineno-21-3"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="multiple-iterators-in-for-loop">Multiple iterators in <code>For</code> Loop</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-22-1">1</a></span>
<span class="normal"><a href="#__codelineno-22-2">2</a></span>
<span class="normal"><a href="#__codelineno-22-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">initializer1</span><span class="p">,</span><span class="w"> </span><span class="n">initializer2</span><span class="p">;</span><span class="w"> </span><span class="n">condition</span><span class="p">;</span><span class="w"> </span><span class="n">iterator1</span><span class="p">,</span><span class="w"> </span><span class="n">iterator2</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-22-2" name="__codelineno-22-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-22-3" name="__codelineno-22-3"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<p>The iterator declared in the for is a local variable and can be used only in the for loop block.</p>
<h3 id="forced-program-termination">Forced Program Termination</h3>
<p><code>System.exit(returnedValue);</code> forces the termination of the program execution returning a specified value.</p>
<h3 id="assertion-checks">Assertion Checks</h3>
<p>If the assertion check is enabled (<code>java -ebableassetrions programName</code>) the execution of the algorithm is terminated if an assertion fails.<br />
Assertions can be used to check if a variable has a wanted value in a precise point in the code (Sanity Check).</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-23-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1"></a><span class="k">assert</span><span class="w"> </span><span class="o">&lt;</span><span class="n">booleanExpression</span><span class="o">&gt;</span><span class="p">;</span>
</code></pre></div></td></tr></table></div>
<h2 id="static-methods">Static Methods</h2>
<p>Static methods are not bound to an <em>instance</em> of a class but they act on the class <em>itself</em>. </p>
<h3 id="static-void-method-definition">Static Void Method Definition</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-24-1">1</a></span>
<span class="normal"><a href="#__codelineno-24-2">2</a></span>
<span class="normal"><a href="#__codelineno-24-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1"></a><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">methodName</span><span class="w"> </span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-24-2" name="__codelineno-24-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-24-3" name="__codelineno-24-3"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="static-method-definition">Static Method Definition</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-25-1">1</a></span>
<span class="normal"><a href="#__codelineno-25-2">2</a></span>
<span class="normal"><a href="#__codelineno-25-3">3</a></span>
<span class="normal"><a href="#__codelineno-25-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1"></a><span class="kd">static</span><span class="w"> </span><span class="n">tipo_metodo</span><span class="w"> </span><span class="nf">methodName</span><span class="w"> </span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-25-2" name="__codelineno-25-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-25-3" name="__codelineno-25-3"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">&lt;</span><span class="n">espressione</span><span class="o">&gt;</span><span class="p">;</span><span class="w"> </span><span class="c1">//returned type MUST match method type</span>
<a id="__codelineno-25-4" name="__codelineno-25-4"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="static-method-invocation">Static Method Invocation</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-26-1">1</a></span>
<span class="normal"><a href="#__codelineno-26-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1"></a><span class="n">methodName</span><span class="p">(</span><span class="n">arguments</span><span class="p">);</span>
<a id="__codelineno-26-2" name="__codelineno-26-2"></a><span class="n">ClassName</span><span class="p">.</span><span class="na">methodName</span><span class="p">(</span><span class="n">arguments</span><span class="p">);</span><span class="w"> </span><span class="c1">//if method is used outside its class</span>
</code></pre></div></td></tr></table></div>
<h2 id="array">Array</h2>
<h2 id="array-declaration">Array Declaration</h2>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-27-1">1</a></span>
<span class="normal"><a href="#__codelineno-27-2">2</a></span>
<span class="normal"><a href="#__codelineno-27-3">3</a></span>
<span class="normal"><a href="#__codelineno-27-4">4</a></span>
<span class="normal"><a href="#__codelineno-27-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1"></a><span class="n">Type</span><span class="o">[]</span><span class="w"> </span><span class="n">arrayName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Type</span><span class="o">[</span><span class="n">dimension</span><span class="o">]</span><span class="p">;</span>
<a id="__codelineno-27-2" name="__codelineno-27-2"></a>
<a id="__codelineno-27-3" name="__codelineno-27-3"></a><span class="n">Type</span><span class="w"> </span><span class="n">arrayName</span><span class="o">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Type</span><span class="o">[</span><span class="n">dimension</span><span class="o">]</span><span class="p">;</span>
<a id="__codelineno-27-4" name="__codelineno-27-4"></a>
<a id="__codelineno-27-5" name="__codelineno-27-5"></a><span class="n">arrayName</span><span class="p">.</span><span class="na">length</span><span class="w"> </span><span class="c1">//length of the array</span>
</code></pre></div></td></tr></table></div>
<p>Its possible to break the declaration in two lines </p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-28-1">1</a></span>
<span class="normal"><a href="#__codelineno-28-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1"></a><span class="n">Type</span><span class="o">[]</span><span class="w"> </span><span class="n">arrayName</span><span class="p">;</span>
<a id="__codelineno-28-2" name="__codelineno-28-2"></a><span class="n">arrayType</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Type</span><span class="o">[</span><span class="n">dimension</span><span class="o">]</span><span class="p">;</span>
</code></pre></div></td></tr></table></div>
<h2 id="array-creation-by-initialization">Array Creation by Initialization</h2>
<p><code>Type[] arrayName = {value1, value2, ...}</code><br />
Array dimension is determined by the number of values.</p>
<h3 id="arrays-as-method-parameters">Arrays as method parameters</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-29-1">1</a></span>
<span class="normal"><a href="#__codelineno-29-2">2</a></span>
<span class="normal"><a href="#__codelineno-29-3">3</a></span>
<span class="normal"><a href="#__codelineno-29-4">4</a></span>
<span class="normal"><a href="#__codelineno-29-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1"></a><span class="kd">static</span><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="nf">methodName</span><span class="w"> </span><span class="p">(</span><span class="n">Type</span><span class="o">[]</span><span class="w"> </span><span class="n">arrayName</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-29-2" name="__codelineno-29-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-29-3" name="__codelineno-29-3"></a><span class="p">}</span>
<a id="__codelineno-29-4" name="__codelineno-29-4"></a>
<a id="__codelineno-29-5" name="__codelineno-29-5"></a><span class="n">methodName</span><span class="p">(</span><span class="n">arrayName</span><span class="p">);</span><span class="w"> </span><span class="c1">//[] omitted when passing array as argument</span>
</code></pre></div></td></tr></table></div>
<p>Single elements of an array can be passed to a method. Array dimension can be omitted. </p>
<h3 id="equality-of-arrays">Equality of Arrays</h3>
<p>As arrays ar object in Java, the operators <code>==</code> and <code>!=</code> confront the memory address of the arrays.<br />
Array contents must be confronted by looping through the array.</p>
<h3 id="methods-returning-arrays">Methods returning Arrays</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-30-1">1</a></span>
<span class="normal"><a href="#__codelineno-30-2">2</a></span>
<span class="normal"><a href="#__codelineno-30-3">3</a></span>
<span class="normal"><a href="#__codelineno-30-4">4</a></span>
<span class="normal"><a href="#__codelineno-30-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-30-1" name="__codelineno-30-1"></a><span class="kd">static</span><span class="w"> </span><span class="n">Type</span><span class="o">[]</span><span class="w"> </span><span class="nf">methodName</span><span class="w"> </span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-30-2" name="__codelineno-30-2"></a><span class="w"> </span><span class="n">Type</span><span class="o">[]</span><span class="w"> </span><span class="n">arrayName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Type</span><span class="o">[</span><span class="n">dimension</span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="c1">//array declaration</span>
<a id="__codelineno-30-3" name="__codelineno-30-3"></a><span class="w"> </span><span class="c1">//array valorization</span>
<a id="__codelineno-30-4" name="__codelineno-30-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">arrayName</span><span class="p">;</span>
<a id="__codelineno-30-5" name="__codelineno-30-5"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h2 id="variable-numbers-of-parameters-in-a-method">Variable numbers of parameters in a method</h2>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-31-1">1</a></span>
<span class="normal"><a href="#__codelineno-31-2">2</a></span>
<span class="normal"><a href="#__codelineno-31-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-31-1" name="__codelineno-31-1"></a><span class="kd">static</span><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="nf">methodName</span><span class="w"> </span><span class="p">(</span><span class="n">parameters</span><span class="p">,</span><span class="w"> </span><span class="n">tipo</span><span class="o">[]</span><span class="w"> </span><span class="n">ArrayName</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-31-2" name="__codelineno-31-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-31-3" name="__codelineno-31-3"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<p>It's not necessary to specify a dimension of the array, it's determined by Java</p>
<h3 id="multi-dimensional-arrays">Multi-Dimensional Arrays</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-32-1">1</a></span>
<span class="normal"><a href="#__codelineno-32-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-32-1" name="__codelineno-32-1"></a><span class="n">Type</span><span class="o">[]</span><span class="p">...</span><span class="o">[]</span><span class="w"> </span><span class="n">arrayName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Type</span><span class="o">[</span><span class="n">dimension1</span><span class="o">]</span><span class="p">...</span><span class="o">[</span><span class="n">dimensionN</span><span class="o">]</span><span class="p">;</span>
<a id="__codelineno-32-2" name="__codelineno-32-2"></a><span class="n">Type</span><span class="w"> </span><span class="n">arrayName</span><span class="o">[]</span><span class="p">...</span><span class="o">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Type</span><span class="o">[</span><span class="n">dimension1</span><span class="o">]</span><span class="p">...</span><span class="o">[</span><span class="n">dimensionN</span><span class="o">]</span><span class="p">;</span>
</code></pre></div></td></tr></table></div>
<h3 id="multi-dimensional-arrays-as-parameters">Multi-Dimensional Arrays as parameters</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-33-1">1</a></span>
<span class="normal"><a href="#__codelineno-33-2">2</a></span>
<span class="normal"><a href="#__codelineno-33-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-33-1" name="__codelineno-33-1"></a><span class="kd">static</span><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="nf">methodName</span><span class="w"> </span><span class="p">(</span><span class="n">Type</span><span class="o">[]</span><span class="p">...</span><span class="o">[]</span><span class="w"> </span><span class="n">ArrayName</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-33-2" name="__codelineno-33-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-33-3" name="__codelineno-33-3"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="methods-returning-multi-dimensional-arrays">Methods returning multi-dimensional arrays</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-34-1">1</a></span>
<span class="normal"><a href="#__codelineno-34-2">2</a></span>
<span class="normal"><a href="#__codelineno-34-3">3</a></span>
<span class="normal"><a href="#__codelineno-34-4">4</a></span>
<span class="normal"><a href="#__codelineno-34-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-34-1" name="__codelineno-34-1"></a><span class="kd">static</span><span class="w"> </span><span class="n">Type</span><span class="o">[]</span><span class="p">...</span><span class="o">[]</span><span class="w"> </span><span class="nf">methodName</span><span class="w"> </span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-34-2" name="__codelineno-34-2"></a><span class="w"> </span><span class="n">Type</span><span class="o">[]</span><span class="p">...</span><span class="o">[]</span><span class="w"> </span><span class="n">array</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Type</span><span class="o">[</span><span class="n">dimension1</span><span class="o">]</span><span class="p">...</span><span class="o">[</span><span class="n">dimensionN</span><span class="o">]</span><span class="p">;</span>
<a id="__codelineno-34-3" name="__codelineno-34-3"></a><span class="w"> </span><span class="c1">//array valorization</span>
<a id="__codelineno-34-4" name="__codelineno-34-4"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">array</span><span class="p">;</span>
<a id="__codelineno-34-5" name="__codelineno-34-5"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="array-length-of-multi-dimensional-arrays">Array Length of multi-dimensional arrays</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-35-1">1</a></span>
<span class="normal"><a href="#__codelineno-35-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-35-1" name="__codelineno-35-1"></a><span class="n">array</span><span class="p">.</span><span class="na">length</span><span class="w"> </span><span class="c1">//row length</span>
<a id="__codelineno-35-2" name="__codelineno-35-2"></a><span class="n">array</span><span class="o">[</span><span class="n">rowIndex</span><span class="o">]</span><span class="p">.</span><span class="na">length</span><span class="w"> </span><span class="c1">//column length</span>
</code></pre></div></td></tr></table></div>
<h3 id="irregular-table-visualization">Irregular Table Visualization</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-36-1">1</a></span>
<span class="normal"><a href="#__codelineno-36-2">2</a></span>
<span class="normal"><a href="#__codelineno-36-3">3</a></span>
<span class="normal"><a href="#__codelineno-36-4">4</a></span>
<span class="normal"><a href="#__codelineno-36-5">5</a></span>
<span class="normal"><a href="#__codelineno-36-6">6</a></span>
<span class="normal"><a href="#__codelineno-36-7">7</a></span>
<span class="normal"><a href="#__codelineno-36-8">8</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-36-1" name="__codelineno-36-1"></a><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">viewTable</span><span class="w"> </span><span class="p">(</span><span class="n">Type</span><span class="o">[][]</span><span class="w"> </span><span class="n">matrix</span><span class="p">){</span>
<a id="__codelineno-36-2" name="__codelineno-36-2"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">row</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">row</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">matrix</span><span class="p">.</span><span class="na">length</span><span class="p">;</span><span class="w"> </span><span class="n">row</span><span class="o">++</span><span class="p">){</span><span class="w"> </span><span class="c1">//run through the rows</span>
<a id="__codelineno-36-3" name="__codelineno-36-3"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">column</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">column</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">arrayName</span><span class="o">[</span><span class="n">row</span><span class="o">]</span><span class="p">.</span><span class="na">length</span><span class="p">;</span><span class="w"> </span><span class="n">column</span><span class="o">++</span><span class="p">){</span><span class="w"> </span><span class="c1">//run through the columns</span>
<a id="__codelineno-36-4" name="__codelineno-36-4"></a><span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">put</span><span class="p">.</span><span class="na">print</span><span class="p">(</span><span class="n">arrayName</span><span class="o">[</span><span class="n">row</span><span class="o">][</span><span class="n">column</span><span class="o">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">&quot;\t&quot;</span><span class="p">);</span><span class="w"> </span><span class="c1">//print item followed by a tab</span>
<a id="__codelineno-36-5" name="__codelineno-36-5"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-36-6" name="__codelineno-36-6"></a><span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">();</span><span class="w"> </span><span class="c1">//newline after each matrix row</span>
<a id="__codelineno-36-7" name="__codelineno-36-7"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-36-8" name="__codelineno-36-8"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h2 id="recursion-guidelines">Recursion Guidelines</h2>
<p>The core of the recursion must be constituted by a <em>conditional instruction</em> that permits to handle the cases based on the method argument.<br />
<em>At least one</em> of the alternatives must contain a recursive call to che method. The call must resolve reduced version of the task handled by the method.<br />
<em>At leats one</em> of the alternatives must not contain a recursive call or it must produce a value that constitutes a base case or an arrest value.</p>
<h2 id="exception-handling">Exception Handling</h2>
<p>An <strong>Exception</strong> is an object used to signal an anomalous event.
<strong>Checked Exceptions</strong> must be handled in a catch meanwhile <strong>Unchecked Exceptions</strong> do not need to be cached like <code>RuntimeException</code>.
Unchecked exceptions usually mean that there is an error in the logic of the program that must be fixed.</p>
<h3 id="try-catch-finally"><code>Try-Catch-Finally</code></h3>
<p>This construct permits to monitor what happens in a block of code and to specify what to do in case of errors (<em>exceptions</em>).</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-37-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-37-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-37-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-37-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-37-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-37-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-37-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-37-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-37-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-37-10">10</a></span>
<span class="normal"><a href="#__codelineno-37-11">11</a></span>
<span class="normal"><a href="#__codelineno-37-12">12</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-37-1" name="__codelineno-37-1"></a><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-37-2" name="__codelineno-37-2"></a><span class="w"> </span><span class="c1">//monitored code</span>
<a id="__codelineno-37-3" name="__codelineno-37-3"></a><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">SpecificException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-37-4" name="__codelineno-37-4"></a><span class="w"> </span><span class="c1">//in case of errors use this</span>
<a id="__codelineno-37-5" name="__codelineno-37-5"></a><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">SpecificException1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">SpecificException2</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">SpecificExceptionN</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-37-6" name="__codelineno-37-6"></a><span class="w"> </span><span class="c1">//in case of errors use this</span>
<a id="__codelineno-37-7" name="__codelineno-37-7"></a><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">Exception</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-37-8" name="__codelineno-37-8"></a><span class="w"> </span><span class="c1">//in case of error use this</span>
<a id="__codelineno-37-9" name="__codelineno-37-9"></a><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="na">getMessage</span><span class="p">();</span><span class="w"> </span><span class="c1">// access to Exception error message</span>
<a id="__codelineno-37-10" name="__codelineno-37-10"></a><span class="p">}</span><span class="w"> </span><span class="k">finally</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-37-11" name="__codelineno-37-11"></a><span class="w"> </span><span class="c1">//code executed anyways</span>
<a id="__codelineno-37-12" name="__codelineno-37-12"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<p>A <code>try-catch</code> construct can handle multiple exceptions at once. Every <code>catch</code> is analyzed in sequence and is executed the first to happen thus is best to leave a generic exception last.</p>
<h3 id="try-with-resources">Try with Resources</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-38-1">1</a></span>
<span class="normal"><a href="#__codelineno-38-2">2</a></span>
<span class="normal"><a href="#__codelineno-38-3">3</a></span>
<span class="normal"><a href="#__codelineno-38-4">4</a></span>
<span class="normal"><a href="#__codelineno-38-5">5</a></span>
<span class="normal"><a href="#__codelineno-38-6">6</a></span>
<span class="normal"><a href="#__codelineno-38-7">7</a></span>
<span class="normal"><a href="#__codelineno-38-8">8</a></span>
<span class="normal"><a href="#__codelineno-38-9">9</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-38-1" name="__codelineno-38-1"></a><span class="k">try</span><span class="w"> </span><span class="p">(</span>
<a id="__codelineno-38-2" name="__codelineno-38-2"></a><span class="w"> </span><span class="c1">//resource definition</span>
<a id="__codelineno-38-3" name="__codelineno-38-3"></a><span class="p">){</span>
<a id="__codelineno-38-4" name="__codelineno-38-4"></a><span class="w"> </span><span class="c1">//dangerous code</span>
<a id="__codelineno-38-5" name="__codelineno-38-5"></a><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">Exception</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-38-6" name="__codelineno-38-6"></a><span class="w"> </span><span class="c1">//in case of error use this</span>
<a id="__codelineno-38-7" name="__codelineno-38-7"></a><span class="p">}</span><span class="w"> </span><span class="k">finally</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-38-8" name="__codelineno-38-8"></a><span class="w"> </span><span class="c1">//code executed anyway</span>
<a id="__codelineno-38-9" name="__codelineno-38-9"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="throw-throws"><code>Throw</code> &amp; <code>Throws</code></h3>
<p>The <code>throw</code> keyword is used to generate a custom exception in a point of the code.<br />
<code>throw</code> is used together with an exception type.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-39-1">1</a></span>
<span class="normal"><a href="#__codelineno-39-2">2</a></span>
<span class="normal"><a href="#__codelineno-39-3">3</a></span>
<span class="normal"><a href="#__codelineno-39-4">4</a></span>
<span class="normal"><a href="#__codelineno-39-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-39-1" name="__codelineno-39-1"></a><span class="n">Type</span><span class="w"> </span><span class="nf">methodName</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-39-2" name="__codelineno-39-2"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">condition</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-39-3" name="__codelineno-39-3"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Exception</span><span class="p">(</span><span class="s">&quot;error message&quot;</span><span class="p">);</span>
<a id="__codelineno-39-4" name="__codelineno-39-4"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-39-5" name="__codelineno-39-5"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<p>The <code>throws</code> keyword is used to indicate what exception Type may be thrown by a method.<br />
<code>throws</code> is used together with a exception class. It's used to send the exception to the method caller.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-40-1">1</a></span>
<span class="normal"><a href="#__codelineno-40-2">2</a></span>
<span class="normal"><a href="#__codelineno-40-3">3</a></span>
<span class="normal"><a href="#__codelineno-40-4">4</a></span>
<span class="normal"><a href="#__codelineno-40-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-40-1" name="__codelineno-40-1"></a><span class="n">Type</span><span class="w"> </span><span class="nf">methodName</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">ExceptionClass</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-40-2" name="__codelineno-40-2"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">condition</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-40-3" name="__codelineno-40-3"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">SpecificException</span><span class="p">(</span><span class="s">&quot;error message&quot;</span><span class="p">);</span>
<a id="__codelineno-40-4" name="__codelineno-40-4"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-40-5" name="__codelineno-40-5"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="defining-personalized-exceptions">Defining Personalized Exceptions</h3>
<p>A user-defined exception has to inherit from <code>Exception</code> or one of it's descendants.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-41-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-41-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-41-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-41-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-41-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-41-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-41-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-41-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-41-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-41-10">10</a></span>
<span class="normal"><a href="#__codelineno-41-11">11</a></span>
<span class="normal"><a href="#__codelineno-41-12">12</a></span>
<span class="normal"><a href="#__codelineno-41-13">13</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-41-1" name="__codelineno-41-1"></a><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">CustomException</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-41-2" name="__codelineno-41-2"></a>
<a id="__codelineno-41-3" name="__codelineno-41-3"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">CustomException</span><span class="p">(){</span>
<a id="__codelineno-41-4" name="__codelineno-41-4"></a><span class="w"> </span><span class="kd">super</span><span class="p">(</span><span class="s">&quot;Base Message&quot;</span><span class="p">);</span><span class="w"> </span><span class="c1">// ese Exception constructor</span>
<a id="__codelineno-41-5" name="__codelineno-41-5"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-41-6" name="__codelineno-41-6"></a>
<a id="__codelineno-41-7" name="__codelineno-41-7"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">CustomException</span><span class="p">(</span><span class="n">string</span><span class="w"> </span><span class="n">message</span><span class="p">){</span>
<a id="__codelineno-41-8" name="__codelineno-41-8"></a><span class="w"> </span><span class="kd">super</span><span class="p">(</span><span class="n">message</span><span class="p">);</span>
<a id="__codelineno-41-9" name="__codelineno-41-9"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-41-10" name="__codelineno-41-10"></a>
<a id="__codelineno-41-11" name="__codelineno-41-11"></a><span class="w"> </span><span class="c1">// CustomException inherits getMessage() from Exception</span>
<a id="__codelineno-41-12" name="__codelineno-41-12"></a>
<a id="__codelineno-41-13" name="__codelineno-41-13"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h2 id="object-oriented-programming">Object Oriented Programming</h2>
<h3 id="access-modifiers">Access Modifiers</h3>
<p><code>public</code> variables, methods, classes are usable outside of class of definition.<br />
<code>private</code> variables, methods, classes are <em>only</em> usable inside class of definition.<br />
<code>protected</code> variables, methods, classes can be accessed <em>only</em> by defining class, it's descendants and the package.<br />
<code>final</code> classes and methods cannot be extended or overridden.
If not specified variables, methods and classes are <em>only</em> accessible from the same package.</p>
<h3 id="instance-method-definition">Instance Method Definition</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-42-1">1</a></span>
<span class="normal"><a href="#__codelineno-42-2">2</a></span>
<span class="normal"><a href="#__codelineno-42-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-42-1" name="__codelineno-42-1"></a><span class="n">Type</span><span class="w"> </span><span class="nf">methodName</span><span class="w"> </span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-42-2" name="__codelineno-42-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-42-3" name="__codelineno-42-3"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="void-instance-method"><code>Void</code> Instance Method</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-43-1">1</a></span>
<span class="normal"><a href="#__codelineno-43-2">2</a></span>
<span class="normal"><a href="#__codelineno-43-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-43-1" name="__codelineno-43-1"></a><span class="kt">void</span><span class="w"> </span><span class="nf">methodName</span><span class="w"> </span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-43-2" name="__codelineno-43-2"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-43-3" name="__codelineno-43-3"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="class-definition">Class Definition</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-44-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-44-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-44-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-44-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-44-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-44-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-44-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-44-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-44-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-44-10">10</a></span>
<span class="normal"><a href="#__codelineno-44-11">11</a></span>
<span class="normal"><a href="#__codelineno-44-12">12</a></span>
<span class="normal"><a href="#__codelineno-44-13">13</a></span>
<span class="normal"><a href="#__codelineno-44-14">14</a></span>
<span class="normal"><a href="#__codelineno-44-15">15</a></span>
<span class="normal"><a href="#__codelineno-44-16">16</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-44-1" name="__codelineno-44-1"></a><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">ClassName</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-44-2" name="__codelineno-44-2"></a><span class="w"> </span><span class="c1">//instance variables declaration</span>
<a id="__codelineno-44-3" name="__codelineno-44-3"></a>
<a id="__codelineno-44-4" name="__codelineno-44-4"></a><span class="w"> </span><span class="c1">//instantiation block</span>
<a id="__codelineno-44-5" name="__codelineno-44-5"></a><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-44-6" name="__codelineno-44-6"></a><span class="w"> </span><span class="c1">// this code is called before the constructor when an object is instantiated</span>
<a id="__codelineno-44-7" name="__codelineno-44-7"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-44-8" name="__codelineno-44-8"></a>
<a id="__codelineno-44-9" name="__codelineno-44-9"></a><span class="w"> </span><span class="c1">//constructors definition</span>
<a id="__codelineno-44-10" name="__codelineno-44-10"></a>
<a id="__codelineno-44-11" name="__codelineno-44-11"></a><span class="w"> </span><span class="c1">// getters &amp; setters</span>
<a id="__codelineno-44-12" name="__codelineno-44-12"></a>
<a id="__codelineno-44-13" name="__codelineno-44-13"></a><span class="w"> </span><span class="c1">// override of superclass&#39; methods</span>
<a id="__codelineno-44-14" name="__codelineno-44-14"></a>
<a id="__codelineno-44-15" name="__codelineno-44-15"></a><span class="w"> </span><span class="c1">//instance methods definition</span>
<a id="__codelineno-44-16" name="__codelineno-44-16"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="this-identifier"><code>This</code> identifier</h3>
<p><code>this.instanceVariable</code> identifies the instance variable
It's possible to use <code>this</code> to distinguish between instance and static variables with the same name.</p>
<h3 id="classes-and-reference-addresses">Classes and Reference Addresses</h3>
<p>A an instance of a class doesn't contain an object of that class but a memory address in which the object is memorized.<br />
operations of assignment (<code>=</code>) and confront (<code>==</code>) act on the memory address and not on the values of the objects.<br />
To confront object is necessary to define a <code>equals()</code> method that checks if the values of the object attributes are equal. </p>
<h3 id="constructors">Constructors</h3>
<p>Constructors are special methods that are invoked with the <code>new</code> operator when an object is instantiated.<br />
Constructors assign the starting values of the object attributes.<br />
If a constructor id defined Java doesn't create the default constructor.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-45-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-45-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-45-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-45-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-45-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-45-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-45-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-45-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-45-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-45-10">10</a></span>
<span class="normal"><a href="#__codelineno-45-11">11</a></span>
<span class="normal"><a href="#__codelineno-45-12">12</a></span>
<span class="normal"><a href="#__codelineno-45-13">13</a></span>
<span class="normal"><a href="#__codelineno-45-14">14</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-45-1" name="__codelineno-45-1"></a><span class="kd">class</span> <span class="nf">ClassName</span><span class="w"> </span><span class="p">(){</span>
<a id="__codelineno-45-2" name="__codelineno-45-2"></a>
<a id="__codelineno-45-3" name="__codelineno-45-3"></a><span class="w"> </span><span class="c1">//attributes declaration (aka instance variables)</span>
<a id="__codelineno-45-4" name="__codelineno-45-4"></a>
<a id="__codelineno-45-5" name="__codelineno-45-5"></a><span class="w"> </span><span class="c1">//constructor</span>
<a id="__codelineno-45-6" name="__codelineno-45-6"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">ClassName</span><span class="p">(</span><span class="n">parameters</span><span class="p">){</span>
<a id="__codelineno-45-7" name="__codelineno-45-7"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">attribute</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value</span><span class="p">;</span><span class="w"> </span><span class="c1">//value is passed to the constructor at obj instantiation</span>
<a id="__codelineno-45-8" name="__codelineno-45-8"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-45-9" name="__codelineno-45-9"></a>
<a id="__codelineno-45-10" name="__codelineno-45-10"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">ClassName</span><span class="p">(</span><span class="n">parameters</span><span class="p">,</span><span class="w"> </span><span class="n">otherParameters</span><span class="p">){</span>
<a id="__codelineno-45-11" name="__codelineno-45-11"></a><span class="w"> </span><span class="k">this</span><span class="p">(</span><span class="n">parameters</span><span class="p">);</span><span class="w"> </span><span class="c1">// invoke other constructor for subset of parameters, must be FIRST INSTRUCTION</span>
<a id="__codelineno-45-12" name="__codelineno-45-12"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">attribute</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value</span><span class="p">;</span><span class="w"> </span><span class="c1">// deal with the remaining parameters</span>
<a id="__codelineno-45-13" name="__codelineno-45-13"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-45-14" name="__codelineno-45-14"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="static-variables">Static Variables</h3>
<p><code>Type staticVariable = value;</code><br />
Static variables are shared by all objects of a class and all static method can act upon them.<br />
Static variable do not belong to the class objects.</p>
<h3 id="getters-setter-methods">Getters &amp; Setter Methods</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-46-1">1</a></span>
<span class="normal"><a href="#__codelineno-46-2">2</a></span>
<span class="normal"><a href="#__codelineno-46-3">3</a></span>
<span class="normal"><a href="#__codelineno-46-4">4</a></span>
<span class="normal"><a href="#__codelineno-46-5">5</a></span>
<span class="normal"><a href="#__codelineno-46-6">6</a></span>
<span class="normal"><a href="#__codelineno-46-7">7</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-46-1" name="__codelineno-46-1"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">setAttribute</span><span class="p">(</span><span class="n">Type</span><span class="w"> </span><span class="n">attribute</span><span class="p">){</span>
<a id="__codelineno-46-2" name="__codelineno-46-2"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">attribute</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">attribute</span><span class="p">;</span>
<a id="__codelineno-46-3" name="__codelineno-46-3"></a><span class="p">}</span>
<a id="__codelineno-46-4" name="__codelineno-46-4"></a>
<a id="__codelineno-46-5" name="__codelineno-46-5"></a><span class="kd">public</span><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="nf">getAttribute</span><span class="p">(){</span>
<a id="__codelineno-46-6" name="__codelineno-46-6"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">attribute</span><span class="p">;</span>
<a id="__codelineno-46-7" name="__codelineno-46-7"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="tostring-method"><code>ToString()</code> Method</h3>
<p>Automatically returns a string if the object is directly called in a print method.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-47-1">1</a></span>
<span class="normal"><a href="#__codelineno-47-2">2</a></span>
<span class="normal"><a href="#__codelineno-47-3">3</a></span>
<span class="normal"><a href="#__codelineno-47-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-47-1" name="__codelineno-47-1"></a><span class="nd">@Override</span>
<a id="__codelineno-47-2" name="__codelineno-47-2"></a><span class="n">Public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">toString</span><span class="p">(){</span>
<a id="__codelineno-47-3" name="__codelineno-47-3"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">&quot;string-representation-of-object&quot;</span>
<a id="__codelineno-47-4" name="__codelineno-47-4"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="static-methods-in-classes">Static Methods in Classes</h3>
<p>Static methods are used to effectuate operations not applied to objects.<br />
Outside of the class of definition that are invoked with ClassName.methodName()<br />
Static method <strong>cannot</strong> act on instance variables. </p>
<h3 id="method-overloading">Method Overloading</h3>
<p>A class can have multiple methods with the same name given that each method has a different number or type of parameters (different method <em>signature</em>). </p>
<h3 id="inheritance-method-overriding">Inheritance &amp; Method Overriding</h3>
<p>Child classes inherit all methods and attributes from parent class.<br />
Child methods can <em>override</em> parent methods to adapt their functionality.<br />
Overriding and overridden classes <strong>must</strong> have the same name.
A child class can inherit from <em>only</em> one parent class.</p>
<p>Child class <strong>must</strong> implement a constructor that instantiates the parent (super) class.<br />
<code>super()</code> instantiates the superclass of the child class.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-48-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-48-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-48-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-48-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-48-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-48-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-48-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-48-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-48-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-48-10">10</a></span>
<span class="normal"><a href="#__codelineno-48-11">11</a></span>
<span class="normal"><a href="#__codelineno-48-12">12</a></span>
<span class="normal"><a href="#__codelineno-48-13">13</a></span>
<span class="normal"><a href="#__codelineno-48-14">14</a></span>
<span class="normal"><a href="#__codelineno-48-15">15</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-48-1" name="__codelineno-48-1"></a><span class="kd">class</span> <span class="nc">ChildClass</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">ParentClass</span><span class="p">{</span>
<a id="__codelineno-48-2" name="__codelineno-48-2"></a>
<a id="__codelineno-48-3" name="__codelineno-48-3"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">ChildClass</span><span class="p">(</span><span class="n">parentParameters</span><span class="p">,</span><span class="w"> </span><span class="n">childParameters</span><span class="p">){</span>
<a id="__codelineno-48-4" name="__codelineno-48-4"></a><span class="w"> </span><span class="kd">super</span><span class="p">(</span><span class="n">parentParameters</span><span class="p">);</span><span class="w"> </span><span class="c1">// if omitted super() is calls (parent&#39;s default constructor)</span>
<a id="__codelineno-48-5" name="__codelineno-48-5"></a><span class="w"> </span><span class="c1">// assignments of child attributes</span>
<a id="__codelineno-48-6" name="__codelineno-48-6"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-48-7" name="__codelineno-48-7"></a>
<a id="__codelineno-48-8" name="__codelineno-48-8"></a><span class="w"> </span><span class="c1">//calls overrides parent class (must have same name)</span>
<a id="__codelineno-48-9" name="__codelineno-48-9"></a><span class="w"> </span><span class="nd">@Override</span>
<a id="__codelineno-48-10" name="__codelineno-48-10"></a><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="nf">methodName</span><span class="p">(</span><span class="n">parameters</span><span class="p">){</span>
<a id="__codelineno-48-11" name="__codelineno-48-11"></a><span class="w"> </span><span class="c1">//code here</span>
<a id="__codelineno-48-12" name="__codelineno-48-12"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-48-13" name="__codelineno-48-13"></a>
<a id="__codelineno-48-14" name="__codelineno-48-14"></a><span class="w"> </span><span class="kd">super</span><span class="p">().</span><span class="na">methodName</span><span class="p">(</span><span class="n">parameters</span><span class="p">);</span><span class="w"> </span><span class="c1">// calls the parent&#39;s method</span>
<a id="__codelineno-48-15" name="__codelineno-48-15"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<p>An overridden method that returns a <code>ParentClass</code> can be overridden to return a <code>ChildClass</code>. This is the only case in which an overridden method can change the returned type.
An overridden method can change the access modifier as long as the new modifier is more "permissive".</p>
<p>A <code>ParentClass</code> type can contain a <code>ChildClass</code> object. This is useful for using collections and arrays of objects.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-49-1">1</a></span>
<span class="normal"><a href="#__codelineno-49-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-49-1" name="__codelineno-49-1"></a><span class="n">ParentClass</span><span class="w"> </span><span class="n">objectName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ChildClass</span><span class="p">();</span><span class="w"> </span><span class="c1">// upcast</span>
<a id="__codelineno-49-2" name="__codelineno-49-2"></a><span class="p">(</span><span class="n">ChildClass</span><span class="p">)</span><span class="n">ParentClassObject</span><span class="p">;</span><span class="w"> </span><span class="c1">// downcast</span>
</code></pre></div></td></tr></table></div>
<h3 id="abstract-classes-abstract-methods">Abstract Classes &amp; Abstract Methods</h3>
<p>An Abstract Class is a particular class that contains an Abstract Method.
This type of class cannot be instantiated but is used leave the specific implementation of some of it's methods to extending classes.
Abstract classes are marked by the <code>abstract</code> keyword.</p>
<p>An abstract method is a method without implementation.<br />
The methods <strong>must</strong> be <code>public</code> and marked with the <code>abstract</code> keyword.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-50-1">1</a></span>
<span class="normal"><a href="#__codelineno-50-2">2</a></span>
<span class="normal"><a href="#__codelineno-50-3">3</a></span>
<span class="normal"><a href="#__codelineno-50-4">4</a></span>
<span class="normal"><a href="#__codelineno-50-5">5</a></span>
<span class="normal"><a href="#__codelineno-50-6">6</a></span>
<span class="normal"><a href="#__codelineno-50-7">7</a></span>
<span class="normal"><a href="#__codelineno-50-8">8</a></span>
<span class="normal"><a href="#__codelineno-50-9">9</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-50-1" name="__codelineno-50-1"></a><span class="c1">//abstract class</span>
<a id="__codelineno-50-2" name="__codelineno-50-2"></a><span class="kd">abstract</span><span class="w"> </span><span class="kd">class</span> <span class="nc">className</span><span class="p">{</span>
<a id="__codelineno-50-3" name="__codelineno-50-3"></a><span class="w"> </span><span class="c1">//attributes here</span>
<a id="__codelineno-50-4" name="__codelineno-50-4"></a><span class="w"> </span><span class="c1">//constructor here</span>
<a id="__codelineno-50-5" name="__codelineno-50-5"></a><span class="w"> </span><span class="c1">//getters &amp; setters here</span>
<a id="__codelineno-50-6" name="__codelineno-50-6"></a>
<a id="__codelineno-50-7" name="__codelineno-50-7"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">abstract</span><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="nf">methodName</span><span class="p">();</span><span class="w"> </span><span class="c1">//no method code</span>
<a id="__codelineno-50-8" name="__codelineno-50-8"></a>
<a id="__codelineno-50-9" name="__codelineno-50-9"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="interfaces">Interfaces</h3>
<p>An Interface is a class with <em>only</em> abstract methods. An interface has more flexibility than an abstract class.<br />
Interfaces are used to set requirements for child classes without specifying how to satisfy those requirements since it's methods will be implemented in child classes.<br />
An Interface is marked by the <code>interface</code> keyword.
If an implementing class implements only <code>some</code> of the interface's method than the class <strong>must be abstract</strong>.</p>
<p>Interfaces' methods are always <code>abstract</code> and <code>public</code>, no need for the keyword.
Interfaces' attributes are always <code>public static final</code>, no need for the keyword.</p>
<p>A class can implement <em>more than one</em> Interface.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-51-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-51-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-51-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-51-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-51-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-51-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-51-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-51-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-51-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-51-10">10</a></span>
<span class="normal"><a href="#__codelineno-51-11">11</a></span>
<span class="normal"><a href="#__codelineno-51-12">12</a></span>
<span class="normal"><a href="#__codelineno-51-13">13</a></span>
<span class="normal"><a href="#__codelineno-51-14">14</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-51-1" name="__codelineno-51-1"></a><span class="kd">public</span><span class="w"> </span><span class="kd">interface</span> <span class="nc">InterfaceName</span><span class="p">{</span>
<a id="__codelineno-51-2" name="__codelineno-51-2"></a><span class="w"> </span><span class="c1">//attributes here</span>
<a id="__codelineno-51-3" name="__codelineno-51-3"></a>
<a id="__codelineno-51-4" name="__codelineno-51-4"></a><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="nf">methodName</span><span class="p">();</span><span class="w"> </span><span class="c1">//no method code</span>
<a id="__codelineno-51-5" name="__codelineno-51-5"></a><span class="p">}</span>
<a id="__codelineno-51-6" name="__codelineno-51-6"></a>
<a id="__codelineno-51-7" name="__codelineno-51-7"></a><span class="c1">// interfaces can extend interfaces</span>
<a id="__codelineno-51-8" name="__codelineno-51-8"></a><span class="kd">public</span><span class="w"> </span><span class="kd">interface</span> <span class="nc">OtherInterface</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">InterfaceName</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-51-9" name="__codelineno-51-9"></a><span class="w"> </span><span class="c1">//attributes here</span>
<a id="__codelineno-51-10" name="__codelineno-51-10"></a><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="nf">methodName</span><span class="p">();</span><span class="w"> </span><span class="c1">// inherited from extended interface</span>
<a id="__codelineno-51-11" name="__codelineno-51-11"></a><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="nf">otherMethod</span><span class="p">();</span><span class="w"> </span><span class="c1">// defined in the interface</span>
<a id="__codelineno-51-12" name="__codelineno-51-12"></a><span class="p">}</span>
<a id="__codelineno-51-13" name="__codelineno-51-13"></a>
<a id="__codelineno-51-14" name="__codelineno-51-14"></a><span class="kd">class</span> <span class="nc">ClassName</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">Interface1</span><span class="p">,</span><span class="w"> </span><span class="n">Interface2</span><span class="w"> </span><span class="p">{...}</span>
</code></pre></div></td></tr></table></div>
<p>Types of Interfaces:</p>
<ul>
<li>Normal (multiple methods)</li>
<li>Single Abstract Method (<code>@FunctionalInterface</code>, used with <em>Lambda Expressions</em>)</li>
<li>Marker (Empty, <em>no methods</em>)</li>
</ul>
<p>Since Java 1.8 interfaces can implements also <code>static</code> methods.</p>
<h3 id="enumerations">Enumerations</h3>
<p>Enums are used to restrict the type of data to a set of the possible constant values.
Enums are classes which constructor is private by default.
It's still possible to create a custom constructor to add values.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-52-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-52-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-52-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-52-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-52-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-52-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-52-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-52-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-52-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-52-10">10</a></span>
<span class="normal"><a href="#__codelineno-52-11">11</a></span>
<span class="normal"><a href="#__codelineno-52-12">12</a></span>
<span class="normal"><a href="#__codelineno-52-13">13</a></span>
<span class="normal"><a href="#__codelineno-52-14">14</a></span>
<span class="normal"><a href="#__codelineno-52-15">15</a></span>
<span class="normal"><a href="#__codelineno-52-16">16</a></span>
<span class="normal"><a href="#__codelineno-52-17">17</a></span>
<span class="normal"><a href="#__codelineno-52-18">18</a></span>
<span class="normal"><a href="#__codelineno-52-19">19</a></span>
<span class="normal"><a href="#__codelineno-52-20">20</a></span>
<span class="normal"><a href="#__codelineno-52-21">21</a></span>
<span class="normal"><a href="#__codelineno-52-22">22</a></span>
<span class="normal"><a href="#__codelineno-52-23">23</a></span>
<span class="normal"><a href="#__codelineno-52-24">24</a></span>
<span class="normal"><a href="#__codelineno-52-25">25</a></span>
<span class="normal"><a href="#__codelineno-52-26">26</a></span>
<span class="normal"><a href="#__codelineno-52-27">27</a></span>
<span class="normal"><a href="#__codelineno-52-28">28</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-52-1" name="__codelineno-52-1"></a><span class="kd">enum</span><span class="w"> </span><span class="n">enumName</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-52-2" name="__codelineno-52-2"></a><span class="w"> </span><span class="n">value1</span><span class="p">,</span>
<a id="__codelineno-52-3" name="__codelineno-52-3"></a><span class="w"> </span><span class="n">value2</span><span class="p">,</span>
<a id="__codelineno-52-4" name="__codelineno-52-4"></a><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">,</span>
<a id="__codelineno-52-5" name="__codelineno-52-5"></a><span class="w"> </span><span class="n">valueN</span><span class="p">;</span>
<a id="__codelineno-52-6" name="__codelineno-52-6"></a><span class="p">}</span>
<a id="__codelineno-52-7" name="__codelineno-52-7"></a>
<a id="__codelineno-52-8" name="__codelineno-52-8"></a><span class="c1">//definition of an enumeration w/ custom constructor for valorization</span>
<a id="__codelineno-52-9" name="__codelineno-52-9"></a><span class="c1">//constructor is not usable outside enum definition</span>
<a id="__codelineno-52-10" name="__codelineno-52-10"></a><span class="kd">enum</span><span class="w"> </span><span class="n">enumName</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-52-11" name="__codelineno-52-11"></a><span class="w"> </span><span class="n">value1</span><span class="p">(</span><span class="n">value</span><span class="p">),</span><span class="w"> </span><span class="c1">//call constructor to valorize</span>
<a id="__codelineno-52-12" name="__codelineno-52-12"></a><span class="w"> </span><span class="n">value2</span><span class="p">(</span><span class="n">value</span><span class="p">),</span>
<a id="__codelineno-52-13" name="__codelineno-52-13"></a><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">,</span>
<a id="__codelineno-52-14" name="__codelineno-52-14"></a><span class="w"> </span><span class="n">valueN</span><span class="p">(</span><span class="n">value</span><span class="p">);</span>
<a id="__codelineno-52-15" name="__codelineno-52-15"></a>
<a id="__codelineno-52-16" name="__codelineno-52-16"></a><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="n">value</span><span class="p">;</span>
<a id="__codelineno-52-17" name="__codelineno-52-17"></a>
<a id="__codelineno-52-18" name="__codelineno-52-18"></a><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="nf">enumName</span><span class="p">(</span><span class="n">Type</span><span class="w"> </span><span class="n">parameter</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-52-19" name="__codelineno-52-19"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">parameter</span><span class="p">;</span>
<a id="__codelineno-52-20" name="__codelineno-52-20"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-52-21" name="__codelineno-52-21"></a>
<a id="__codelineno-52-22" name="__codelineno-52-22"></a><span class="w"> </span><span class="c1">//getters are allowed, the values is a constant --&gt; no setters</span>
<a id="__codelineno-52-23" name="__codelineno-52-23"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="nf">getValue</span><span class="p">(){</span>
<a id="__codelineno-52-24" name="__codelineno-52-24"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">value</span><span class="p">;</span>
<a id="__codelineno-52-25" name="__codelineno-52-25"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-52-26" name="__codelineno-52-26"></a><span class="p">}</span>
<a id="__codelineno-52-27" name="__codelineno-52-27"></a>
<a id="__codelineno-52-28" name="__codelineno-52-28"></a><span class="n">enumName</span><span class="w"> </span><span class="n">variable</span><span class="p">;</span><span class="w"> </span><span class="c1">//creation of a variable of type enumName</span>
</code></pre></div></td></tr></table></div>
<h3 id="anonymous-classes">Anonymous Classes</h3>
<p><em>Anonymous classes</em> make the code more concise. They enable to declare and instantiate a class at the same time. They are like local classes except that they do not have a name. Useful if is needed a local class that is used once.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-53-1">1</a></span>
<span class="normal"><a href="#__codelineno-53-2">2</a></span>
<span class="normal"><a href="#__codelineno-53-3">3</a></span>
<span class="normal"><a href="#__codelineno-53-4">4</a></span>
<span class="normal"><a href="#__codelineno-53-5">5</a></span>
<span class="normal"><a href="#__codelineno-53-6">6</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-53-1" name="__codelineno-53-1"></a><span class="n">AnonymousClass</span><span class="w"> </span><span class="n">objectName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">AnonymousClass</span><span class="p">(</span><span class="n">Type</span><span class="w"> </span><span class="n">parameter</span><span class="p">,</span><span class="w"> </span><span class="p">...)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-53-2" name="__codelineno-53-2"></a>
<a id="__codelineno-53-3" name="__codelineno-53-3"></a><span class="w"> </span><span class="c1">// attributes</span>
<a id="__codelineno-53-4" name="__codelineno-53-4"></a>
<a id="__codelineno-53-5" name="__codelineno-53-5"></a><span class="w"> </span><span class="c1">// methods</span>
<a id="__codelineno-53-6" name="__codelineno-53-6"></a><span class="p">};</span>
</code></pre></div></td></tr></table></div>
<h3 id="cloning">Cloning</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-54-1">1</a></span>
<span class="normal"><a href="#__codelineno-54-2">2</a></span>
<span class="normal"><a href="#__codelineno-54-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-54-1" name="__codelineno-54-1"></a><span class="kd">class</span> <span class="nc">ClassName</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">Clonable</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-54-2" name="__codelineno-54-2"></a>
<a id="__codelineno-54-3" name="__codelineno-54-3"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h2 id="generics">Generics</h2>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-55-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-55-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-55-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-55-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-55-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-55-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-55-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-55-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-55-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-55-10">10</a></span>
<span class="normal"><a href="#__codelineno-55-11">11</a></span>
<span class="normal"><a href="#__codelineno-55-12">12</a></span>
<span class="normal"><a href="#__codelineno-55-13">13</a></span>
<span class="normal"><a href="#__codelineno-55-14">14</a></span>
<span class="normal"><a href="#__codelineno-55-15">15</a></span>
<span class="normal"><a href="#__codelineno-55-16">16</a></span>
<span class="normal"><a href="#__codelineno-55-17">17</a></span>
<span class="normal"><a href="#__codelineno-55-18">18</a></span>
<span class="normal"><a href="#__codelineno-55-19">19</a></span>
<span class="normal"><a href="#__codelineno-55-20">20</a></span>
<span class="normal"><a href="#__codelineno-55-21">21</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-55-1" name="__codelineno-55-1"></a><span class="c1">// WARNING: T is not instantiable, new t(), new t[] are INVALID</span>
<a id="__codelineno-55-2" name="__codelineno-55-2"></a><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">GenericClass</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-55-3" name="__codelineno-55-3"></a><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">T</span><span class="w"> </span><span class="n">generic</span><span class="p">;</span>
<a id="__codelineno-55-4" name="__codelineno-55-4"></a>
<a id="__codelineno-55-5" name="__codelineno-55-5"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">GenericClass</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-55-6" name="__codelineno-55-6"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">GenericClass</span><span class="p">(</span><span class="n">T</span><span class="w"> </span><span class="n">data</span><span class="p">){</span>
<a id="__codelineno-55-7" name="__codelineno-55-7"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">generic</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">data</span><span class="p">;</span>
<a id="__codelineno-55-8" name="__codelineno-55-8"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-55-9" name="__codelineno-55-9"></a>
<a id="__codelineno-55-10" name="__codelineno-55-10"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">T</span><span class="w"> </span><span class="nf">getGeneric</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-55-11" name="__codelineno-55-11"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">generic</span><span class="p">;</span>
<a id="__codelineno-55-12" name="__codelineno-55-12"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-55-13" name="__codelineno-55-13"></a>
<a id="__codelineno-55-14" name="__codelineno-55-14"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">setGeneric</span><span class="p">(</span><span class="n">T</span><span class="w"> </span><span class="n">data</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-55-15" name="__codelineno-55-15"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="w"> </span><span class="n">generic</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">data</span><span class="p">;</span>
<a id="__codelineno-55-16" name="__codelineno-55-16"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-55-17" name="__codelineno-55-17"></a>
<a id="__codelineno-55-18" name="__codelineno-55-18"></a><span class="p">}</span>
<a id="__codelineno-55-19" name="__codelineno-55-19"></a>
<a id="__codelineno-55-20" name="__codelineno-55-20"></a><span class="n">GenericClass</span><span class="o">&lt;</span><span class="n">Type</span><span class="o">&gt;</span><span class="w"> </span><span class="n">obj</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">GenericClass</span><span class="o">&lt;&gt;</span><span class="p">();</span>
<a id="__codelineno-55-21" name="__codelineno-55-21"></a><span class="n">GenericClass</span><span class="o">&lt;</span><span class="n">Type</span><span class="o">&gt;[]</span><span class="w"> </span><span class="n">obj</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">GenericClass</span><span class="o">&lt;&gt;[]</span><span class="p">;</span><span class="w"> </span><span class="c1">// invalid</span>
</code></pre></div></td></tr></table></div>
<h3 id="multiple-generics">Multiple Generics</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-56-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-56-1" name="__codelineno-56-1"></a><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">GenericClass</span><span class="o">&lt;</span><span class="n">T1</span><span class="p">,</span><span class="w"> </span><span class="n">T2</span><span class="p">,</span><span class="w"> </span><span class="p">...</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">// number of generic types is not limited</span>
</code></pre></div></td></tr></table></div>
<h3 id="parameters-constraints">Parameters Constraints</h3>
<p>Specify an interface or class that the generic type must implement/inherit.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-57-1">1</a></span>
<span class="normal"><a href="#__codelineno-57-2">2</a></span>
<span class="normal"><a href="#__codelineno-57-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-57-1" name="__codelineno-57-1"></a><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">GenericClass</span><span class="o">&lt;</span><span class="n">T</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">Interface1</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="n">Interface2</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-57-2" name="__codelineno-57-2"></a><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">GenericClass</span><span class="o">&lt;</span><span class="n">T1</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">Interface1</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="n">Interface2</span><span class="p">,</span><span class="w"> </span><span class="n">T2</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">Class1</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-57-3" name="__codelineno-57-3"></a><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">GenericClass</span><span class="o">&lt;</span><span class="n">T</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">Class1</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="generic-methods">Generic Methods</h3>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-58-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-58-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-58-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-58-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-58-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-58-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-58-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-58-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-58-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-58-10">10</a></span>
<span class="normal"><a href="#__codelineno-58-11">11</a></span>
<span class="normal"><a href="#__codelineno-58-12">12</a></span>
<span class="normal"><a href="#__codelineno-58-13">13</a></span>
<span class="normal"><a href="#__codelineno-58-14">14</a></span>
<span class="normal"><a href="#__codelineno-58-15">15</a></span>
<span class="normal"><a href="#__codelineno-58-16">16</a></span>
<span class="normal"><a href="#__codelineno-58-17">17</a></span>
<span class="normal"><a href="#__codelineno-58-18">18</a></span>
<span class="normal"><a href="#__codelineno-58-19">19</a></span>
<span class="normal"><a href="#__codelineno-58-20">20</a></span>
<span class="normal"><a href="#__codelineno-58-21">21</a></span>
<span class="normal"><a href="#__codelineno-58-22">22</a></span>
<span class="normal"><a href="#__codelineno-58-23">23</a></span>
<span class="normal"><a href="#__codelineno-58-24">24</a></span>
<span class="normal"><a href="#__codelineno-58-25">25</a></span>
<span class="normal"><a href="#__codelineno-58-26">26</a></span>
<span class="normal"><a href="#__codelineno-58-27">27</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-58-1" name="__codelineno-58-1"></a><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">ClassName</span><span class="p">{</span>
<a id="__codelineno-58-2" name="__codelineno-58-2"></a>
<a id="__codelineno-58-3" name="__codelineno-58-3"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="nf">methodName</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-58-4" name="__codelineno-58-4"></a><span class="w"> </span><span class="c1">// code here</span>
<a id="__codelineno-58-5" name="__codelineno-58-5"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="n">_obj</span>
<a id="__codelineno-58-6" name="__codelineno-58-6"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-58-7" name="__codelineno-58-7"></a>
<a id="__codelineno-58-8" name="__codelineno-58-8"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="nf">methodName</span><span class="p">(</span><span class="n">T</span><span class="w"> </span><span class="n">obj</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-58-9" name="__codelineno-58-9"></a><span class="w"> </span><span class="c1">// code here</span>
<a id="__codelineno-58-10" name="__codelineno-58-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="n">_obj</span>
<a id="__codelineno-58-11" name="__codelineno-58-11"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-58-12" name="__codelineno-58-12"></a><span class="p">}</span>
<a id="__codelineno-58-13" name="__codelineno-58-13"></a>
<a id="__codelineno-58-14" name="__codelineno-58-14"></a><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">GenericClass</span><span class="o">&lt;</span><span class="n">S</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-58-15" name="__codelineno-58-15"></a>
<a id="__codelineno-58-16" name="__codelineno-58-16"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="nf">methodName</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-58-17" name="__codelineno-58-17"></a><span class="w"> </span><span class="c1">// code here</span>
<a id="__codelineno-58-18" name="__codelineno-58-18"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="n">_obj</span>
<a id="__codelineno-58-19" name="__codelineno-58-19"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-58-20" name="__codelineno-58-20"></a>
<a id="__codelineno-58-21" name="__codelineno-58-21"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="nf">methodName</span><span class="p">(</span><span class="n">T</span><span class="w"> </span><span class="n">obj</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-58-22" name="__codelineno-58-22"></a><span class="w"> </span><span class="c1">// code here</span>
<a id="__codelineno-58-23" name="__codelineno-58-23"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="n">_obj</span>
<a id="__codelineno-58-24" name="__codelineno-58-24"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-58-25" name="__codelineno-58-25"></a><span class="p">}</span>
<a id="__codelineno-58-26" name="__codelineno-58-26"></a>
<a id="__codelineno-58-27" name="__codelineno-58-27"></a><span class="n">obj</span><span class="p">.</span><span class="o">&lt;</span><span class="n">Type</span><span class="o">&gt;</span><span class="n">methodName</span><span class="p">();</span><span class="w"> </span><span class="c1">// generic method call</span>
</code></pre></div></td></tr></table></div>
<h2 id="file-io">File I/O</h2>
<h3 id="text-files">Text Files</h3>
<h4 id="writing-on-a-file">Writing on a file</h4>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-59-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-59-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-59-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-59-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-59-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-59-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-59-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-59-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-59-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-59-10">10</a></span>
<span class="normal"><a href="#__codelineno-59-11">11</a></span>
<span class="normal"><a href="#__codelineno-59-12">12</a></span>
<span class="normal"><a href="#__codelineno-59-13">13</a></span>
<span class="normal"><a href="#__codelineno-59-14">14</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-59-1" name="__codelineno-59-1"></a><span class="c1">// opening/creating the file for writing</span>
<a id="__codelineno-59-2" name="__codelineno-59-2"></a><span class="n">PrintWriter</span><span class="w"> </span><span class="n">outStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span><span class="w"> </span><span class="c1">// output stream creation</span>
<a id="__codelineno-59-3" name="__codelineno-59-3"></a><span class="k">try</span><span class="p">{</span>
<a id="__codelineno-59-4" name="__codelineno-59-4"></a><span class="w"> </span><span class="n">outStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">PrintWriter</span><span class="p">(</span><span class="n">filename</span><span class="p">);</span><span class="w"> </span><span class="c1">// file-stream binding, file will be empty (creates or overwrites file)</span>
<a id="__codelineno-59-5" name="__codelineno-59-5"></a><span class="w"> </span><span class="n">outStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">PrintWriter</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">FileOutputStream</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span><span class="w"> </span><span class="kc">true</span><span class="p">));</span><span class="w"> </span><span class="c1">// stream for appending text</span>
<a id="__codelineno-59-6" name="__codelineno-59-6"></a><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">FileNotFoundException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-59-7" name="__codelineno-59-7"></a><span class="w"> </span><span class="c1">// code here</span>
<a id="__codelineno-59-8" name="__codelineno-59-8"></a><span class="p">}</span>
<a id="__codelineno-59-9" name="__codelineno-59-9"></a>
<a id="__codelineno-59-10" name="__codelineno-59-10"></a><span class="c1">// write on the file</span>
<a id="__codelineno-59-11" name="__codelineno-59-11"></a><span class="n">outStream</span><span class="p">.</span><span class="na">print</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">);</span>
<a id="__codelineno-59-12" name="__codelineno-59-12"></a><span class="n">outStream</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">);</span>
<a id="__codelineno-59-13" name="__codelineno-59-13"></a>
<a id="__codelineno-59-14" name="__codelineno-59-14"></a><span class="n">outStream</span><span class="p">.</span><span class="na">close</span><span class="p">()</span><span class="w"> </span><span class="c1">// close stream and write buffer contents.</span>
</code></pre></div></td></tr></table></div>
<p><strong>Note</strong>: writing operations do not write directly on the file. The sent data is collected in a <strong>buffer</strong>. When the buffer is <em>full</em> the data is written in the file. This is called <em>buffering</em> and is used to append up operations.</p>
<h4 id="reading-from-a-file">Reading from a file</h4>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-60-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-60-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-60-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-60-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-60-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-60-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-60-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-60-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-60-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-60-10">10</a></span>
<span class="normal"><a href="#__codelineno-60-11">11</a></span>
<span class="normal"><a href="#__codelineno-60-12">12</a></span>
<span class="normal"><a href="#__codelineno-60-13">13</a></span>
<span class="normal"><a href="#__codelineno-60-14">14</a></span>
<span class="normal"><a href="#__codelineno-60-15">15</a></span>
<span class="normal"><a href="#__codelineno-60-16">16</a></span>
<span class="normal"><a href="#__codelineno-60-17">17</a></span>
<span class="normal"><a href="#__codelineno-60-18">18</a></span>
<span class="normal"><a href="#__codelineno-60-19">19</a></span>
<span class="normal"><a href="#__codelineno-60-20">20</a></span>
<span class="normal"><a href="#__codelineno-60-21">21</a></span>
<span class="normal"><a href="#__codelineno-60-22">22</a></span>
<span class="normal"><a href="#__codelineno-60-23">23</a></span>
<span class="normal"><a href="#__codelineno-60-24">24</a></span>
<span class="normal"><a href="#__codelineno-60-25">25</a></span>
<span class="normal"><a href="#__codelineno-60-26">26</a></span>
<span class="normal"><a href="#__codelineno-60-27">27</a></span>
<span class="normal"><a href="#__codelineno-60-28">28</a></span>
<span class="normal"><a href="#__codelineno-60-29">29</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-60-1" name="__codelineno-60-1"></a><span class="n">Filereader</span><span class="w"> </span><span class="n">filereader</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Filereader</span><span class="p">(</span><span class="s">&quot;filename&quot;</span><span class="p">);</span><span class="w"> </span><span class="c1">//open the file</span>
<a id="__codelineno-60-2" name="__codelineno-60-2"></a><span class="n">Scanner</span><span class="w"> </span><span class="n">scanner</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Scanner</span><span class="p">(</span><span class="n">filereader</span><span class="p">);</span><span class="w"> </span><span class="c1">//scanner for the file</span>
<a id="__codelineno-60-3" name="__codelineno-60-3"></a>
<a id="__codelineno-60-4" name="__codelineno-60-4"></a>
<a id="__codelineno-60-5" name="__codelineno-60-5"></a><span class="n">Scanner</span><span class="w"> </span><span class="n">inStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<a id="__codelineno-60-6" name="__codelineno-60-6"></a><span class="k">try</span><span class="p">{</span>
<a id="__codelineno-60-7" name="__codelineno-60-7"></a><span class="w"> </span><span class="n">inStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Scanner</span><span class="p">(</span><span class="n">File</span><span class="p">(</span><span class="n">filename</span><span class="p">));</span>
<a id="__codelineno-60-8" name="__codelineno-60-8"></a><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">FileNotFoundException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-60-9" name="__codelineno-60-9"></a><span class="w"> </span><span class="c1">// code here</span>
<a id="__codelineno-60-10" name="__codelineno-60-10"></a><span class="p">}</span>
<a id="__codelineno-60-11" name="__codelineno-60-11"></a>
<a id="__codelineno-60-12" name="__codelineno-60-12"></a><span class="n">inStream</span><span class="p">.</span><span class="na">hasNext</span><span class="p">();</span><span class="w"> </span><span class="c1">// true if there is data to be read with next()</span>
<a id="__codelineno-60-13" name="__codelineno-60-13"></a><span class="n">inStream</span><span class="p">.</span><span class="na">hasNextDouble</span><span class="p">();</span><span class="w"> </span><span class="c1">// true if there is data to be read with nextDouble()</span>
<a id="__codelineno-60-14" name="__codelineno-60-14"></a><span class="n">inStream</span><span class="p">.</span><span class="na">hasNextInt</span><span class="p">();</span><span class="w"> </span><span class="c1">// true if there is data to be read with nextInt()</span>
<a id="__codelineno-60-15" name="__codelineno-60-15"></a><span class="n">inStream</span><span class="p">.</span><span class="na">hasNextLine</span><span class="p">();</span><span class="w"> </span><span class="c1">// true if there is data to be read with nextLine()</span>
<a id="__codelineno-60-16" name="__codelineno-60-16"></a>
<a id="__codelineno-60-17" name="__codelineno-60-17"></a>
<a id="__codelineno-60-18" name="__codelineno-60-18"></a><span class="n">BufferedReader</span><span class="w"> </span><span class="n">inStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<a id="__codelineno-60-19" name="__codelineno-60-19"></a><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-60-20" name="__codelineno-60-20"></a><span class="w"> </span><span class="n">inStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">BufferReader</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">Filereader</span><span class="p">(</span><span class="n">filename</span><span class="p">));</span><span class="w"> </span><span class="c1">//buffed reader for file</span>
<a id="__codelineno-60-21" name="__codelineno-60-21"></a><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">FileNotFoundException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-60-22" name="__codelineno-60-22"></a><span class="w"> </span><span class="c1">// code here</span>
<a id="__codelineno-60-23" name="__codelineno-60-23"></a><span class="p">}</span>
<a id="__codelineno-60-24" name="__codelineno-60-24"></a>
<a id="__codelineno-60-25" name="__codelineno-60-25"></a><span class="c1">// BufferedReader Methods</span>
<a id="__codelineno-60-26" name="__codelineno-60-26"></a><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">readLine</span><span class="p">()</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span><span class="w"> </span><span class="c1">// return file line or null (file has ended)</span>
<a id="__codelineno-60-27" name="__codelineno-60-27"></a><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">read</span><span class="p">()</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span><span class="w"> </span><span class="c1">// return an integer representing a char or -1 (file has ended)</span>
<a id="__codelineno-60-28" name="__codelineno-60-28"></a><span class="kd">public</span><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="nf">skip</span><span class="p">(</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span><span class="w"> </span><span class="c1">// skip n characters</span>
<a id="__codelineno-60-29" name="__codelineno-60-29"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">close</span><span class="p">()</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span><span class="w"> </span><span class="c1">// closes the stream</span>
</code></pre></div></td></tr></table></div>
<h4 id="file-class"><code>File()</code> class</h4>
<p>The File class is an abstraction of the file and it's path. The abstraction is independent from the OS.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-61-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-61-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-61-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-61-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-61-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-61-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-61-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-61-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-61-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-61-10">10</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-61-1" name="__codelineno-61-1"></a><span class="n">File</span><span class="p">(</span><span class="s">&quot;path/to/file&quot;</span><span class="p">)</span><span class="w"> </span><span class="c1">// UNIX like path</span>
<a id="__codelineno-61-2" name="__codelineno-61-2"></a><span class="n">File</span><span class="p">(</span><span class="s">&quot;path\\to\\file&quot;</span><span class="p">)</span><span class="w"> </span><span class="c1">// Windows path</span>
<a id="__codelineno-61-3" name="__codelineno-61-3"></a>
<a id="__codelineno-61-4" name="__codelineno-61-4"></a><span class="n">file</span><span class="p">.</span><span class="na">canRead</span><span class="p">()</span><span class="w"> </span><span class="c1">// true if file is readable</span>
<a id="__codelineno-61-5" name="__codelineno-61-5"></a><span class="n">file</span><span class="p">.</span><span class="na">canWrite</span><span class="p">()</span><span class="w"> </span><span class="c1">// true if file is writable</span>
<a id="__codelineno-61-6" name="__codelineno-61-6"></a><span class="n">file</span><span class="p">.</span><span class="na">delete</span><span class="p">()</span><span class="w"> </span><span class="c1">// true if file has been deleted</span>
<a id="__codelineno-61-7" name="__codelineno-61-7"></a><span class="n">file</span><span class="p">.</span><span class="na">exists</span><span class="p">()</span><span class="w"> </span><span class="c1">// check if exist a file with the filename used in the constructor</span>
<a id="__codelineno-61-8" name="__codelineno-61-8"></a><span class="n">file</span><span class="p">.</span><span class="na">getName</span><span class="p">()</span><span class="w"> </span><span class="c1">// returns the filename</span>
<a id="__codelineno-61-9" name="__codelineno-61-9"></a><span class="n">file</span><span class="p">.</span><span class="na">getPath</span><span class="p">()</span><span class="w"> </span><span class="c1">// returns the file&#39;s path</span>
<a id="__codelineno-61-10" name="__codelineno-61-10"></a><span class="n">file</span><span class="p">.</span><span class="na">length</span><span class="p">()</span><span class="w"> </span><span class="c1">// file length in bytes</span>
</code></pre></div></td></tr></table></div>
<h3 id="binary-files">Binary Files</h3>
<h4 id="writing-to-a-binary-file">Writing to a binary file</h4>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-62-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-62-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-62-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-62-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-62-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-62-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-62-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-62-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-62-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-62-10">10</a></span>
<span class="normal"><a href="#__codelineno-62-11">11</a></span>
<span class="normal"><a href="#__codelineno-62-12">12</a></span>
<span class="normal"><a href="#__codelineno-62-13">13</a></span>
<span class="normal"><a href="#__codelineno-62-14">14</a></span>
<span class="normal"><a href="#__codelineno-62-15">15</a></span>
<span class="normal"><a href="#__codelineno-62-16">16</a></span>
<span class="normal"><a href="#__codelineno-62-17">17</a></span>
<span class="normal"><a href="#__codelineno-62-18">18</a></span>
<span class="normal"><a href="#__codelineno-62-19">19</a></span>
<span class="normal"><a href="#__codelineno-62-20">20</a></span>
<span class="normal"><a href="#__codelineno-62-21">21</a></span>
<span class="normal"><a href="#__codelineno-62-22">22</a></span>
<span class="normal"><a href="#__codelineno-62-23">23</a></span>
<span class="normal"><a href="#__codelineno-62-24">24</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-62-1" name="__codelineno-62-1"></a><span class="n">ObjectOutputStream</span><span class="w"> </span><span class="n">outStream</span><span class="p">;</span>
<a id="__codelineno-62-2" name="__codelineno-62-2"></a><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-62-3" name="__codelineno-62-3"></a><span class="w"> </span><span class="n">outStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ObjectOutputStream</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">FileOutputSteam</span><span class="p">(</span><span class="n">filename</span><span class="p">));</span>
<a id="__codelineno-62-4" name="__codelineno-62-4"></a><span class="w"> </span><span class="c1">// write operations here since they can cause IOException</span>
<a id="__codelineno-62-5" name="__codelineno-62-5"></a><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">FileNotFoundException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-62-6" name="__codelineno-62-6"></a>
<a id="__codelineno-62-7" name="__codelineno-62-7"></a><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">IOException</span><span class="w"> </span><span class="n">e</span><span class="p">){</span>
<a id="__codelineno-62-8" name="__codelineno-62-8"></a>
<a id="__codelineno-62-9" name="__codelineno-62-9"></a><span class="p">}</span>
<a id="__codelineno-62-10" name="__codelineno-62-10"></a>
<a id="__codelineno-62-11" name="__codelineno-62-11"></a><span class="c1">// ObjectOutputStream Methods</span>
<a id="__codelineno-62-12" name="__codelineno-62-12"></a><span class="kd">public</span><span class="w"> </span><span class="nf">ObjectOutputStream</span><span class="p">(</span><span class="n">OutputStream</span><span class="w"> </span><span class="n">streamObj</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span><span class="p">,</span><span class="w"> </span><span class="n">FileNotFoundException</span>
<a id="__codelineno-62-13" name="__codelineno-62-13"></a><span class="kd">public</span><span class="w"> </span><span class="nf">ObjectOutputStream</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">FileOutputStream</span><span class="p">(</span><span class="n">filename</span><span class="p">))</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span><span class="p">,</span><span class="w"> </span><span class="n">FileNotFoundException</span>
<a id="__codelineno-62-14" name="__codelineno-62-14"></a><span class="kd">public</span><span class="w"> </span><span class="nf">ObjectOutputStream</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">FileOutputStream</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">File</span><span class="p">(</span><span class="n">filename</span><span class="p">)))</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span><span class="p">,</span><span class="w"> </span><span class="n">FileNotFoundException</span>
<a id="__codelineno-62-15" name="__codelineno-62-15"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">writeInt</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-62-16" name="__codelineno-62-16"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">writeLong</span><span class="p">(</span><span class="kt">long</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-62-17" name="__codelineno-62-17"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">writeDouble</span><span class="p">(</span><span class="kt">double</span><span class="w"> </span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-62-18" name="__codelineno-62-18"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">writeFloat</span><span class="p">(</span><span class="kt">float</span><span class="w"> </span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-62-19" name="__codelineno-62-19"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">writeChar</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">c</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-62-20" name="__codelineno-62-20"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">writeChar</span><span class="p">(</span><span class="kt">char</span><span class="w"> </span><span class="n">c</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-62-21" name="__codelineno-62-21"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">writeBoolean</span><span class="p">(</span><span class="kt">boolean</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-62-22" name="__codelineno-62-22"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">writeUTF</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">s</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-62-23" name="__codelineno-62-23"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">writeObject</span><span class="p">(</span><span class="n">Object</span><span class="w"> </span><span class="n">obj</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span><span class="p">,</span><span class="w"> </span><span class="n">NotSerializableException</span><span class="p">,</span><span class="w"> </span><span class="n">InvalidClassException</span><span class="w"> </span><span class="c1">// Object must be serializable</span>
<a id="__codelineno-62-24" name="__codelineno-62-24"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">close</span><span class="p">()</span>
</code></pre></div></td></tr></table></div>
<h4 id="reading-from-a-binary-file">Reading from a binary file</h4>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-63-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-63-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-63-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-63-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-63-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-63-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-63-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-63-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-63-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-63-10">10</a></span>
<span class="normal"><a href="#__codelineno-63-11">11</a></span>
<span class="normal"><a href="#__codelineno-63-12">12</a></span>
<span class="normal"><a href="#__codelineno-63-13">13</a></span>
<span class="normal"><a href="#__codelineno-63-14">14</a></span>
<span class="normal"><a href="#__codelineno-63-15">15</a></span>
<span class="normal"><a href="#__codelineno-63-16">16</a></span>
<span class="normal"><a href="#__codelineno-63-17">17</a></span>
<span class="normal"><a href="#__codelineno-63-18">18</a></span>
<span class="normal"><a href="#__codelineno-63-19">19</a></span>
<span class="normal"><a href="#__codelineno-63-20">20</a></span>
<span class="normal"><a href="#__codelineno-63-21">21</a></span>
<span class="normal"><a href="#__codelineno-63-22">22</a></span>
<span class="normal"><a href="#__codelineno-63-23">23</a></span>
<span class="normal"><a href="#__codelineno-63-24">24</a></span>
<span class="normal"><a href="#__codelineno-63-25">25</a></span>
<span class="normal"><a href="#__codelineno-63-26">26</a></span>
<span class="normal"><a href="#__codelineno-63-27">27</a></span>
<span class="normal"><a href="#__codelineno-63-28">28</a></span>
<span class="normal"><a href="#__codelineno-63-29">29</a></span>
<span class="normal"><a href="#__codelineno-63-30">30</a></span>
<span class="normal"><a href="#__codelineno-63-31">31</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-63-1" name="__codelineno-63-1"></a><span class="n">ObjectInputStream</span><span class="w"> </span><span class="n">inStream</span><span class="p">;</span>
<a id="__codelineno-63-2" name="__codelineno-63-2"></a><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-63-3" name="__codelineno-63-3"></a><span class="w"> </span><span class="n">inStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ObjectInputStream</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">FileinputSteam</span><span class="p">(</span><span class="n">filename</span><span class="p">));</span>
<a id="__codelineno-63-4" name="__codelineno-63-4"></a><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">FileNotFoundException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-63-5" name="__codelineno-63-5"></a>
<a id="__codelineno-63-6" name="__codelineno-63-6"></a><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">IOException</span><span class="w"> </span><span class="n">e</span><span class="p">){</span>
<a id="__codelineno-63-7" name="__codelineno-63-7"></a>
<a id="__codelineno-63-8" name="__codelineno-63-8"></a><span class="p">}</span>
<a id="__codelineno-63-9" name="__codelineno-63-9"></a>
<a id="__codelineno-63-10" name="__codelineno-63-10"></a><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-63-11" name="__codelineno-63-11"></a><span class="w"> </span><span class="k">while</span><span class="p">(</span><span class="kc">true</span><span class="p">){</span>
<a id="__codelineno-63-12" name="__codelineno-63-12"></a><span class="w"> </span><span class="c1">// read fom file</span>
<a id="__codelineno-63-13" name="__codelineno-63-13"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-63-14" name="__codelineno-63-14"></a><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">EOFException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// thrown when and of file has been reached</span>
<a id="__codelineno-63-15" name="__codelineno-63-15"></a><span class="w"> </span><span class="c1">// do nothing, only used to stop the cycle</span>
<a id="__codelineno-63-16" name="__codelineno-63-16"></a><span class="p">}</span>
<a id="__codelineno-63-17" name="__codelineno-63-17"></a>
<a id="__codelineno-63-18" name="__codelineno-63-18"></a><span class="c1">// ObjectOutputStream Methods</span>
<a id="__codelineno-63-19" name="__codelineno-63-19"></a><span class="kd">public</span><span class="w"> </span><span class="nf">ObjectOutputStream</span><span class="p">(</span><span class="n">InputStream</span><span class="w"> </span><span class="n">streamObj</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span><span class="p">,</span><span class="w"> </span><span class="n">FileNotFoundException</span>
<a id="__codelineno-63-20" name="__codelineno-63-20"></a><span class="kd">public</span><span class="w"> </span><span class="nf">ObjectOutputStream</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">FileInputStream</span><span class="p">(</span><span class="n">filename</span><span class="p">))</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span><span class="p">,</span><span class="w"> </span><span class="n">FileNotFoundException</span>
<a id="__codelineno-63-21" name="__codelineno-63-21"></a><span class="kd">public</span><span class="w"> </span><span class="nf">ObjectOutputStream</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">FileInputStream</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">File</span><span class="p">(</span><span class="n">filename</span><span class="p">)))</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span><span class="p">,</span><span class="w"> </span><span class="n">FileNotFoundException</span>
<a id="__codelineno-63-22" name="__codelineno-63-22"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">readInt</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-63-23" name="__codelineno-63-23"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">readLong</span><span class="p">(</span><span class="kt">long</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-63-24" name="__codelineno-63-24"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">readDouble</span><span class="p">(</span><span class="kt">double</span><span class="w"> </span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-63-25" name="__codelineno-63-25"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">readFloat</span><span class="p">(</span><span class="kt">float</span><span class="w"> </span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-63-26" name="__codelineno-63-26"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">readChar</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">c</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-63-27" name="__codelineno-63-27"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">readChar</span><span class="p">(</span><span class="kt">char</span><span class="w"> </span><span class="n">c</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-63-28" name="__codelineno-63-28"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">readBoolean</span><span class="p">(</span><span class="kt">boolean</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-63-29" name="__codelineno-63-29"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">readUTF</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">s</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span>
<a id="__codelineno-63-30" name="__codelineno-63-30"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">readObject</span><span class="p">(</span><span class="n">Object</span><span class="w"> </span><span class="n">obj</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">IOException</span><span class="p">,</span><span class="w"> </span><span class="n">NotSerializableException</span><span class="p">,</span><span class="w"> </span><span class="n">InvalidClassException</span><span class="w"> </span><span class="c1">// Object must be serializable</span>
<a id="__codelineno-63-31" name="__codelineno-63-31"></a><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">close</span><span class="p">()</span>
</code></pre></div></td></tr></table></div>
<h3 id="object-array-io-with-binary-files-serialization">Object &amp; Array I/O with Binary Files (Serialization)</h3>
<p>Needed for a class to be <em>serializable</em>:</p>
<ul>
<li>implements the <code>Serializable</code> interface</li>
<li>all instance variables are serializable</li>
<li>superclass, if exists, is serializable or has default constructor</li>
</ul>
<p>An array is serializable if it's base type is a serializable object.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-64-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-64-1" name="__codelineno-64-1"></a><span class="n">SerializableObject</span><span class="o">[]</span><span class="w"> </span><span class="n">array</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">SerializableObject</span><span class="o">[]</span><span class="p">)</span><span class="n">inStream</span><span class="p">.</span><span class="na">readObject</span><span class="p">();</span><span class="w"> </span><span class="c1">// read returns Object, cast needed</span>
</code></pre></div></td></tr></table></div>
<h2 id="functional-programming-in-java">Functional Programming in Java</h2>
<h3 id="functional-interfaces">Functional Interfaces</h3>
<p>Functional interfaces provide target types for <em>lambda expressions</em>.</p>
<p>General purpose <code>@functionalInterfaces</code>:</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-65-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-65-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-65-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-65-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-65-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-65-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-65-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-65-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-65-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-65-10">10</a></span>
<span class="normal"><a href="#__codelineno-65-11">11</a></span>
<span class="normal"><a href="#__codelineno-65-12">12</a></span>
<span class="normal"><a href="#__codelineno-65-13">13</a></span>
<span class="normal"><a href="#__codelineno-65-14">14</a></span>
<span class="normal"><a href="#__codelineno-65-15">15</a></span>
<span class="normal"><a href="#__codelineno-65-16">16</a></span>
<span class="normal"><a href="#__codelineno-65-17">17</a></span>
<span class="normal"><a href="#__codelineno-65-18">18</a></span>
<span class="normal"><a href="#__codelineno-65-19">19</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-65-1" name="__codelineno-65-1"></a><span class="c1">// takes input, performs actions, return boolean</span>
<a id="__codelineno-65-2" name="__codelineno-65-2"></a><span class="kd">public</span><span class="w"> </span><span class="kd">interface</span> <span class="nc">Predicate</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-3" name="__codelineno-65-3"></a><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">test</span><span class="p">(</span><span class="n">T</span><span class="w"> </span><span class="n">t</span><span class="p">);</span>
<a id="__codelineno-65-4" name="__codelineno-65-4"></a><span class="p">}</span>
<a id="__codelineno-65-5" name="__codelineno-65-5"></a>
<a id="__codelineno-65-6" name="__codelineno-65-6"></a><span class="c1">// takes input, performs action, no output returned</span>
<a id="__codelineno-65-7" name="__codelineno-65-7"></a><span class="kd">public</span><span class="w"> </span><span class="kd">interface</span> <span class="nc">Consumer</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-8" name="__codelineno-65-8"></a><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">accept</span><span class="p">(</span><span class="n">T</span><span class="w"> </span><span class="n">t</span><span class="p">);</span>
<a id="__codelineno-65-9" name="__codelineno-65-9"></a><span class="p">}</span>
<a id="__codelineno-65-10" name="__codelineno-65-10"></a>
<a id="__codelineno-65-11" name="__codelineno-65-11"></a><span class="c1">// takes no input, performs action, returns an output</span>
<a id="__codelineno-65-12" name="__codelineno-65-12"></a><span class="kd">public</span><span class="w"> </span><span class="kd">interface</span> <span class="nc">Supplier</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-13" name="__codelineno-65-13"></a><span class="w"> </span><span class="n">T</span><span class="w"> </span><span class="nf">get</span><span class="p">();</span>
<a id="__codelineno-65-14" name="__codelineno-65-14"></a><span class="p">}</span>
<a id="__codelineno-65-15" name="__codelineno-65-15"></a>
<a id="__codelineno-65-16" name="__codelineno-65-16"></a><span class="c1">// takes T as input, performs action, returns R as output</span>
<a id="__codelineno-65-17" name="__codelineno-65-17"></a><span class="kd">public</span><span class="w"> </span><span class="kd">interface</span> <span class="nc">Function</span><span class="o">&lt;</span><span class="n">T</span><span class="p">,</span><span class="w"> </span><span class="n">R</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-65-18" name="__codelineno-65-18"></a><span class="w"> </span><span class="n">R</span><span class="w"> </span><span class="nf">apply</span><span class="p">(</span><span class="n">T</span><span class="w"> </span><span class="n">t</span><span class="p">);</span>
<a id="__codelineno-65-19" name="__codelineno-65-19"></a><span class="p">}</span>
</code></pre></div></td></tr></table></div>
<h3 id="streams">Streams</h3>
<p>In java a <em>stream</em> is a <a href="https://en.wikipedia.org/wiki/Monad_%28functional_programming%29#Usage">Monad</a>. Monads allow the programmer to compose a sequence of operations, similar to a pipeline chaining expressions together.</p>
<p>The features of Java stream are:</p>
<ul>
<li>A stream is not a data structure instead it takes input from the Collections, Arrays or I/O channels.</li>
<li>Streams don't change the original data structure, they only provide the result as per the pipelined methods.</li>
<li>Each intermediate operation is lazily executed and returns a stream as a result, hence various intermediate operations can be pipelined. Terminal operations mark the end of the stream and return the result.</li>
</ul>
<p><strong>Intermediate Operations</strong>:</p>
<ul>
<li><code>anyMatch()</code></li>
<li><code>distinct()</code></li>
<li><code>filter()</code></li>
<li><code>findFirst()</code></li>
<li><code>flatmap()</code></li>
<li><code>map()</code></li>
<li><code>skip()</code></li>
<li><code>sorted()</code></li>
</ul>
<p><strong>Terminal Operations</strong>:</p>
<ul>
<li><code>forEach()</code> applies the same operation on each element</li>
<li><code>collect()</code> saves the elements in a new collection</li>
<li>reduce to a single summary element: <code>count()</code>, <code>max()</code>, <code>min()</code>, <code>reduce()</code>, <code>summaryStatistics()</code></li>
</ul>
<h3 id="lambda-expressions">Lambda Expressions</h3>
<p>Usable only by a <code>@FunctionalInterface</code>'s method or a method of a <em>stream</em>.</p>
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Java</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-66-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-66-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-66-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-66-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-66-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-66-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-66-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-66-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-66-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-66-10">10</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-66-1" name="__codelineno-66-1"></a><span class="n">lambda</span><span class="w"> </span><span class="n">operator</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">body</span><span class="p">;</span>
<a id="__codelineno-66-2" name="__codelineno-66-2"></a>
<a id="__codelineno-66-3" name="__codelineno-66-3"></a><span class="c1">//zero parameter</span>
<a id="__codelineno-66-4" name="__codelineno-66-4"></a><span class="p">()</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">body</span><span class="p">;</span>
<a id="__codelineno-66-5" name="__codelineno-66-5"></a>
<a id="__codelineno-66-6" name="__codelineno-66-6"></a><span class="c1">//one parameter</span>
<a id="__codelineno-66-7" name="__codelineno-66-7"></a><span class="p">(</span><span class="n">p</span><span class="p">)</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">body</span>
<a id="__codelineno-66-8" name="__codelineno-66-8"></a>
<a id="__codelineno-66-9" name="__codelineno-66-9"></a><span class="c1">// multiple parameter</span>
<a id="__codelineno-66-10" name="__codelineno-66-10"></a><span class="p">(</span><span class="n">p1</span><span class="p">,</span><span class="w"> </span><span class="n">p2</span><span class="p">,</span><span class="w"> </span><span class="p">...)</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">body</span>
</code></pre></div></td></tr></table></div>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="Footer" >
<a href="../dotnet/database/entity-framework.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: Entity Framework">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</div>
<div class="md-footer__title">
<span class="md-footer__direction">
Previous
</span>
<div class="md-ellipsis">
Entity Framework
</div>
</div>
</a>
<a href="java-collection-framework.html" class="md-footer__link md-footer__link--next" aria-label="Next: Java Collection Framework">
<div class="md-footer__title">
<span class="md-footer__direction">
Next
</span>
<div class="md-ellipsis">
Java Collection Framework
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
MIT
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://hachyderm.io/@m_lamonaca" target="_blank" rel="noopener me" title="hachyderm.io" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.5 102.5 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5m-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"/></svg>
</a>
<a href="https://github.com/m-lamonaca" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.instant", "navigation.indexes", "navigation.tracking", "navigation.pruning", "navigation.sections", "navigation.top", "navigation.tabs", "navigation.tabs.sticky", "navigation.footer", "toc.follow", "content.code.copy"], "search": "../../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.56dfad97.min.js"></script>
</body>
</html>