{"id":21166091,"url":"https://github.com/suhatanriverdi/kotlin-beginners-notes","last_synced_at":"2025-04-09T08:12:58.671Z","repository":{"id":37728913,"uuid":"389429650","full_name":"suhatanriverdi/Kotlin-Beginners-Notes","owner":"suhatanriverdi","description":"Kotlin Learning Notes from Udacity Course | Kotlin Bootcamp for Programmers by Google","archived":false,"fork":false,"pushed_at":"2025-01-02T12:25:44.000Z","size":479,"stargazers_count":64,"open_issues_count":0,"forks_count":23,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T06:08:39.311Z","etag":null,"topics":["beginner","beginner-code","beginner-friendly","kotlin","kotlin-android","kotlin-course","kotlin-language","learn-to-code"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/suhatanriverdi.png","metadata":{"files":{"readme":"README.html","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-25T19:51:59.000Z","updated_at":"2025-01-29T13:27:50.000Z","dependencies_parsed_at":"2024-12-25T11:14:42.000Z","dependency_job_id":"d3ccd0dd-0256-4af8-9ae2-24f45149ccfa","html_url":"https://github.com/suhatanriverdi/Kotlin-Beginners-Notes","commit_stats":null,"previous_names":["suhatanriverdi/kotlin-beginners-notes"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suhatanriverdi%2FKotlin-Beginners-Notes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suhatanriverdi%2FKotlin-Beginners-Notes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suhatanriverdi%2FKotlin-Beginners-Notes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suhatanriverdi%2FKotlin-Beginners-Notes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/suhatanriverdi","download_url":"https://codeload.github.com/suhatanriverdi/Kotlin-Beginners-Notes/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247999864,"owners_count":21031046,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beginner","beginner-code","beginner-friendly","kotlin","kotlin-android","kotlin-course","kotlin-language","learn-to-code"],"created_at":"2024-11-20T14:48:09.912Z","updated_at":"2025-04-09T08:12:58.635Z","avatar_url":"https://github.com/suhatanriverdi.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!DOCTYPE html\u003e\n    \u003chtml\u003e\n    \u003chead\u003e\n        \u003cmeta charset=\"UTF-8\"\u003e\n        \u003ctitle\u003eKotlin Beginners Notes\u003c/title\u003e\n        \u003cstyle\u003e\n/* From extension zhuangtongfa.material-theme */\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body {\n  box-sizing: border-box;\n  min-width: 200px;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body blockquote {\n  background-color: initial;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body pre {\n  color: initial;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body code {\n  color: inherit;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body pre code {\n  color: initial;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body code \u003e div {\n  background: none;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body table th, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body table td {\n  border: 1px solid rgba(171, 178, 191, 0.5) !important;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body.showEditorSelection .code-active-line:before {\n  border-left: none;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body.showEditorSelection .code-line:hover:before {\n  border-left: none;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body.showEditorSelection .code-line .code-line:hover:before {\n  border-left: none;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body p, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body blockquote, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ul, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ol, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body dl, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body table, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body pre {\n  margin-top: 16px;\n  margin-bottom: 16px;\n}\n\n/* Generated from 'node_modules/github-markdown-css/github-markdown.css' */\n@font-face {\n  font-family: octicons-link;\n  src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format(\"woff\");\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body {\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n  line-height: 1.5;\n  color: #abb2bf;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-size: 16px;\n  line-height: 1.5;\n  word-wrap: break-word;\n  background: #282c34;\n  padding-top: 20px;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-c {\n  color: #6a737d;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-c1, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-s .pl-v {\n  color: #005cc5;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-e, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-en {\n  color: #6f42c1;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-smi, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-s .pl-s1 {\n  color: #24292e;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-ent {\n  color: #22863a;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-k {\n  color: #d73a49;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-s, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-pds, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-s .pl-pse .pl-s1, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-sr, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-sr .pl-cce, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-sr .pl-sre, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-sr .pl-sra {\n  color: #032f62;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-v, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-smw {\n  color: #e36209;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-bu {\n  color: #b31d28;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-ii {\n  color: #fafbfc;\n  background-color: #b31d28;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-c2 {\n  color: #fafbfc;\n  background-color: #d73a49;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-c2::before {\n  content: \"^M\";\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-sr .pl-cce {\n  font-weight: bold;\n  color: #22863a;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-ml {\n  color: #735c0f;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-mh, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-mh .pl-en, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-ms {\n  font-weight: bold;\n  color: #005cc5;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-mi {\n  font-style: italic;\n  color: #24292e;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-mb {\n  font-weight: bold;\n  color: #24292e;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-md {\n  color: #b31d28;\n  background-color: #ffeef0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-mi1 {\n  color: #22863a;\n  background-color: #f0fff4;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-mc {\n  color: #e36209;\n  background-color: #ffebda;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-mi2 {\n  color: #f6f8fa;\n  background-color: #005cc5;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-mdr {\n  font-weight: bold;\n  color: #6f42c1;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-ba {\n  color: #586069;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-sg {\n  color: #959da5;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-corl {\n  text-decoration: underline;\n  color: #032f62;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .octicon {\n  display: inline-block;\n  vertical-align: text-top;\n  fill: currentColor;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body a {\n  background-color: transparent;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body a:active, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body a:hover {\n  outline-width: 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body strong {\n  font-weight: inherit;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body strong {\n  font-weight: bolder;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body img {\n  border-style: none;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body code, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body kbd, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body pre {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body hr {\n  box-sizing: content-box;\n  height: 0;\n  overflow: visible;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body input {\n  font: inherit;\n  margin: 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body input {\n  overflow: visible;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body [type=checkbox] {\n  box-sizing: border-box;\n  padding: 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body * {\n  box-sizing: border-box;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body input {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body a {\n  color: #528bff;\n  text-decoration: none;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body a:hover {\n  text-decoration: underline;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body strong {\n  font-weight: 600;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body hr {\n  height: 0;\n  margin: 15px 0;\n  overflow: hidden;\n  background: transparent;\n  border: 0;\n  border-bottom: 1px solid #dfe2e5;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body hr::before {\n  display: table;\n  content: \"\";\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body hr::after {\n  display: table;\n  clear: both;\n  content: \"\";\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body table {\n  border-spacing: 0;\n  border-collapse: collapse;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body td, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body th {\n  padding: 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h1, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h2, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h3, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h4, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h5, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h6 {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h1 {\n  font-size: 32px;\n  font-weight: 600;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h2 {\n  font-size: 24px;\n  font-weight: 600;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h3 {\n  font-size: 20px;\n  font-weight: 600;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h4 {\n  font-size: 16px;\n  font-weight: 600;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h5 {\n  font-size: 14px;\n  font-weight: 600;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h6 {\n  font-size: 12px;\n  font-weight: 600;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body p {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body blockquote {\n  margin: 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ul, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ol {\n  padding-left: 0;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ol ol, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ul ol {\n  list-style-type: lower-roman;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ul ul ol, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ul ol ol, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ol ul ol, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ol ol ol {\n  list-style-type: lower-alpha;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body dd {\n  margin-left: 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body code {\n  font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n  font-size: 12px;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body pre {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n  font-size: 12px;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .octicon {\n  vertical-align: text-bottom;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-0 {\n  padding-left: 0 !important;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-1 {\n  padding-left: 4px !important;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-2 {\n  padding-left: 8px !important;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-3 {\n  padding-left: 16px !important;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-4 {\n  padding-left: 24px !important;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-5 {\n  padding-left: 32px !important;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .pl-6 {\n  padding-left: 40px !important;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body::before {\n  display: table;\n  content: \"\";\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body::after {\n  display: table;\n  clear: both;\n  content: \"\";\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body \u003e *:first-child {\n  margin-top: 0 !important;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body \u003e *:last-child {\n  margin-bottom: 0 !important;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body a:not([href]) {\n  color: inherit;\n  text-decoration: none;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .anchor {\n  float: left;\n  padding-right: 4px;\n  margin-left: -20px;\n  line-height: 1;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .anchor:focus {\n  outline: none;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body p, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body blockquote, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ul, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ol, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body dl, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body table, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body pre {\n  margin-top: 0;\n  margin-bottom: 16px;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body hr {\n  height: 0.25em;\n  padding: 0;\n  margin: 24px 0;\n  background-color: #e1e4e8;\n  border: 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body blockquote {\n  /* padding: 0 1em;\n  color: #6a737d;\n  border-left: 0.25em solid #dfe2e5; */\n  padding: 8.5px 17px;\n  margin: 1.5em 0;\n  font-size: inherit;\n  color: #7c879c;\n  border-color: #4b5362;\n  border-width: 4px;\n  border-left: 5px solid #4b5362;\n  background: transparent;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body blockquote \u003e :first-child {\n  margin-top: 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body blockquote \u003e :last-child {\n  margin-bottom: 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body kbd {\n  display: inline-block;\n  padding: 3px 5px;\n  font-size: 11px;\n  line-height: 10px;\n  color: #444d56;\n  vertical-align: middle;\n  background-color: #fafbfc;\n  border: solid 1px #c6cbd1;\n  border-bottom-color: #959da5;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 #959da5;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h1, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h2, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h3, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h4, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h5, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h6 {\n  margin-top: 24px;\n  margin-bottom: 16px;\n  font-weight: 600;\n  line-height: 1.25;\n  color: #f0f0f0;\n  border-bottom: none;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h1 .octicon-link, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h2 .octicon-link, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h3 .octicon-link, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h4 .octicon-link, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h5 .octicon-link, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h6 .octicon-link {\n  color: #1b1f23;\n  vertical-align: middle;\n  visibility: hidden;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h1:hover .anchor, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h2:hover .anchor, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h3:hover .anchor, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h4:hover .anchor, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h5:hover .anchor, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h6:hover .anchor {\n  text-decoration: none;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h1:hover .anchor .octicon-link, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h2:hover .anchor .octicon-link, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h3:hover .anchor .octicon-link, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h4:hover .anchor .octicon-link, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h5:hover .anchor .octicon-link, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h6:hover .anchor .octicon-link {\n  visibility: visible;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h1 {\n  padding-bottom: 0.3em;\n  font-size: 2em;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h2 {\n  padding-bottom: 0.3em;\n  font-size: 1.5em;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h3 {\n  font-size: 1.25em;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h4 {\n  font-size: 1em;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h5 {\n  font-size: 0.875em;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body h6 {\n  font-size: 0.85em;\n  color: #6a737d;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ul, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ol {\n  padding-left: 2em;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ul ul, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ul ol, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ol ol, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body ol ul {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body li {\n  word-wrap: break-all;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body li \u003e p {\n  margin-top: 16px;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body li + li {\n  margin-top: 0.25em;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body dl {\n  padding: 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body dl dt {\n  padding: 0;\n  margin-top: 16px;\n  font-size: 1em;\n  font-style: italic;\n  font-weight: 600;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body dl dd {\n  padding: 0 16px;\n  margin-bottom: 16px;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body table {\n  display: block;\n  width: 100%;\n  overflow: auto;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body table th {\n  font-weight: 700;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body table th, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body table td {\n  padding: 6px 13px;\n  /* border: 1px solid #dfe2e5; */\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body table tr {\n  /* background-color: #fff; */\n  /* border-top: 1px solid #c6cbd1; */\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body table tr:nth-child(2n) {\n  /* background-color: #f6f8fa; */\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body img {\n  max-width: 100%;\n  box-sizing: content-box;\n  display: inline-block;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body img[align=right] {\n  padding-left: 20px;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body img[align=left] {\n  padding-right: 20px;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body code {\n  padding: 0.2em 0.4em;\n  margin: 0;\n  font-size: 85%;\n  background-color: #3a3f4b;\n  border-radius: 3px;\n  color: white;\n  margin: 0 1px;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body pre {\n  word-wrap: normal;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body pre \u003e code {\n  padding: 0;\n  margin: 0;\n  font-size: 100%;\n  word-break: normal;\n  white-space: pre;\n  background: transparent;\n  border: 0;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .highlight {\n  margin-bottom: 16px;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .highlight pre {\n  margin-bottom: 0;\n  word-break: normal;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .highlight pre, .vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body pre {\n  padding: 16px;\n  overflow: auto;\n  font-size: 85%;\n  line-height: 1.45;\n  /* background-color: #f6f8fa; */\n  border-radius: 3px;\n  background-color: #31363f;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body pre code {\n  display: inline;\n  max-width: auto;\n  padding: 0;\n  margin: 0;\n  overflow: visible;\n  line-height: inherit;\n  word-wrap: normal;\n  background-color: transparent;\n  border: 0;\n  color: #abb2bf;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .full-commit .btn-outline:not(:disabled):hover {\n  color: #005cc5;\n  border-color: #005cc5;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body kbd {\n  display: inline-block;\n  padding: 3px 5px;\n  font: 11px \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n  line-height: 10px;\n  color: #444d56;\n  vertical-align: middle;\n  background-color: #fafbfc;\n  border: solid 1px #d1d5da;\n  border-bottom-color: #c6cbd1;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 #c6cbd1;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body :checked + .radio-label {\n  position: relative;\n  z-index: 1;\n  border-color: #0366d6;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .task-list-item {\n  list-style-type: none;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .task-list-item + .task-list-item {\n  margin-top: 3px;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body .task-list-item input {\n  margin: 0 0.2em 0.25em -1.6em;\n  vertical-align: middle;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"].vscode-body hr {\n  border-bottom-color: #eee;\n}\n\n/*\n\nAtom One Dark by Daniel Gamage\nOriginal One Dark Syntax theme from https://github.com/atom/one-dark-syntax\n\nbase:    #282c34\nmono-1:  #abb2bf\nmono-2:  #818896\nmono-3:  #5c6370\nhue-1:   #56b6c2\nhue-2:   #61aeee\nhue-3:   #c678dd\nhue-4:   #98c379\nhue-5:   #e06c75\nhue-5-2: #be5046\nhue-6:   #d19a66\nhue-6-2: #e6c07b\n\n*/\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  color: #abb2bf;\n  background: #282c34;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-comment,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-quote {\n  color: #5c6370;\n  font-style: italic;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-doctag,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-keyword,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-formula {\n  color: #c678dd;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-section,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-name,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-selector-tag,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-deletion,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-subst {\n  color: #e06c75;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-literal {\n  color: #56b6c2;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-string,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-regexp,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-addition,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-attribute,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-meta-string {\n  color: #98c379;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-built_in,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-class .hljs-title {\n  color: #e6c07b;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-attr,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-variable,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-template-variable,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-type,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-selector-class,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-selector-attr,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-selector-pseudo,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-number {\n  color: #d19a66;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-symbol,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-bullet,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-link,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-meta,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-selector-id,\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-title {\n  color: #61aeee;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-emphasis {\n  font-style: italic;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-strong {\n  font-weight: bold;\n}\n.vscode-dark[data-vscode-theme-name=\"One Dark Pro\"] .hljs-link {\n  text-decoration: underline;\n}\n\n\u003c/style\u003e\n        \u003clink rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.10.2/dist/katex.min.css\" integrity=\"sha384-yFRtMMDnQtDRO8rLpMIKrtPCD5jdktao2TV19YiZYWMDkUR5GQZR/NOVTdquEx1j\" crossorigin=\"anonymous\"\u003e\n\u003clink href=\"https://cdn.jsdelivr.net/npm/katex-copytex@latest/dist/katex-copytex.min.css\" rel=\"stylesheet\" type=\"text/css\"\u003e\n        \u003clink rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/markdown.css\"\u003e\n\u003clink rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/highlight.css\"\u003e\n\u003cstyle\u003e\n            body {\n                font-family: -apple-system, BlinkMacSystemFont, 'Segoe WPC', 'Segoe UI', system-ui, 'Ubuntu', 'Droid Sans', sans-serif;\n                font-size: 14px;\n                line-height: 1.6;\n            }\n        \u003c/style\u003e\n        \u003cstyle\u003e\n.task-list-item { list-style-type: none; } .task-list-item-checkbox { margin-left: -20px; vertical-align: middle; }\n\u003c/style\u003e\n        \n        \u003cscript src=\"https://cdn.jsdelivr.net/npm/katex-copytex@latest/dist/katex-copytex.min.js\"\u003e\u003c/script\u003e\n        \n    \u003c/head\u003e\n    \u003cbody class=\"vscode-body vscode-light\"\u003e\n        \u003ch1 id=\"kotlin-beginners-notes\"\u003eKotlin Beginners Notes\u003c/h1\u003e\n\u003cp\u003eThese are all personal notes taken from the Udacity Course (ud9011) of Kotlin Bootcamp for Programmers by Google as well as other resources. You can use it to learn Kotlin if you are a \u003cstrong\u003ebeginner\u003c/strong\u003e, I have taken most of the things mentioned in the all sections/videos of this course including some brief pieces from official documentation and official video of JetBrains as well. I also cared about the order of the topics, so it starts from the basics from top to bottom goes to the more advanced ones. This is not an official documentation. You will be probably finding more personal notes and human mistakes :)\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://user-images.githubusercontent.com/36234545/127040534-c2448cfd-a4c4-43cd-9bb3-c03787b37e51.png\" alt=\"2021-07-26 21_33_44-Editing Kotlin-Notes_README md at main · shtanriverdi_Kotlin-Notes — Mozilla Fir\"\u003e\u003c/p\u003e\n\u003ch1 id=\"table-of-contents\"\u003eTable of Contents\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#l1\"\u003eLesson 1 \u0026amp; 2 Introduction | Kotlin Basics\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#l3\"\u003eLesson 3 | Functions\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#l4\"\u003eLesson 4 | Classes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#l5\"\u003eLesson 5 | Kotlin Essentials: Beyond The Basics\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"l1\"\u003eLesson 1 \u0026 2 Introduction | Kotlin Basics\u003c/h2\u003e\n\u003ch3 id=\"package-definition-and-imports\"\u003ePackage Definition and Imports\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e// Package specification should be at the top of the source file.\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003epackage\u003c/span\u003e my.demo\n\n\u003cspan class=\"hljs-keyword\"\u003eimport\u003c/span\u003e kotlin.text.*\n\n\u003cspan class=\"hljs-comment\"\u003e// Main function\u003c/span\u003e\n\u003cspan class=\"hljs-function\"\u003e\u003cspan class=\"hljs-keyword\"\u003efun\u003c/span\u003e \u003cspan class=\"hljs-title\"\u003emain\u003c/span\u003e\u003cspan class=\"hljs-params\"\u003e(args: \u003cspan class=\"hljs-type\"\u003eArray\u003c/span\u003e\u0026lt;\u003cspan class=\"hljs-type\"\u003eString\u003c/span\u003e\u0026gt;)\u003c/span\u003e\u003c/span\u003e {\n    printHello ()\n}\n\n\u003cspan class=\"hljs-comment\"\u003e// Alternative main, no need to write parameters!\u003c/span\u003e\n\u003cspan class=\"hljs-function\"\u003e\u003cspan class=\"hljs-keyword\"\u003efun\u003c/span\u003e \u003cspan class=\"hljs-title\"\u003emain\u003c/span\u003e\u003cspan class=\"hljs-params\"\u003e()\u003c/span\u003e\u003c/span\u003e {\n    printHello ()\n}\n\n\u003cspan class=\"hljs-comment\"\u003e// Prints \u0026quot;Hello Kotlin\u0026quot;, println() puts newline, print()\u003c/span\u003e\n\u003cspan class=\"hljs-function\"\u003e\u003cspan class=\"hljs-keyword\"\u003efun\u003c/span\u003e \u003cspan class=\"hljs-title\"\u003eprintHello\u003c/span\u003e \u003cspan class=\"hljs-params\"\u003e()\u003c/span\u003e\u003c/span\u003e {\n    println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;Hello Kotlin!\u0026quot;\u003c/span\u003e)\n}\n\n\u003cspan class=\"hljs-comment\"\u003e// A function that returns \u0026quot;OK\u0026quot; string\u003c/span\u003e\n\u003cspan class=\"hljs-function\"\u003e\u003cspan class=\"hljs-keyword\"\u003efun\u003c/span\u003e \u003cspan class=\"hljs-title\"\u003estart\u003c/span\u003e\u003cspan class=\"hljs-params\"\u003e()\u003c/span\u003e\u003c/span\u003e: String = \u003cspan class=\"hljs-string\"\u003e\u0026quot;OK\u0026quot;\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Function returns \u0026quot;Genesis\u0026quot;, no need to write \u0026quot;return\u0026quot;\u003c/span\u003e\n\u003cspan class=\"hljs-function\"\u003e\u003cspan class=\"hljs-keyword\"\u003efun\u003c/span\u003e \u003cspan class=\"hljs-title\"\u003ereturnString\u003c/span\u003e \u003cspan class=\"hljs-params\"\u003e()\u003c/span\u003e\u003c/span\u003e : String = \u003cspan class=\"hljs-string\"\u003e\u0026quot;Genesis\u0026quot;\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Function returns \u0026quot;Genesis2\u0026quot; Alternative Way\u003c/span\u003e\n\u003cspan class=\"hljs-function\"\u003e\u003cspan class=\"hljs-keyword\"\u003efun\u003c/span\u003e \u003cspan class=\"hljs-title\"\u003ereturnString2\u003c/span\u003e \u003cspan class=\"hljs-params\"\u003e()\u003c/span\u003e\u003c/span\u003e : String {\n    \u003cspan class=\"hljs-keyword\"\u003ereturn\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\u0026quot;Genesis2\u0026quot;\u003c/span\u003e\n}\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"operators-----\"\u003eOperators, -, +, /, *\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e// Returns integer\u003c/span\u003e\nprintln(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e + \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// Prints: 2\u003c/span\u003e\nprintln(\u003cspan class=\"hljs-number\"\u003e53\u003c/span\u003e - \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// Prints: 50\u003c/span\u003e\nprintln(\u003cspan class=\"hljs-number\"\u003e50\u003c/span\u003e / \u003cspan class=\"hljs-number\"\u003e10\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// Prints: 5\u003c/span\u003e\nprintln(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e / \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// Prints: 0\u003c/span\u003e\nprintln(\u003cspan class=\"hljs-number\"\u003e6\u003c/span\u003e * \u003cspan class=\"hljs-number\"\u003e50\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// Prints: 300\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Returns double\u003c/span\u003e\nprintln(\u003cspan class=\"hljs-number\"\u003e1.0\u003c/span\u003e / \u003cspan class=\"hljs-number\"\u003e2.0\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// Prints: 0.5\u003c/span\u003e\nprintln(\u003cspan class=\"hljs-number\"\u003e1.0\u003c/span\u003e / \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// Prints: 0.5\u003c/span\u003e\nprintln(\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e / \u003cspan class=\"hljs-number\"\u003e2.0\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// Prints: 1.0\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Kotlin let\u0026#x27;s you overwrite the basic operators\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// You can call methods on variables\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e fish = \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e\nprintln(fish.times(\u003cspan class=\"hljs-number\"\u003e6\u003c/span\u003e)) \u003cspan class=\"hljs-comment\"\u003e// Prints: 12\u003c/span\u003e\nprintln(fish.div(\u003cspan class=\"hljs-number\"\u003e10.0\u003c/span\u003e)) \u003cspan class=\"hljs-comment\"\u003e// Prints: 0.2\u003c/span\u003e\nprintln(fish.plus(\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)) \u003cspan class=\"hljs-comment\"\u003e// Prints: 5\u003c/span\u003e\nprintln(fish.minus(\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)) \u003cspan class=\"hljs-comment\"\u003e// Prints: -1\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// You can use numbers(basic types) as if they were objects\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// Use primitive \u0026#x27;int\u0026#x27; as an object\u003c/span\u003e\n\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e.toLong() \u003cspan class=\"hljs-comment\"\u003e// 1\u003c/span\u003e\nprintln(\u003cspan class=\"hljs-literal\"\u003efalse\u003c/span\u003e.not()) \u003cspan class=\"hljs-comment\"\u003e// true\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"boxing\"\u003eBoxing\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e// Boxing describes the process of converting a primitive value to an object and unboxing therefore the inverse\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// All numerical types in Kotlin have a supertype called Number\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// Store value one in a variable of type Number\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// It\u0026#x27;ll need to be placed in an object wrapper\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// This is called boxing\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e boxed: Number = \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e\n     ^       ^      ^\n    name    type  value\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e num: \u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e = \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e dob: \u003cspan class=\"hljs-built_in\"\u003eDouble\u003c/span\u003e = \u003cspan class=\"hljs-number\"\u003e2.0\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Both lines do the exact same thing internally\u003c/span\u003e\nInteger x = \u003cspan class=\"hljs-number\"\u003e42\u003c/span\u003e;\nInteger y = Integer.valueOf(\u003cspan class=\"hljs-number\"\u003e42\u003c/span\u003e);\n\n\u003cspan class=\"hljs-comment\"\u003e// Eventhough this is very handy, it unfortunately leads to a decrease in performance\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// We can avoid creating these objets wrappers by not storing numbers in objects\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// There are two types of variables in Kotlin\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// Changeable \u0026amp; Unchangeable\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e//   var           val\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// With \u0026quot;val\u0026quot; you can assign value only once\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e aquarium = \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e\naquarium = \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e \u003cspan class=\"hljs-comment\"\u003e// -\u0026gt; ERROR! cannot be reassigned\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// You can assign vals;\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e str = \u003cspan class=\"hljs-string\"\u003e\u0026quot;string\u0026quot;\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e numInt = \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e numDouble = \u003cspan class=\"hljs-number\"\u003e1.0\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e bool = \u003cspan class=\"hljs-literal\"\u003efalse\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// With \u0026quot;var\u0026quot; you can assign a value, and then you can change it\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e fish = \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e\nfish = \u003cspan class=\"hljs-number\"\u003e50\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// Type is inferred meaning that compiler can figure out the type from the context\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// Even so the type is inferred, it becomes fixed at compile time,\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// So you cannot change a type of a varible in kotlin once it\u0026#x27;s type has been determined.\u003c/span\u003e\nfish = \u003cspan class=\"hljs-string\"\u003e\u0026quot;Bubbles\u0026quot;\u003c/span\u003e \u003cspan class=\"hljs-comment\"\u003e// ERROR\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// We can use variables in operations and there is no punctuation at the end\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e str = \u003cspan class=\"hljs-number\"\u003e8\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e a = \u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e\na + str\nprint(a + str)\n\n\u003cspan class=\"hljs-comment\"\u003e// Number types won\u0026#x27;t implicitly convert to other types, so you can\u0026#x27;t assign\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// A short value to a long variable or a byte to an int\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e b: \u003cspan class=\"hljs-built_in\"\u003eByte\u003c/span\u003e = \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e i: \u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e = b \u003cspan class=\"hljs-comment\"\u003e// ERROR Type Mismatch\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// But you can always assign them by casting like this;\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e i: \u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e = b.toInt()\n\n\u003cspan class=\"hljs-comment\"\u003e// Kotlin supports underscores in numbers\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e oneMillion = \u003cspan class=\"hljs-number\"\u003e1_000_000\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e socialSecurityNumber = \u003cspan class=\"hljs-number\"\u003e999_99_9999L\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e hexBytes = \u003cspan class=\"hljs-number\"\u003e0xFF_EC_DE_5E\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e bytes = \u003cspan class=\"hljs-number\"\u003e0b11010010_01101001_10010100_100100010\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// You can speficy long constants in a format that makes sense to you\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// The type is inferred by Kotlin\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"nullability\"\u003eNullability\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e// Kotlin helps avoid null pointer exceptions\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// When you declare a variables type expicitly, by default its value cannot be null\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e rocks: \u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Use the question mark operator to indicate that a variable can be null\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e rocks: \u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e? = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Whe you have complex data types such as a list, \u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e lotsOfFish: List\u0026lt;String?\u0026gt; = listOf(\u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e, \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e)\n\n\u003cspan class=\"hljs-comment\"\u003e// You can allow for the list to be null, but if it is not null its elements cannot be null\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e evenMoreFish: List\u0026lt;String\u0026gt;? = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e definitelyFish: List\u0026lt;String?\u0026gt;? = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Or you can allow both the list or the elements to be null\u003c/span\u003e\ndefinitelyFish = listOf(\u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e, \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e)\n\n\u003cspan class=\"hljs-comment\"\u003e// Samples\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// Creating List\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e names5: List\u0026lt;String\u0026gt; = listOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;asd\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;adsad3\u0026quot;\u003c/span\u003e)\n\n\u003cspan class=\"hljs-comment\"\u003e// Allow list to be null\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e names: List\u0026lt;String\u0026gt;? = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Allow list items to be null\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// But list cannot be null\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e names2: List\u0026lt;String?\u0026gt; = listOf()\n\n\u003cspan class=\"hljs-comment\"\u003e// ERROR, List cannot be null\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e names3: List\u0026lt;String?\u0026gt; = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Allow both list items and list itself to be null\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// But list cannot be null\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e names4: List\u0026lt;String?\u0026gt;? = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e a: String = \u003cspan class=\"hljs-string\"\u003e\u0026quot;abc\u0026quot;\u003c/span\u003e \u003cspan class=\"hljs-comment\"\u003e// Regular initialization means non-null by default\u003c/span\u003e\na = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e \u003cspan class=\"hljs-comment\"\u003e// compilation error\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// it\u0026#x27;s guaranteed not to cause an NPE, so you can safely say:\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e l = a.length\n\n\u003cspan class=\"hljs-comment\"\u003e// To allow nulls, you can declare a variable as nullable string, written String?:\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e b: String? = \u003cspan class=\"hljs-string\"\u003e\u0026quot;abc\u0026quot;\u003c/span\u003e \u003cspan class=\"hljs-comment\"\u003e// can be set null\u003c/span\u003e\nb = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e \u003cspan class=\"hljs-comment\"\u003e// ok\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e l = b.length \u003cspan class=\"hljs-comment\"\u003e// error: variable \u0026#x27;b\u0026#x27; can be null\u003c/span\u003e\nprint(b)\n\n\u003cspan class=\"hljs-comment\"\u003e// List with some null items\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e listWithNulls: List\u0026lt;String?\u0026gt; = listOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;Kot\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;melo\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e)\n\n\u003cspan class=\"hljs-comment\"\u003e// Checking for null in conditions\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// Option 1: First, you can explicitly check if b is null, and handle the two options separately:\u003c/span\u003e\n\t\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e l = \u003cspan class=\"hljs-keyword\"\u003eif\u003c/span\u003e (b != \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e) b.length \u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e -\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e\n\t\n\u003cspan class=\"hljs-comment\"\u003e// Option 2: Safe calls, Your second option is the safe call operator, written \u0026quot;?.\u0026quot;\u003c/span\u003e\n\t\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e a = \u003cspan class=\"hljs-string\"\u003e\u0026quot;Kotlin\u0026quot;\u003c/span\u003e\n\t\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e b: String? = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\n\tprintln(b?.length)\n\tprintln(a?.length) \u003cspan class=\"hljs-comment\"\u003e// Unnecessary safe call\u003c/span\u003e\n\t\n\u003cspan class=\"hljs-comment\"\u003e// This returns \u0026quot;b.length\u0026quot; if \u0026quot;b is not null\u0026quot;, and \u0026quot;null\u0026quot; otherwise. The type of this expression is Int?\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// \u0026quot;b?.length\u0026quot; is equal to \u0026quot;if (b != null) b.length else -1\u0026quot;\u003c/span\u003e\n\n    \u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e b: String? = \u003cspan class=\"hljs-string\"\u003e\u0026quot;abc\u0026quot;\u003c/span\u003e\n    \u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e l = \u003cspan class=\"hljs-keyword\"\u003eif\u003c/span\u003e (b != \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e) b.length \u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e -\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e\n    \u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e l2 = b?.length\n\n    \u003cspan class=\"hljs-comment\"\u003e// Such a chain returns null if any of the properties in it is null.\u003c/span\u003e\n    bob?.department?.head?.name\n\n\u003cspan class=\"hljs-comment\"\u003e// If you want to do an operation on the non-null items\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// To perform a certain operation only for non-null values, you can use the safe call operator together with let: \u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e listWithNulls: List\u0026lt;String?\u0026gt; = listOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;Kotlin\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (item \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e listWithNulls) {\n    item?.let { println(it) } \u003cspan class=\"hljs-comment\"\u003e// prints Kotlin and ignores null\u003c/span\u003e\n}\n\n\u003cspan class=\"hljs-comment\"\u003e// Print also nulls\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e listWithNulls: List\u0026lt;String?\u0026gt; = listOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;Genesis\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;melo\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e)\nprint(listWithNulls)\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"elvis-operator------\"\u003eElvis operator  \u0026quot;  ?:  \u0026quot;\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e/*If the expression to the left of ?: is not null, the elvis operator returns it, otherwise it returns the expression to the right. Note that the right-hand side expression is evaluated only if the left-hand side is null.*/\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e l: \u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e = \u003cspan class=\"hljs-keyword\"\u003eif\u003c/span\u003e (b != \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e) b.length \u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e -\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e l = b?.length ?: -\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e/*If the expression to the left of ?: is not null, the elvis operator returns it, otherwise it returns the expression to the right. Note that the right-hand side expression is evaluated only if the left-hand side is null.*/\u003c/span\u003e\n\t\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e b: String? = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e l = b?.length ?: -\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e\nprint(l)\n\n\u003cspan class=\"hljs-comment\"\u003e/*Since throw and return are expressions in Kotlin, they can also be used on the right hand side of the elvis operator. This can be very handy, for example, for checking function arguments:\n*/\u003c/span\u003e\n\u003cspan class=\"hljs-function\"\u003e\u003cspan class=\"hljs-keyword\"\u003efun\u003c/span\u003e \u003cspan class=\"hljs-title\"\u003efoo\u003c/span\u003e\u003cspan class=\"hljs-params\"\u003e(node: \u003cspan class=\"hljs-type\"\u003eNode\u003c/span\u003e)\u003c/span\u003e\u003c/span\u003e: String? {\n    \u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e parent = node.getParent() ?: \u003cspan class=\"hljs-keyword\"\u003ereturn\u003c/span\u003e \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\n    \u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e name = node.getName() ?: \u003cspan class=\"hljs-keyword\"\u003ethrow\u003c/span\u003e IllegalArgumentException(\u003cspan class=\"hljs-string\"\u003e\u0026quot;name expected\u0026quot;\u003c/span\u003e)\n    \u003cspan class=\"hljs-comment\"\u003e// ...\u003c/span\u003e\n}\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"the----operator----not-null-assertion-operator---\"\u003eThe \u0026quot; ! \u0026quot; Operator  \u0026amp;  Not-null Assertion Operator \u0026quot; !! \u0026quot;\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e/*This is unsafe nullable type (T?) conversion to a non-nullable type (T), !// will throw NullPointerException if the value is null.*/\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e/*The third option is for NPE-lovers: the not-null assertion operator (!!) converts any value to a non-null type and throws an exception if the value is null. You can write b!!, and this will return a non-null value of b (for example, a String in our example) or throw an NPE if b is null:*/\u003c/span\u003e\n\n\t\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e l = b!!.length\n\n\u003cspan class=\"hljs-comment\"\u003e/*Thus, if you want an NPE, you can have it, but you have to ask for it explicitly, and it does not appear out of the blue.*/\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"safe-casts\"\u003eSafe casts\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e/*Regular casts may result into a ClassCastException if the object is not of the target type. Another option is to use safe casts that return null if the attempt was not successful:*/\u003c/span\u003e\n\n    \u003cspan class=\"hljs-comment\"\u003e// Safe Casts\u003c/span\u003e\n    \u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e a = \u003cspan class=\"hljs-string\"\u003e\u0026quot;1\u0026quot;\u003c/span\u003e\n    \u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e b = \u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e\n    \u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e aInt: \u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e? = a \u003cspan class=\"hljs-keyword\"\u003eas\u003c/span\u003e? \u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\n    \u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e bInt: \u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e? = b \u003cspan class=\"hljs-keyword\"\u003eas\u003c/span\u003e? \u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\n    print(aInt) \u003cspan class=\"hljs-comment\"\u003e// null\u003c/span\u003e\n    print(bInt) \u003cspan class=\"hljs-comment\"\u003e// 5\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"collections-of-a-nullable-type\"\u003eCollections of a nullable type\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e/*If you have a collection of elements of a nullable type and want to filter non-null elements, you can do so by using filterNotNull:*/\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e nullableList: List\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e?\u0026gt; = listOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e4\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e intList: List\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\u0026gt; = nullableList.filterNotNull()\n\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e nullableList: List\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e?\u0026gt; = listOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e, \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e, \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e nonNullList = nullableList.filterNotNull()\nprint(nonNullList) \u003cspan class=\"hljs-comment\"\u003e// Prints: [1, 2, 5]\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// You can do some cool null testing with the question mark operator saving you the pain of many if else statements\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// You can check if an object or variable is non null before accessing one of its methods\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e fishFoodTreats: \u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e? = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003ereturn\u003c/span\u003e fishFoodTreats?.dec() ?: \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e fishFoodTreats = \u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003ereturn\u003c/span\u003e fishFoodTreats?.dec() ?: \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// You can also chain null tests in an expression\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e/*If \u0026quot;fishFoodTreats\u0026quot; is not null use a treat and return a new value and otherwise return the value after the colon which is zero*/\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"practice-time-basic-operations\"\u003ePractice Time: Basic Operations\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e/*\nSolve the following using the operator methods in one line of code.\nIf you start with 2 fish, and they breed twice, producing 71 offspring the first time, and 233 offspring the second time, and then 13 fish are swallowed by a hungry moray eel, how many fish do you have left? How many aquariums do you need if you can put 30 fish per aquarium?\n\nHint: You can chain method calls.\nHint: You can call the methods on numbers, and Kotlin will convert them to objects for you.\nBonus question: What is special about all the numbers of fish?*/\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Solution Code\u003c/span\u003e\n\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e.plus(\u003cspan class=\"hljs-number\"\u003e71\u003c/span\u003e).plus(\u003cspan class=\"hljs-number\"\u003e233\u003c/span\u003e).minus(\u003cspan class=\"hljs-number\"\u003e13\u003c/span\u003e).div(\u003cspan class=\"hljs-number\"\u003e30\u003c/span\u003e).plus(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// Bonus question: If you\u0026#x27;ve noticed, all fish numbers above are prime.\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// My One Line Solution\u003c/span\u003e\nprintln(((\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e.times(\u003cspan class=\"hljs-number\"\u003e71\u003c/span\u003e).plus(\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e.times(\u003cspan class=\"hljs-number\"\u003e233\u003c/span\u003e))).minus(\u003cspan class=\"hljs-number\"\u003e13\u003c/span\u003e)).div(\u003cspan class=\"hljs-number\"\u003e30\u003c/span\u003e).plus((\u003cspan class=\"hljs-keyword\"\u003eif\u003c/span\u003e (\u003cspan class=\"hljs-number\"\u003e595\u003c/span\u003e.mod(\u003cspan class=\"hljs-number\"\u003e30\u003c/span\u003e) \u0026gt; \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e) \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e \u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e)))\n\n\u003cspan class=\"hljs-comment\"\u003e// To find how many fishes left\u003c/span\u003e\nprintln((\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e.times(\u003cspan class=\"hljs-number\"\u003e71\u003c/span\u003e).plus(\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e.times(\u003cspan class=\"hljs-number\"\u003e233\u003c/span\u003e))).minus(\u003cspan class=\"hljs-number\"\u003e13\u003c/span\u003e))\n\n\u003cspan class=\"hljs-comment\"\u003e// To find Aquariums Needed\u003c/span\u003e\nprintln(\u003cspan class=\"hljs-number\"\u003e595\u003c/span\u003e.div(\u003cspan class=\"hljs-number\"\u003e30\u003c/span\u003e) + \u003cspan class=\"hljs-keyword\"\u003eif\u003c/span\u003e (\u003cspan class=\"hljs-number\"\u003e595\u003c/span\u003e.mod(\u003cspan class=\"hljs-number\"\u003e30\u003c/span\u003e) \u0026gt; \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e) \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e \u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e)\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"practice-time-variables\"\u003ePractice Time: Variables\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e/*Create a String variable rainbowColor, set its color value, then change it.\nCreate a variable blackColor whose value cannot be changed once assigned. Try changing it anyway.*/\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e rainbowColor: String = \u003cspan class=\"hljs-string\"\u003e\u0026quot;green\u0026quot;\u003c/span\u003e\nrainbowColor = \u003cspan class=\"hljs-string\"\u003e\u0026quot;blue\u0026quot;\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e blackColor: String = \u003cspan class=\"hljs-string\"\u003e\u0026quot;you cannot change me// I am pure Black!\u0026quot;\u003c/span\u003e\nblackColor = \u003cspan class=\"hljs-string\"\u003e\u0026quot;White!\u0026quot;\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e//Alternative\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e rainbowColor = \u003cspan class=\"hljs-string\"\u003e\u0026quot;green\u0026quot;\u003c/span\u003e\nrainbowColor = \u003cspan class=\"hljs-string\"\u003e\u0026quot;blue\u0026quot;\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e blackColor = \u003cspan class=\"hljs-string\"\u003e\u0026quot;black\u0026quot;\u003c/span\u003e\nblackColor = \u003cspan class=\"hljs-string\"\u003e\u0026quot;white\u0026quot;\u003c/span\u003e \u003cspan class=\"hljs-comment\"\u003e// Error\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"practice-time-nullability\"\u003ePractice Time: Nullability\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e// Try to set rainbowColor to null. Declare two variables, greenColor and blueColor. Use two different ways of setting them to null.\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e rainbowColor = \u003cspan class=\"hljs-string\"\u003e\u0026quot;red\u0026quot;\u003c/span\u003e\nrainbowColor = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e \u003cspan class=\"hljs-comment\"\u003e// Error\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e greenColor = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e blueColor: \u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e? = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"practice-time-nullabilitylists\"\u003ePractice Time: Nullability/Lists\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e// Create a list with two elements that are null; do it in two different ways.\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// Next, create a list where the list is null.\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// list with two null items\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e list = listOf(\u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e,\u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e list1: List\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e?\u0026gt; = listOf(\u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e, \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e)\n\n\u003cspan class=\"hljs-comment\"\u003e// The list2 itself is null\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e list2: List\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\u0026gt;? = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"practice-time-null-checks\"\u003ePractice Time: Null Checks\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e// Create a nullable integer variable called nullTest, and set it to null. Use a null-check that increases the value by one if it\u0026#x27;s not null, otherwise returns 0, and prints the result.\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// Hint: Use the Elvis operator.\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e nullable: \u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e? = \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e\nprintln(nullable?.inc() ?: \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e)\nprintln(nullTest?.inc() ?:\u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e)\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"strings\"\u003eStrings\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-string\"\u003e\u0026quot;Hello Fish\u0026quot;\u003c/span\u003e \u003cspan class=\"hljs-comment\"\u003e// Hello Fish\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Concatenation\u003c/span\u003e\n\u003cspan class=\"hljs-string\"\u003e\u0026quot;hello\u0026quot;\u003c/span\u003e + \u003cspan class=\"hljs-string\"\u003e\u0026quot;fish\u0026quot;\u003c/span\u003e \u003cspan class=\"hljs-comment\"\u003e// hello fish\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e numberOfFish = \u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e numberOfPlants = \u003cspan class=\"hljs-number\"\u003e12\u003c/span\u003e\n\n\u003cspan class=\"hljs-string\"\u003e\u0026quot;I have \u003cspan class=\"hljs-variable\"\u003e$numberOfFish\u003c/span\u003e fish and \u003cspan class=\"hljs-variable\"\u003e$numberOfPlants\u003c/span\u003e plants\u0026quot;\u003c/span\u003e \u003cspan class=\"hljs-comment\"\u003e// I have 5 fish and 12 plants\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Here two numbers get added first then the result will be printed\u003c/span\u003e\n\u003cspan class=\"hljs-string\"\u003e\u0026quot;I have \u003cspan class=\"hljs-subst\"\u003e${numberOfFish + numberOfPlants}\u003c/span\u003e fish and plants\u0026quot;\u003c/span\u003e \u003cspan class=\"hljs-comment\"\u003e// I have 17 fish and plants\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e fish = \u003cspan class=\"hljs-string\"\u003e\u0026quot;fish\u0026quot;\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e plant = \u003cspan class=\"hljs-string\"\u003e\u0026quot;plant\u0026quot;\u003c/span\u003e\nprintln(fish == plant) \u003cspan class=\"hljs-comment\"\u003e// false\u003c/span\u003e\nprintln(fish != plant) \u003cspan class=\"hljs-comment\"\u003e// true\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e A = \u003cspan class=\"hljs-string\"\u003e\u0026quot;A\u0026quot;\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e B = \u003cspan class=\"hljs-string\"\u003e\u0026quot;Z\u0026quot;\u003c/span\u003e\nprintln(A \u0026lt; B) \u003cspan class=\"hljs-comment\"\u003e// true\u003c/span\u003e\nprintln(A \u0026gt; B) \u003cspan class=\"hljs-comment\"\u003e// false\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"if-else-blocks\"\u003eIf-Else Blocks\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e numberOfFish = \u003cspan class=\"hljs-number\"\u003e50\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e numberOfPlants = \u003cspan class=\"hljs-number\"\u003e23\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eif\u003c/span\u003e (numberOfFish \u0026gt; numberOfPlants) {\n    println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;Good Ratio!\u0026quot;\u003c/span\u003e)\n} \u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e {\n    println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;unhealthy ratio\u0026quot;\u003c/span\u003e)\n}\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"ranges\"\u003eRanges\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e fish = \u003cspan class=\"hljs-number\"\u003e50\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// .. -\u0026gt; inclusively 1 \u0026lt;= fish \u0026lt;= 50\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eif\u003c/span\u003e (fish \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e..\u003cspan class=\"hljs-number\"\u003e50\u003c/span\u003e) {\n    println(fish.toString() + \u003cspan class=\"hljs-string\"\u003e\u0026quot; is in the range 1 \u0026lt;= fish \u0026lt;= 50!\u0026quot;\u003c/span\u003e)\n}\n\u003cspan class=\"hljs-comment\"\u003e// until -\u0026gt; exclusively 1 \u0026lt;= fish \u0026lt; 50\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eif\u003c/span\u003e (fish \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e until \u003cspan class=\"hljs-number\"\u003e50\u003c/span\u003e) {\n    println(fish)\n} \u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e {\n    println(fish.toString() + \u003cspan class=\"hljs-string\"\u003e\u0026quot; is not in the range 1 \u0026lt;= fish \u0026lt; 50!\u0026quot;\u003c/span\u003e)\n}\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"when\"\u003eWhen\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e// \u0026quot;when\u0026quot; is the way of switching in Kotlin\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e numberOfFish = \u003cspan class=\"hljs-number\"\u003e50\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003ewhen\u003c/span\u003e (numberOfFish) { \n    \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e -\u0026gt; println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;Empty tank\u0026quot;\u003c/span\u003e)\n    \u003cspan class=\"hljs-number\"\u003e50\u003c/span\u003e -\u0026gt; println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;Full tank\u0026quot;\u003c/span\u003e)\n    \u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e -\u0026gt; println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;Perfect!\u0026quot;\u003c/span\u003e)\n} \u003cspan class=\"hljs-comment\"\u003e// Output: Full tank\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e numberOfFish = \u003cspan class=\"hljs-number\"\u003e50\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003ewhen\u003c/span\u003e (numberOfFish) {\n    \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e..\u003cspan class=\"hljs-number\"\u003e50\u003c/span\u003e -\u0026gt; println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;Full tank\u0026quot;\u003c/span\u003e)\n} \u003cspan class=\"hljs-comment\"\u003e// Output: Full tank\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Create a string which would contain a * symbol n times.\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e str: String = \u003cspan class=\"hljs-string\"\u003e\u0026quot;*\u0026quot;\u003c/span\u003e.repeat(\u003cspan class=\"hljs-number\"\u003e100\u003c/span\u003e)\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"practice-time\"\u003ePractice Time\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e// Create three String variables for trout, haddock, and snapper.\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// Use a String template to print whether you do or don\u0026#x27;t like to eat these kinds of fish.\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e trout: String = \u003cspan class=\"hljs-string\"\u003e\u0026quot;trout\u0026quot;\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e haddock: String = \u003cspan class=\"hljs-string\"\u003e\u0026quot;haddock\u0026quot;\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e snappe: String = \u003cspan class=\"hljs-string\"\u003e\u0026quot;snappe\u0026quot;\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e currentFish = trout\n\u003cspan class=\"hljs-keyword\"\u003ewhen\u003c/span\u003e (currentFish) {\n    \u003cspan class=\"hljs-string\"\u003e\u0026quot;trout\u0026quot;\u003c/span\u003e -\u0026gt; println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;I love it!\u0026quot;\u003c/span\u003e)\n    \u003cspan class=\"hljs-string\"\u003e\u0026quot;haddock\u0026quot;\u003c/span\u003e -\u0026gt; println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;I like it\u0026quot;\u003c/span\u003e)\n    \u003cspan class=\"hljs-string\"\u003e\u0026quot;snappe\u0026quot;\u003c/span\u003e -\u0026gt; println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;I hate it\u0026quot;\u003c/span\u003e)\n    \u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e -\u0026gt; println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;That\u0026#x27;s enough fish\u0026quot;\u003c/span\u003e)\n}\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e trout1 = \u003cspan class=\"hljs-string\"\u003e\u0026quot;trout\u0026quot;\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e haddock1 = \u003cspan class=\"hljs-string\"\u003e\u0026quot;haddock\u0026quot;\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e snapper1 = \u003cspan class=\"hljs-string\"\u003e\u0026quot;snapper\u0026quot;\u003c/span\u003e\nprintln(\u003cspan class=\"hljs-string\"\u003e\u0026quot;I like to eat \u003cspan class=\"hljs-variable\"\u003e$trout1\u003c/span\u003e and \u003cspan class=\"hljs-variable\"\u003e$snapper1\u003c/span\u003e, but not a big fan of \u003cspan class=\"hljs-variable\"\u003e$haddock1\u003c/span\u003e.\u0026quot;\u003c/span\u003e)\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"practice-time-1\"\u003ePractice Time\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e/*when statements in Kotlin are like case or switch statements in other languages.\nCreate a when statement with three comparisons:\n\nIf the length of the fishName is 0, print an error message.\nIf the length is in the range of 3...12, print \u0026quot;Good fish name\u0026quot;.\nIf it\u0026#x27;s anything else, print \u0026quot;OK fish name\u0026quot;.*/\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e fishName = \u003cspan class=\"hljs-string\"\u003e\u0026quot;Salmon\u0026quot;\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003ewhen\u003c/span\u003e (fishName.length) {\n    \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e -\u0026gt; println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;Fish name cannot be empty!\u0026quot;\u003c/span\u003e)\n    \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e..\u003cspan class=\"hljs-number\"\u003e12\u003c/span\u003e -\u0026gt; println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;Good fish name\u0026quot;\u003c/span\u003e)\n    \u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e -\u0026gt; println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;OK fish name\u0026quot;\u003c/span\u003e)\n}\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"arrays--loops\"\u003eArrays \u0026amp; Loops\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e// If val variable value is a reference, then you cannot assign it a different reference later\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e myList = mutableListOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;tuna\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;salmon\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;shark\u0026quot;\u003c/span\u003e);\nmyList = mutableListOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;Koi\u0026quot;\u003c/span\u003e); \u003cspan class=\"hljs-comment\"\u003e// ERROR// Cannot be re-assigned\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// If you\u0026#x27;re referencing something that\u0026#x27;s not immutable(değişmez), it can still change\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// val only applies to the reference and it doesn\u0026#x27;t make the object it points to immutable\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Here we cannot assign a different list in myList but we can manipulate the elemets of the list such as removing/adding an element\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e myList = mutableListOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;tuna\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;salmon\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;shark\u0026quot;\u003c/span\u003e);\nmyList.remove(\u003cspan class=\"hljs-string\"\u003e\u0026quot;shark\u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// True\u003c/span\u003e\nmyList.add(\u003cspan class=\"hljs-string\"\u003e\u0026quot;fish\u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// True\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"forwhile-loop-examples\"\u003eFor/While Loop Examples\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e myList = mutableListOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;tuna\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;salmon\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;shark\u0026quot;\u003c/span\u003e);\n\u003cspan class=\"hljs-comment\"\u003e// Loop through an array\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (item \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e myList) {\n    print(item + \u003cspan class=\"hljs-string\"\u003e\u0026quot; \u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// tuna salmon shark \u003c/span\u003e\n}\n\u003cspan class=\"hljs-comment\"\u003e// Loop through an array With index\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (index \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e myList.indices) {\n    print(myList[index] + \u003cspan class=\"hljs-string\"\u003e\u0026quot; \u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// tuna salmon shark \u003c/span\u003e\n}\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e ((index, value) \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e myList.withIndex()) {\n    println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;the element at \u003cspan class=\"hljs-variable\"\u003e$index\u003c/span\u003e is \u003cspan class=\"hljs-variable\"\u003e$value\u003c/span\u003e\u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// the element at 0 is tuna...\u003c/span\u003e\n}\n\u003cspan class=\"hljs-comment\"\u003e//    for (i in array.indices) {\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e//        println(array[i])\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e//    }\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// To iterate over a range of numbers, use a range expression\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (i \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e..\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e) {\n\u003cspan class=\"hljs-comment\"\u003e//        print(i.toString() + \u0026quot; \u0026quot;) /// Alternate\u003c/span\u003e\n    print(\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u003cspan class=\"hljs-variable\"\u003e$i\u003c/span\u003e \u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// 1 2 3 4 5 \u003c/span\u003e\n}\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (c \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\u0026#x27;a\u0026#x27;\u003c/span\u003e..\u003cspan class=\"hljs-string\"\u003e\u0026#x27;z\u0026#x27;\u003c/span\u003e) {\n    print(\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u003cspan class=\"hljs-variable\"\u003e$c\u003c/span\u003e \u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// a b c d e f g h i j k l m n o p q r s t u v w x y z \u003c/span\u003e\n}\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (c \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\u0026#x27;z\u0026#x27;\u003c/span\u003e downTo \u003cspan class=\"hljs-string\"\u003e\u0026#x27;a\u0026#x27;\u003c/span\u003e) {\n    print(\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u003cspan class=\"hljs-variable\"\u003e$c\u003c/span\u003e \u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// z y x w v u t s r q p o n m l k j i h g f e d c b a \u003c/span\u003e\n}\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (c \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e10\u003c/span\u003e downTo \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e) {\n    print(\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u003cspan class=\"hljs-variable\"\u003e$c\u003c/span\u003e \u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// 10 9 8 7 6 5 4 3 2 1 0 \u003c/span\u003e\n}\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (c \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e10\u003c/span\u003e downTo \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e step \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e) {\n    print(\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u003cspan class=\"hljs-variable\"\u003e$c\u003c/span\u003e \u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// 10 8 6 4 2 0 \u003c/span\u003e\n}\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (c \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e..\u003cspan class=\"hljs-number\"\u003e10\u003c/span\u003e step \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e) {\n    print(\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u003cspan class=\"hljs-variable\"\u003e$c\u003c/span\u003e \u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// 1 3 5 7 9 \u003c/span\u003e\n}\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"while-loop\"\u003eWhile loop\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e x = \u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003ewhile\u003c/span\u003e (x \u0026gt; \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e) {\n    print(\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u003cspan class=\"hljs-variable\"\u003e$x\u003c/span\u003e \u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// 5 4 3 2 1 \u003c/span\u003e\n    x--\n}\n\u003cspan class=\"hljs-comment\"\u003e// Arrays work pretty much as you\u0026#x27;d expect with some cool additions\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// Good practice is to prefer using \u0026quot;lists\u0026quot; over \u0026quot;arrays\u0026quot; everywhere except for performance critical parts of your code\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// It is pretty similar to Java\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e l1 = listOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;a\u0026quot;\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e l2 = listOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;a\u0026quot;\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e x = (l1 == l2) \u003cspan class=\"hljs-comment\"\u003e// =\u0026gt; true\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e a1 = arrayOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;a\u0026quot;\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e a2 = arrayOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;a\u0026quot;\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e y = (a1 == a2) \u003cspan class=\"hljs-comment\"\u003e// =\u0026gt; false\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"listof-vs-mutablelistof\"\u003elistOf vs mutableListOf\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e/*\nList: READ-ONLY\nMutableList: READ/WRITE\nYou can modify a MutableList: change, remove, add... its elements.\nIn a List you can only read them.\n\n// Prefer MutableList over Array\n// The major difference from usage side is that;\n-\u0026gt; Arrays have a fixed size (like int [] in C++)\n-\u0026gt; MutableList can adjust their size dynamically (like vectors in C++, a.k.a dynamic arrays)\n-\u0026gt; Moreover Array is MUTABLE whereas List is not. (List is read-only, Array is not)\n\n// Difference between ArrayList\u0026lt;String\u0026gt;() and mutableListOf\u0026lt;String\u0026gt;() in Kotlin\n-\u0026gt; The only difference between the two is communicating your intent :)\n-\u0026gt; So, there is no difference, just a convenience method.*/\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Create an array\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e school = arrayOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;fish\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;tuna\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;salmon\u0026quot;\u003c/span\u003e)\n\n\u003cspan class=\"hljs-comment\"\u003e// Create Typed array (e.g. integers)\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e numbers = intArrayOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\n\u003cspan class=\"hljs-comment\"\u003e// Error, Type Mismatch\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e test = intArrayOf(\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;foo\u0026quot;\u003c/span\u003e)\n\n\u003cspan class=\"hljs-comment\"\u003e// But you can mix types in Untyped arrays\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e mixedArray = arrayOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;fish\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026#x27;s\u0026#x27;\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e0.0\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (element \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e mixedArray) {\n    println(element) \u003cspan class=\"hljs-comment\"\u003e// fish 2 s 0.0 \u003c/span\u003e\n    \u003cspan class=\"hljs-comment\"\u003e// print(element.toString() + \u0026quot; \u0026quot;)\u003c/span\u003e\n}\n\n\u003cspan class=\"hljs-comment\"\u003e// This does not prints the all elements, it prints the array address instead\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e mixedArray = arrayOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;fish\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026#x27;s\u0026#x27;\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e0.0\u003c/span\u003e)\nprint(mixedArray) \u003cspan class=\"hljs-comment\"\u003e// [Ljava.lang.Object;@66d3c617\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// You can use joinToString or forEach, forEachIndexed, Arrays.toString( array )\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e mixedArray = arrayOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;fish\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026#x27;s\u0026#x27;\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e0.0\u003c/span\u003e)\nprint(mixedArray.joinToString()) \u003cspan class=\"hljs-comment\"\u003e// fish, 2, s, 0.0\u003c/span\u003e\nmixedArray.forEach { print(\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u003cspan class=\"hljs-variable\"\u003e$it\u003c/span\u003e \u0026quot;\u003c/span\u003e) } \u003cspan class=\"hljs-comment\"\u003e// fish, 2, s, 0.0\u003c/span\u003e\nmixedArray.forEachIndexed { index, any -\u0026gt; println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u003cspan class=\"hljs-variable\"\u003e$any\u003c/span\u003e at \u003cspan class=\"hljs-variable\"\u003e$index\u003c/span\u003e\u0026quot;\u003c/span\u003e) }\n\u003cspan class=\"hljs-comment\"\u003e// fish at 0 ...\u003c/span\u003e\nprintln(Arrays.toString(mixedArray)) \u003cspan class=\"hljs-comment\"\u003e// [fish, 2, s, 0.0]\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"nesting-arrays\"\u003eNesting Arrays\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e// You can nest arrays\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e swarm = listOf(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e12\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// When you put an array within an array, you have an array of arrays\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// !Not a flattened array of the contents of the two\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e bigSwarm = arrayOf(swarm, arrayOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;A\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;B\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;C\u0026quot;\u003c/span\u003e))\nprintln(Arrays.toString(bigSwarm))\nprintln(bigSwarm.asList()) \u003cspan class=\"hljs-comment\"\u003e// Shorter Printing Array Alternative\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// Prints:  [[5, 12], [Ljava.lang.String;@452b3a41]\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// You can nest arrays\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e intList = listOf(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e12\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e stringList = mutableListOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;A\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;B\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;C\u0026quot;\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// OR this -\u0026gt; val stringList = listOf(\u0026quot;A\u0026quot;, \u0026quot;B\u0026quot;, \u0026quot;C\u0026quot;)\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// When you put \u0026quot;LİST or MUTABLELIST\u0026quot; within an array, you have an array of arrays with merged content but \u0026quot;ARRAYS\u0026quot; are passed by ref as shown above example\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e bigList = listOf(intList, stringList)\nprintln(bigList.joinToString())\n\u003cspan class=\"hljs-comment\"\u003e// [5, 12], [A, B, C]\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"create-typed-lists-mutablelists-and-arrays\"\u003eCreate Typed Lists, Mutablelists and Arrays\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e intList = listOf\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\u0026gt;(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e12\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e stringList = listOf\u0026lt;String\u0026gt;(\u003cspan class=\"hljs-string\"\u003e\u0026quot;1\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;2\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;3\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;4\u0026quot;\u003c/span\u003e)\n\n\u003cspan class=\"hljs-comment\"\u003e// Mutablelists\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e intList = mutableListOf\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\u0026gt;(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e12\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e stringList = mutableListOf\u0026lt;String\u0026gt;(\u003cspan class=\"hljs-string\"\u003e\u0026quot;1\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;2\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;3\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;4\u0026quot;\u003c/span\u003e)\n\n\u003cspan class=\"hljs-comment\"\u003e// Array\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e intList = arrayOf\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\u0026gt;(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e12\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e stringList = arrayOf\u0026lt;String\u0026gt;(\u003cspan class=\"hljs-string\"\u003e\u0026quot;1\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;2\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;3\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;4\u0026quot;\u003c/span\u003e)\n\n\u003cspan class=\"hljs-comment\"\u003e// Sized array\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e table = Array\u0026lt;String\u0026gt;(words.size) {\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u0026quot;\u003c/span\u003e}\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e literals = arrayOf\u0026lt;String\u0026gt;(\u003cspan class=\"hljs-string\"\u003e\u0026quot;January\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;February\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;March\u0026quot;\u003c/span\u003e)\n\n\u003cspan class=\"hljs-comment\"\u003e// Create 2D Array\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e grid = Array(rows) { Array(cols) { Any() } }\n\n\u003cspan class=\"hljs-comment\"\u003e//String[] in Java equivalent Array\u0026lt;String\u0026gt; in Kotlin \u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e//eg.\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e array1 : Array\u0026lt;String?\u0026gt; = emptyArray()\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e array2: Array\u0026lt;String?\u0026gt; = arrayOfNulls(\u003cspan class=\"hljs-number\"\u003e4\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e array3: Array\u0026lt;String\u0026gt; = arrayOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;Mashroom\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;Kitkat\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;Oreo\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;Lolipop\u0026quot;\u003c/span\u003e)\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e num = arrayOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e4\u003c/span\u003e)   \u003cspan class=\"hljs-comment\"\u003e//implicit type declaration\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e num = arrayOf\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\u0026gt;(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e//explicit type declaration\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Or you can also create typed lists, arrays, mutable lists\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e intList = listOf\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\u0026gt;(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e12\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e listSample: List\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\u0026gt; = listOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e mutableListSample: MutableList\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\u0026gt; = mutableListOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e stringList = listOf\u0026lt;String\u0026gt;(\u003cspan class=\"hljs-string\"\u003e\u0026quot;1\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;2\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;3\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;4\u0026quot;\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e stringListSample: List\u0026lt;String\u0026gt; = listOf\u0026lt;String\u0026gt;(\u003cspan class=\"hljs-string\"\u003e\u0026quot;1\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;2\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;3\u0026quot;\u003c/span\u003e,\u003cspan class=\"hljs-string\"\u003e\u0026quot;4\u0026quot;\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e initList = List(\u003cspan class=\"hljs-number\"\u003e4\u003c/span\u003e){\u003cspan class=\"hljs-string\"\u003e\u0026quot;s\u0026quot;\u003c/span\u003e} \u003cspan class=\"hljs-comment\"\u003e// {\u0026quot;s\u0026quot;, \u0026quot;s\u0026quot;, \u0026quot;s\u0026quot;, \u0026quot;s\u0026quot;}\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Arrays\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e intArray = arrayOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e intArray2: Array\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\u0026gt; = arrayOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e intArray3 = intArrayOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e charArray = charArrayOf(\u003cspan class=\"hljs-string\"\u003e\u0026#x27;a\u0026#x27;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026#x27;b\u0026#x27;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026#x27;c\u0026#x27;\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e intArray = arrayOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e intArray2: Array\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\u0026gt; = arrayOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e intArray3 = intArrayOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e,\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e charArray = charArrayOf(\u003cspan class=\"hljs-string\"\u003e\u0026#x27;a\u0026#x27;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026#x27;b\u0026#x27;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026#x27;c\u0026#x27;\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e stringArray = arrayOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;genesis\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;melo\u0026quot;\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e stringArray2: Array\u0026lt;String\u0026gt; = arrayOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;genesis\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;melo\u0026quot;\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e stringOrNulls = arrayOfNulls\u0026lt;String\u0026gt;(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// returns Array\u0026lt;String?\u0026gt;\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e stringOrNulls2: Array\u0026lt;String?\u0026gt; = arrayOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e)\u003cspan class=\"hljs-comment\"\u003e// returns Array\u0026lt;String?\u0026gt;\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e emptyStringArray: Array\u0026lt;String\u0026gt; = emptyArray()\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e emptyStringArray2: Array\u0026lt;String\u0026gt; = arrayOf()\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e sizedEmptyArray = Array(\u003cspan class=\"hljs-number\"\u003e4\u003c/span\u003e){\u003cspan class=\"hljs-string\"\u003e\u0026quot;s\u0026quot;\u003c/span\u003e} \u003cspan class=\"hljs-comment\"\u003e// {\u0026quot;s\u0026quot;, \u0026quot;s\u0026quot;, \u0026quot;s\u0026quot;, \u0026quot;s\u0026quot;}\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// In this line, we create an array from a range of numbers.\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e nums3 = IntArray(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e, { i -\u0026gt; i * \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e + \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e})\n\u003cspan class=\"hljs-comment\"\u003e// This line creates an array with IntArray. It takes the number of elements and a factory function as parameters.\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// This is the output. \u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e/*\n[1, 2, 3, 4, 5]\n[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n[3, 5, 7, 9, 11]\n*/\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// You can read this as initialize an array of 5 elements, assign each item to its index times two\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e array = Array(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e) {it * \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e}\n\u003cspan class=\"hljs-comment\"\u003e// OR -\u0026gt; val array = List(5) {it * 2}\u003c/span\u003e\nprintln(array.joinToString()) \u003cspan class=\"hljs-comment\"\u003e// 0, 2, 4, 6, 8\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e list = List(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e){ it.times(\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e) } \u003cspan class=\"hljs-comment\"\u003e// Creates List: [0, 2, 4, 6, 8]\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e array = Array\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\u0026gt;(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e) { e -\u0026gt; \u003cspan class=\"hljs-keyword\"\u003eif\u003c/span\u003e (e % \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e == \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e) \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e \u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e }\nprintln(array.asList())\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e array = List\u0026lt;String\u0026gt;(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e) { e -\u0026gt; \u003cspan class=\"hljs-keyword\"\u003eif\u003c/span\u003e (e % \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e == \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e) \u003cspan class=\"hljs-string\"\u003e\u0026quot;even\u0026quot;\u003c/span\u003e \u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e \u003cspan class=\"hljs-string\"\u003e\u0026quot;\u003cspan class=\"hljs-variable\"\u003e$e\u003c/span\u003e\u0026quot;\u003c/span\u003e }\nprintln(array.joinToString()) \u003cspan class=\"hljs-comment\"\u003e// Prints: even, 1, even, 3, even\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Loop array with indices\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e swarm = listOf(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e12\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e15\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e17\u003c/span\u003e)\n\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (i \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e until swarm.size) {\n    print(\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u003cspan class=\"hljs-variable\"\u003e$i\u003c/span\u003e \u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// 0 1 2 3 \u003c/span\u003e\n}\n\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (i \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e..swarm.size - \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e) {\n    print(\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u003cspan class=\"hljs-variable\"\u003e$i\u003c/span\u003e \u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// 0 1 2 3 \u003c/span\u003e\n}\n\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (i \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e swarm.indices) {\n    print(\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u003cspan class=\"hljs-variable\"\u003e$i\u003c/span\u003e \u0026quot;\u003c/span\u003e) \u003cspan class=\"hljs-comment\"\u003e// 0 1 2 3 \u003c/span\u003e\n}\n\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (indexValuePair \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e swarm.withIndex()) {\n    print(\u003cspan class=\"hljs-string\"\u003e\u0026quot;index: \u003cspan class=\"hljs-subst\"\u003e${indexValuePair.index}\u003c/span\u003e, value: \u003cspan class=\"hljs-subst\"\u003e${indexValuePair.value}\u003c/span\u003e\\n\u0026quot;\u003c/span\u003e)\n} \u003cspan class=\"hljs-comment\"\u003e// Prints:  index: 0, value: 5\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"quiz\"\u003eQuiz\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e// Read the code below, and then select the correct array initialization that will display the corresponding output.\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e array = \u003cspan class=\"hljs-comment\"\u003e// initalize array here\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e sizes = arrayOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;byte\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;kilobyte\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;megabyte\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;gigabyte\u0026quot;\u003c/span\u003e,\n    \u003cspan class=\"hljs-string\"\u003e\u0026quot;terabyte\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;petabyte\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;exabyte\u0026quot;\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e ((i, value) \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e array.withIndex()) {\n   println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;1 \u003cspan class=\"hljs-subst\"\u003e${sizes[i]}\u003c/span\u003e = \u003cspan class=\"hljs-subst\"\u003e${value.toLong()}\u003c/span\u003e bytes\u0026quot;\u003c/span\u003e)\n}\n\n\u003cspan class=\"hljs-comment\"\u003e// Output:\u003c/span\u003e\n\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e byte = \u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e bytes\n\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e kilobyte = \u003cspan class=\"hljs-number\"\u003e1000\u003c/span\u003e bytes\n\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e megabyte = \u003cspan class=\"hljs-number\"\u003e1000000\u003c/span\u003e bytes\n\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e gigabyte = \u003cspan class=\"hljs-number\"\u003e1000000000\u003c/span\u003e bytes\n\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e terabyte = \u003cspan class=\"hljs-number\"\u003e1000000000000\u003c/span\u003e bytes\n\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e petabyte = \u003cspan class=\"hljs-number\"\u003e1000000000000000\u003c/span\u003e bytes\n\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e exabyte = \u003cspan class=\"hljs-number\"\u003e1000000000000000000\u003c/span\u003e bytes\n\n\u003cspan class=\"hljs-comment\"\u003e// Answer / Solution Code:\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e array = Array(\u003cspan class=\"hljs-number\"\u003e7\u003c/span\u003e){ \u003cspan class=\"hljs-number\"\u003e1000.0\u003c/span\u003e.pow(it) }\n\u003cspan class=\"hljs-comment\"\u003e// Notice how we had to use the double value 1000.0 and not just 1000 to be able to use the \u0026quot;pow\u0026quot; function.\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"quiz-1\"\u003eQuiz\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e/* Which of these options are good reasons to explicitly make a list immutable? There may be more than 1 correct answer.\n-\u0026gt; It reduces errors in general.\n-\u0026gt; Prevents accidental changing of objects that were meant to be unchangeable.\n-\u0026gt; In a multi-threaded environment, makes the variable thread safe, because once it has been assigned by the initial thread, no thread can change it.*/\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Answer: Immutable variables are the safest option when you know that a variable will never need to change values.\u003c/span\u003e\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"practice-time-2\"\u003ePractice Time\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003e\u003cspan class=\"hljs-comment\"\u003e/*Looping over arrays and lists is a fundamental technique that has a lot of flexibility in Kotlin. Let\u0026#x27;s practice.\n\n\tBasic example\nCreate an integer array of numbers called numbers, from 11 to 15.\nCreate an empty mutable list for Strings.\nWrite a for loop that loops over the array and adds the string representation of each number to the list.\n\n\tChallenge example\nHow can you use a for loop to create (a list of) the numbers between 0 and 100 that are divisible by 7?*/\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Solution Code\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e list3 : MutableList\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\u0026gt; = mutableListOf()\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (i \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e..\u003cspan class=\"hljs-number\"\u003e100\u003c/span\u003e step \u003cspan class=\"hljs-number\"\u003e7\u003c/span\u003e) list3.add(i)\nprint(list3)\n[\u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e7\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e14\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e21\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e28\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e35\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e42\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e49\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e56\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e63\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e70\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e77\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e84\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e91\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e98\u003c/span\u003e]\n\n\u003cspan class=\"hljs-comment\"\u003e// OR\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (i \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e..\u003cspan class=\"hljs-number\"\u003e100\u003c/span\u003e step \u003cspan class=\"hljs-number\"\u003e7\u003c/span\u003e) println(i.toString() + \u003cspan class=\"hljs-string\"\u003e\u0026quot; - \u0026quot;\u003c/span\u003e)\n\n\u003cspan class=\"hljs-comment\"\u003e// My Solution\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e numbers = Array\u0026lt;\u003cspan class=\"hljs-built_in\"\u003eInt\u003c/span\u003e\u0026gt;(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e) { it + \u003cspan class=\"hljs-number\"\u003e11\u003c/span\u003e }\nprintln(numbers.asList())\n\u003cspan class=\"hljs-keyword\"\u003evar\u003c/span\u003e mutableList = mutableListOf\u0026lt;String\u0026gt;()\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (number \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e numbers) {\n    mutableList.add(number.toString())\n}\nprintln(mutableList)\n\u003cspan class=\"hljs-comment\"\u003e// Challange Example\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003efor\u003c/span\u003e (number \u003cspan class=\"hljs-keyword\"\u003ein\u003c/span\u003e \u003cspan class=\"hljs-number\"\u003e7\u003c/span\u003e..\u003cspan class=\"hljs-number\"\u003e100\u003c/span\u003e step \u003cspan class=\"hljs-number\"\u003e7\u003c/span\u003e) {\n    println(\u003cspan class=\"hljs-string\"\u003e\u0026quot;\u003cspan class=\"hljs-variable\"\u003e$number\u003c/span\u003e \u0026quot;\u003c/span\u003e)\n}\n\u003c/div\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"kotlin-lists-from-jetbrains-official-video\"\u003eKotlin Lists (from Jetbrains Official Video)\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-kotlin\"\u003e\u003cdiv\u003elistOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// [1, 2, 3]\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e l2 = List(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e){ \u003cspan class=\"hljs-string\"\u003e\u0026quot;No. \u003cspan class=\"hljs-variable\"\u003e$it\u003c/span\u003e\u0026quot;\u003c/span\u003e }\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e l3 = List(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e){ idx -\u0026gt; \u003cspan class=\"hljs-string\"\u003e\u0026quot;No. \u003cspan class=\"hljs-variable\"\u003e$idx\u003c/span\u003e\u0026quot;\u003c/span\u003e }\n\u003cspan class=\"hljs-comment\"\u003e// [No. 0, No. 1, No. 2, No. 3, No. 4]\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e l4 = \u003cspan class=\"hljs-string\"\u003e\u0026quot;word-salad\u0026quot;\u003c/span\u003e.toList()\n\u003cspan class=\"hljs-comment\"\u003e// [w, o, r, d, -, s, a, l, a, d]\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e m1 = mapOf(\n\t\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e to \u003cspan class=\"hljs-string\"\u003e\u0026quot;Gold\u0026quot;\u003c/span\u003e,\n\t\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e to \u003cspan class=\"hljs-string\"\u003e\u0026quot;Silver\u0026quot;\u003c/span\u003e,\n\t\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e to \u003cspan class=\"hljs-string\"\u003e\u0026quot;Bronze\u0026quot;\u003c/span\u003e\n).toList()\n\u003cspan class=\"hljs-comment\"\u003e// [(1, Gold), (2, Silver), (3, Bronze)]\u003c/span\u003e\n\ngenerateSequence {\n\tRandom.nextInt(\u003cspan class=\"hljs-number\"\u003e100\u003c/span\u003e).takeIf { it \u0026gt; \u003cspan class=\"hljs-number\"\u003e30\u003c/span\u003e }\n}.toList()\n\u003cspan class=\"hljs-comment\"\u003e// [45, 75, 74, 31, 54, 36, 63]\u003c/span\u003e\n\n(\u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e..\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e).toList()\n\u003cspan class=\"hljs-comment\"\u003e// [0, 1, 2, 3, 4, 5]\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e mutList = mutableListOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e otherList = mutList.toList()\n\nmutList[\u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e] = \u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e\n\nmutList\n\u003cspan class=\"hljs-comment\"\u003e// [5, 2, 3]\u003c/span\u003e\n\notherList\n\u003cspan class=\"hljs-comment\"\u003e// [1, 2, 3]\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e myList = listOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;A\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;B\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;C\u0026quot;\u003c/span\u003e)\nmyList.\u003cspan class=\"hljs-keyword\"\u003eget\u003c/span\u003e(\u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e)\nmyList[\u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e]\n\nmyList.getOrNull(\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e test = myList.getOrElse(\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e) {\n\tprintln(\u003cspan class=\"hljs-string\"\u003e\u0026quot;There is no index \u003cspan class=\"hljs-variable\"\u003e$it\u003c/span\u003e\u0026quot;\u003c/span\u003e)\n\t\u003cspan class=\"hljs-string\"\u003e\u0026quot;:(\u0026quot;\u003c/span\u003e\n}\n\u003cspan class=\"hljs-comment\"\u003e// There is no index 3\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// :(\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e listOfNullableItems = listOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-literal\"\u003enull\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e4\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// Elvis operator checks if item at index 2 null, if it is null it returns 0,\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// returns the element at index 2 otherwise\u003c/span\u003e\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e item = listOfNullableItems[\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e] ?: \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e myList1 = listOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;a\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;b\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;c\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;d\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;e\u0026quot;\u003c/span\u003e)\nmyList1.slice(listOf(\u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e4\u003c/span\u003e))\n\u003cspan class=\"hljs-comment\"\u003e// [a, c, e]\u003c/span\u003e\n\nmyList1.slice(\u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e..\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// [a, b, c, d]\u003c/span\u003e\n\nmyList1.slice(\u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e..myList1.lastIndex step \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// [a, c, e]\u003c/span\u003e\n\nmyList1.slice(\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e downTo \u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// [c, b, a]\u003c/span\u003e\n\nmutableListOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// [1, 2, 3]\u003c/span\u003e\n\n(\u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e..\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e).toMutableList()\n\u003cspan class=\"hljs-comment\"\u003e// [0, 1, 2, 3, 4, 5]\u003c/span\u003e\n\nlistOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e).toMutableList()\n\u003cspan class=\"hljs-comment\"\u003e// [1, 2, 3]\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e m = mutableListOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\nm.add(\u003cspan class=\"hljs-number\"\u003e4\u003c/span\u003e)\nm += \u003cspan class=\"hljs-number\"\u003e4\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// [1, 2, 3, 4, 4]\u003c/span\u003e\n\nm.add(\u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e10\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// [1, 2, 10, 3, 4, 4]\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Append a list to another list\u003c/span\u003e\nm += listOf(\u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e6\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e7\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// [1, 2, 10, 3, 4, 4, 5, 6, 7]\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e mList = mutableListOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e2\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e4\u003c/span\u003e)\nmList -= \u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e\nmList.remove(\u003cspan class=\"hljs-number\"\u003e3\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// [1, 2, 3, 4]\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e// Removes all instances of given elements from the mList\u003c/span\u003e\nmList -= listOf(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e, \u003cspan class=\"hljs-number\"\u003e4\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// [2, 3]\u003c/span\u003e\n\nmList.removeAt(\u003cspan class=\"hljs-number\"\u003e1\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// [2]\u003c/span\u003e\n\nmList[\u003cspan class=\"hljs-number\"\u003e0\u003c/span\u003e] = \u003cspan class=\"hljs-number\"\u003e5\u003c/span\u003e\n\u003cspan class=\"hljs-comment\"\u003e// [5]\u003c/span\u003e\n\n\u003cspan class=\"hljs-keyword\"\u003eval\u003c/span\u003e fruits = mutableListOf(\u003cspan class=\"hljs-string\"\u003e\u0026quot;Apple\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;Apricot\u0026quot;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026quot;Cherry\u0026quot;\u003c/span\u003e)\nfruits.fill(\u003cspan class=\"hljs-string\"\u003e\u0026quot;sugar\u0026quot;\u003c/span\u003e)\n\u003cspan class=\"hljs-comment\"\u003e// [sugar, sugar, sugar]\u003c/span\u003e\nfruits.clear()\n\u003cspan class=\"hljs-comment\"\u003e// []\u003c/span\u003e\n\n\u003cspan class=\"hljs-comment\"\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuhatanriverdi%2Fkotlin-beginners-notes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuhatanriverdi%2Fkotlin-beginners-notes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuhatanriverdi%2Fkotlin-beginners-notes/lists"}