1
(window.webpackJsonp=window.webpackJsonp||[]).push([[1647],{2055:function(t,a,s){"use strict";s.r(a);var e=s(31),n=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"primitive-data-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#primitive-data-types"}},[t._v("#")]),t._v(" Primitive Data Types")]),t._v(" "),s("h2",{attrs:{id:"the-char-primitive"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#the-char-primitive"}},[t._v("#")]),t._v(" The char primitive")]),t._v(" "),s("p",[t._v("A "),s("code",[t._v("char")]),t._v(" can store a single 16-bit Unicode character. A character literal is enclosed in single quotes")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" myChar "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'u'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" myChar2 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'5'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" myChar3 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("65")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// myChar3 == 'A'")]),t._v("\n\n")])])]),s("p",[t._v("It has a minimum value of "),s("code",[t._v("\\u0000")]),t._v(" (0 in the decimal representation, also called the "),s("strong",[t._v("null character")]),t._v(") and a maximum value of "),s("code",[t._v("\\uffff")]),t._v(" (65,535).")]),t._v(" "),s("p",[t._v("The default value of a "),s("code",[t._v("char")]),t._v(" is "),s("code",[t._v("\\u0000")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" defaultChar"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// defaultChar == \\u0000")]),t._v("\n\n")])])]),s("p",[t._v("In order to define a char of "),s("code",[t._v("'")]),t._v(" value an escape sequence (character preceded by a backslash) has to be used:")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" singleQuote "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'\\''")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n")])])]),s("p",[t._v("There are also other escape sequences:")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" tab "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'\\t'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" backspace "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'\\b'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" newline "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'\\n'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" carriageReturn "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'\\r'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" formfeed "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'\\f'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" singleQuote "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'\\''")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" doubleQuote "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'\\\"'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// escaping redundant here; '\"' would be the same; however still allowed")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" backslash "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'\\\\'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" unicodeChar "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'\\uXXXX'")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// XXXX represents the Unicode-value of the character you want to display")]),t._v("\n\n")])])]),s("p",[t._v("You can declare a "),s("code",[t._v("char")]),t._v(" of any Unicode character.")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" heart "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'\\u2764'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Character")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toString")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("heart"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// Prints a line containing "❤".')]),t._v("\n\n")])])]),s("p",[t._v("It is also possible to add to a "),s("code",[t._v("char")]),t._v(". e.g. to iterate through every lower-case letter, you could do to the following:")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" i "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" i "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("26")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" i"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("++")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),t._v(" letter "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("char")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'a'")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("letter"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n")])])]),s("h2",{attrs:{id:"primitive-types-cheatsheet"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#primitive-types-cheatsheet"}},[t._v("#")]),t._v(" Primitive Types Cheatsheet")]),t._v(" "),s("p",[t._v("Table showing size and values range of all primitive types:")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("data type")]),t._v(" "),s("th",[t._v("numeric representation")]),t._v(" "),s("th",[t._v("range of values")]),t._v(" "),s("th",[t._v("default value")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("boolean")]),t._v(" "),s("td",[t._v("n/a")]),t._v(" "),s("td",[t._v("false and true")]),t._v(" "),s("td",[t._v("false")])]),t._v(" "),s("tr",[s("td",[t._v("byte")]),t._v(" "),s("td",[t._v("8-bit signed")]),t._v(" "),s("td",[t._v("-2"),s("sup",[t._v("7")]),t._v(" to 2"),s("sup",[t._v("7")]),t._v(" - 1")]),t._v(" "),s("td",[t._v("0")])]),t._v(" "),s("tr",[s("td"),t._v(" "),s("td"),t._v(" "),s("td",[t._v("-128 to +127")]),t._v(" "),s("td")]),t._v(" "),s("tr",[s("td",[t._v("short")]),t._v(" "),s("td",[t._v("16-bit signed")]),t._v(" "),s("td",[t._v("-2"),s("sup",[t._v("15")]),t._v(" to 2"),s("sup",[t._v("15")]),t._v(" - 1")]),t._v(" "),s("td",[t._v("0")])]),t._v(" "),s("tr",[s("td"),t._v(" "),s("td"),t._v(" "),s("td",[t._v("-32,768 to +32,767")]),t._v(" "),s("td")]),t._v(" "),s("tr",[s("td",[t._v("int")]),t._v(" "),s("td",[t._v("32-bit signed")]),t._v(" "),s("td",[t._v("-2"),s("sup",[t._v("31")]),t._v(" to 2"),s("sup",[t._v("31")]),t._v(" - 1")]),t._v(" "),s("td",[t._v("0")])]),t._v(" "),s("tr",[s("td"),t._v(" "),s("td"),t._v(" "),s("td",[t._v("-2,147,483,648 to +2,147,483,647")]),t._v(" "),s("td")]),t._v(" "),s("tr",[s("td",[t._v("long")]),t._v(" "),s("td",[t._v("64-bit signed")]),t._v(" "),s("td",[t._v("-2"),s("sup",[t._v("63")]),t._v(" to 2"),s("sup",[t._v("63")]),t._v(" - 1")]),t._v(" "),s("td",[t._v("0L")])]),t._v(" "),s("tr",[s("td"),t._v(" "),s("td"),t._v(" "),s("td",[t._v("-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807")]),t._v(" "),s("td")]),t._v(" "),s("tr",[s("td",[t._v("float")]),t._v(" "),s("td",[t._v("32-bit floating point")]),t._v(" "),s("td",[t._v("1.401298464e-45 to 3.402823466e+38 (positive or negative)")]),t._v(" "),s("td",[t._v("0.0F")])]),t._v(" "),s("tr",[s("td",[t._v("double")]),t._v(" "),s("td",[t._v("64-bit floating point")]),t._v(" "),s("td",[t._v("4.94065645841246544e-324d to 1.79769313486231570e+308d (positive or negative)")]),t._v(" "),s("td",[t._v("0.0D")])]),t._v(" "),s("tr",[s("td",[t._v("char")]),t._v(" "),s("td",[t._v("16-bit unsigned")]),t._v(" "),s("td",[t._v("0 to 2"),s("sup",[t._v("16")]),t._v(" - 1")]),t._v(" "),s("td",[t._v("0")])]),t._v(" "),s("tr",[s("td"),t._v(" "),s("td"),t._v(" "),s("td",[t._v("0 to 65,535")]),t._v(" "),s("td")])])]),t._v(" "),s("p",[t._v("Notes:")]),t._v(" "),s("ol",[s("li",[t._v("The Java Language Specification mandates that signed integral types ("),s("code",[t._v("byte")]),t._v(" through "),s("code",[t._v("long")]),t._v(") use binary twos-complement representation, and the floating point types use standard IEE 754 binary floating point representations.")]),t._v(" "),s("li",[t._v("Java 8 and later provide methods to perform unsigned arithmetic operations on "),s("code",[t._v("int")]),t._v(" and "),s("code",[t._v("long")]),t._v(". While these methods allow a program to "),s("strong",[t._v("treat")]),t._v(" values of the respective types as unsigned, the types remain signed types.")]),t._v(" "),s("li",[t._v("The smallest floating point shown above are "),s("strong",[t._v("subnormal")]),t._v("; i.e. they have less precision than a "),s("strong",[t._v("normal")]),t._v(" value. The smallest normal numbers are 1.175494351e−38 and 2.2250738585072014e−308")]),t._v(" "),s("li",[t._v("A "),s("code",[t._v("char")]),t._v(" conventionally represents a Unicode / UTF-16 "),s("strong",[t._v("code unit")]),t._v(".")]),t._v(" "),s("li",[t._v("Although a "),s("code",[t._v("boolean")]),t._v(" contains just one bit of information, its size in memory varies depending on the Java Virtual Machine implementation (see "),s("a",{attrs:{href:"http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.3.4",target:"_blank",rel:"noopener noreferrer"}},[t._v("boolean type"),s("OutboundLink")],1),t._v(").")])]),t._v(" "),s("h2",{attrs:{id:"the-float-primitive"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#the-float-primitive"}},[t._v("#")]),t._v(" The float primitive")]),t._v(" "),s("p",[t._v("A "),s("code",[t._v("float")]),t._v(" is a single-precision 32-bit IEEE 754 floating point number. By default, decimals are interpreted as doubles. To create a "),s("code",[t._v("float")]),t._v(", simply append an "),s("code",[t._v("f")]),t._v(" to the decimal literal.")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" doubleExample "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.5")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// without 'f' after digits = double")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" floatExample "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.5f")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// with 'f' after digits = float")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" myFloat "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("92.7f")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// this is a float...")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" positiveFloat "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("89.3f")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// it can be positive,")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" negativeFloat "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("89.3f")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// or negative")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" integerFloat "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("43.0f")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// it can be a whole number (not an int)")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" underZeroFloat "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.0549f")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// it can be a fractional value less than 0")]),t._v("\n\n")])])]),s("p",[t._v("Floats handle the five common arithmetical operations: addition, subtraction, multiplication, division, and modulus.")]),t._v(" "),s("p",[s("strong",[t._v("Note: The following may vary slightly as a result of floating point errors. Some results have been rounded for clarity and readability purposes (i.e. the printed result of the addition example was actually 34.600002).")])]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// addition")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" result "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("37.2f")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2.6f")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// result: 34.6")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// subtraction")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" result "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("45.1f")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("10.3f")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// result: 34.8")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// multiplication")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" result "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("26.3f")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1.7f")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// result: 44.71")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// division")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" result "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("37.1f")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("4.8f")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// result: 7.729166")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// modulus")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" result "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("37.1f")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("%")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("4.8f")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// result: 3.4999971")]),t._v("\n\n")])])]),s("p",[t._v("Because of the way floating point numbers are stored (i.e. in binary form), many numbers don't have an exact representation.")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" notExact "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3.1415926f")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("notExact"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 3.1415925")]),t._v("\n\n")])])]),s("p",[t._v("While using "),s("code",[t._v("float")]),t._v(" is fine for most applications, neither "),s("code",[t._v("float")]),t._v(" nor "),s("code",[t._v("double")]),t._v(" should be used to store exact representations of decimal numbers (like monetary amounts), or numbers where higher precision is required. Instead, the "),s("code",[t._v("BigDecimal")]),t._v(" class should be used.")]),t._v(" "),s("p",[t._v("The default value of a "),s("code",[t._v("float")]),t._v(" is "),s("strong",[t._v("0.0f")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" defaultFloat"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// defaultFloat == 0.0f")]),t._v("\n\n")])])]),s("p",[t._v("A "),s("code",[t._v("float")]),t._v(" is precise to roughly an error of 1 in 10 million.")]),t._v(" "),s("p",[s("strong",[t._v("Note:")]),t._v(" "),s("code",[t._v("Float.POSITIVE_INFINITY")]),t._v(", "),s("code",[t._v("Float.NEGATIVE_INFINITY")]),t._v(", "),s("code",[t._v("Float.NaN")]),t._v(" are "),s("code",[t._v("float")]),t._v(" values. "),s("code",[t._v("NaN")]),t._v(" stands for results of operations that cannot be determined, such as dividing 2 infinite values. Furthermore "),s("code",[t._v("0f")]),t._v(" and "),s("code",[t._v("-0f")]),t._v(" are different, but "),s("code",[t._v("==")]),t._v(" yields true:")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" f1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0f")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("float")]),t._v(" f2 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0f")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("f1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" f2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1f")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v(" f1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Infinity")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1f")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v(" f2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// -Infinity")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Float")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("POSITIVE_INFINITY "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Float")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("POSITIVE_INFINITY"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// NaN")]),t._v("\n\n")])])]),s("h2",{attrs:{id:"the-int-primitive"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#the-int-primitive"}},[t._v("#")]),t._v(" The int primitive")]),t._v(" "),s("p",[t._v("A primitive data type such as "),s("code",[t._v("int")]),t._v(" holds values directly into the variable that is using it, meanwhile a variable that was declared using "),s("code",[t._v("Integer")]),t._v(" holds a reference to the value.")]),t._v(" "),s("p",[t._v("According to "),s("a",{attrs:{href:"https://docs.oracle.com/javase/7/docs/api/",target:"_blank",rel:"noopener noreferrer"}},[t._v("java API"),s("OutboundLink")],1),t._v(': "The Integer class wraps a value of the primitive type int in an object. An object of type Integer contains a single field whose type is int."')]),t._v(" "),s("p",[t._v("By default, "),s("code",[t._v("int")]),t._v(" is a 32-bit signed integer. It can store a minimum value of -2"),s("sup",[t._v("31")]),t._v(", and a maximum value of 2"),s("sup",[t._v("31")]),t._v(" - 1.")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" example "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("42")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" myInt "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("284")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" anotherInt "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("73")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" addedInts "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" myInt "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" anotherInt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 284 + 73 = 357")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" subtractedInts "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" myInt "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" anotherInt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 284 - 73 = 211")]),t._v("\n\n")])])]),s("p",[t._v("If you need to store a number outside of this range, "),s("code",[t._v("long")]),t._v(" should be used instead. Exceeding the value range of "),s("code",[t._v("int")]),t._v(" leads to an integer overflow, causing the value exceeding the range to be added to the opposite site of the range (positive becomes negative and vise versa). The value is "),s("code",[t._v("((value - MIN_VALUE) % RANGE) + MIN_VALUE")]),t._v(", or "),s("code",[t._v("((value + 2147483648) % 4294967296) - 2147483648")])]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" demo "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2147483647")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//maximum positive integer")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("demo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//prints 2147483647")]),t._v("\ndemo "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" demo "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//leads to an integer overflow")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("demo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// prints -2147483648")]),t._v("\n\n")])])]),s("p",[t._v("The maximum and minimum values of "),s("code",[t._v("int")]),t._v(" can be found at:")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" high "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Integer")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("MAX_VALUE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// high == 2147483647")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" low "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Integer")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("MIN_VALUE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// low == -2147483648")]),t._v("\n\n")])])]),s("p",[t._v("The default value of an "),s("code",[t._v("int")]),t._v(" is "),s("strong",[t._v("0")])]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" defaultInt"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// defaultInt == 0")]),t._v("\n\n")])])]),s("h2",{attrs:{id:"memory-consumption-of-primitives-vs-boxed-primitives"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#memory-consumption-of-primitives-vs-boxed-primitives"}},[t._v("#")]),t._v(" Memory consumption of primitives vs. boxed primitives")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Primitive")]),t._v(" "),s("th",[t._v("Boxed Type")]),t._v(" "),s("th",[t._v("Memory Size of primitive / boxed")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("boolean")]),t._v(" "),s("td",[t._v("Boolean")]),t._v(" "),s("td",[t._v("1 byte / 16 bytes")])]),t._v(" "),s("tr",[s("td",[t._v("byte")]),t._v(" "),s("td",[t._v("Byte")]),t._v(" "),s("td",[t._v("1 byte / 16 bytes")])]),t._v(" "),s("tr",[s("td",[t._v("short")]),t._v(" "),s("td",[t._v("Short")]),t._v(" "),s("td",[t._v("2 bytes / 16 bytes")])]),t._v(" "),s("tr",[s("td",[t._v("char")]),t._v(" "),s("td",[t._v("Char")]),t._v(" "),s("td",[t._v("2 bytes / 16 bytes")])]),t._v(" "),s("tr",[s("td",[t._v("int")]),t._v(" "),s("td",[t._v("Integer")]),t._v(" "),s("td",[t._v("4 bytes / 16 bytes")])]),t._v(" "),s("tr",[s("td",[t._v("long")]),t._v(" "),s("td",[t._v("Long")]),t._v(" "),s("td",[t._v("8 bytes / 16 bytes")])]),t._v(" "),s("tr",[s("td",[t._v("float")]),t._v(" "),s("td",[t._v("Float")]),t._v(" "),s("td",[t._v("4 bytes / 16 bytes")])]),t._v(" "),s("tr",[s("td",[t._v("double")]),t._v(" "),s("td",[t._v("Double")]),t._v(" "),s("td",[t._v("8 bytes / 16 bytes")])])])]),t._v(" "),s("p",[t._v("Boxed objects always require 8 bytes for type and memory management, and because the size of objects is always a multiple of 8, boxed types "),s("strong",[t._v("all require 16 bytes total")]),t._v(". In "),s("strong",[t._v("addition")]),t._v(", each usage of a boxed object entails storing a reference which accounts for another 4 or 8 bytes, depending on the JVM and JVM options.")]),t._v(" "),s("p",[t._v("In data-intensive operations, memory consumption can have a major impact on performance. Memory consumption grows even more when using arrays: a "),s("code",[t._v("float[5]")]),t._v(" array will require only 32 bytes; whereas a "),s("code",[t._v("Float[5]")]),t._v(" storing 5 distinct non-null values will require 112 bytes total (on 64 bit without compressed pointers, this increases to 152 bytes).")]),t._v(" "),s("h3",{attrs:{id:"boxed-value-caches"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#boxed-value-caches"}},[t._v("#")]),t._v(" Boxed value caches")]),t._v(" "),s("p",[t._v("The space overheads of the boxed types can be mitigated to a degree by the boxed value caches. Some of the boxed types implement a cache of instances. For example, by default, the "),s("code",[t._v("Integer")]),t._v(" class will cache instances to represent numbers in the range "),s("code",[t._v("-128")]),t._v(" to "),s("code",[t._v("+127")]),t._v(". This does not, however, reduce the additional cost arising from the additional memory indirection.")]),t._v(" "),s("p",[t._v("If you create an instance of a boxed type either by autoboxing or by calling the static "),s("code",[t._v("valueOf(primitive)")]),t._v(' method, the runtime system will attempt to use a cached value. If your application uses a lot of values in the range that is cached, then this can substantially reduce the memory penalty of using boxed types. Certainly, if you are creating boxed value instances "by hand", it is better to use '),s("code",[t._v("valueOf")]),t._v(" rather than "),s("code",[t._v("new")]),t._v(". (The "),s("code",[t._v("new")]),t._v(" operation always creates a new instance.) If, however, the majority of your values are "),s("strong",[t._v("not")]),t._v(" in the cached range, it can be faster to call "),s("code",[t._v("new")]),t._v(" and save the cache lookup.")]),t._v(" "),s("h2",{attrs:{id:"converting-primitives"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#converting-primitives"}},[t._v("#")]),t._v(" Converting Primitives")]),t._v(" "),s("p",[t._v("In Java, we can convert between integer values and floating-point values. Also, since every character corresponds to a number in the Unicode encoding, "),s("code",[t._v("char")]),t._v(" types can be converted to and from the integer and floating-point types. "),s("code",[t._v("boolean")]),t._v(" is the only primitive datatype that cannot be converted to or from any other primitive datatype.")]),t._v(" "),s("p",[t._v("There are two types of conversions: "),s("strong",[t._v("widening conversion")]),t._v(" and "),s("strong",[t._v("narrowing conversion")]),t._v(".")]),t._v(" "),s("p",[t._v("A "),s("strong",[t._v("widening conversion")]),t._v(" is when a value of one datatype is converted to a value of another datatype that occupies more bits than the former. There is no issue of data loss in this case.")]),t._v(" "),s("p",[t._v("Correspondingly, A "),s("strong",[t._v("narrowing conversion")]),t._v(" is when a value of one datatype is converted to a value of another datatype that occupies fewer bits than the former. Data loss can occur in this case.")]),t._v(" "),s("p",[t._v("Java performs "),s("strong",[t._v("widening conversions")]),t._v(" automatically. But if you want to perform a "),s("strong",[t._v("narrowing conversion")]),t._v(" (if you are sure that no data loss will occur), then you can force Java to perform the conversion using a language construct known as a "),s("code",[t._v("cast")]),t._v(".")]),t._v(" "),s("p",[s("strong",[t._v("Widening Conversion:")])]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" a "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" \n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" d "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// valid conversion to double, no cast needed (widening)")]),t._v("\n\n")])])]),s("p",[s("strong",[t._v("Narrowing Conversion:")])]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" d "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("18.96")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" b "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" d"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// invalid conversion to int, will throw a compile-time error")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),t._v(" b "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("int")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" d"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// valid conversion to int, but result is truncated (gets rounded down)")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// This is type-casting")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Now, b = 18")]),t._v("\n\n")])])]),s("h2",{attrs:{id:"the-double-primitive"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#the-double-primitive"}},[t._v("#")]),t._v(" The double primitive")]),t._v(" "),s("p",[t._v("A "),s("code",[t._v("double")]),t._v(" is a double-precision 64-bit IEEE 754 floating point number.")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" example "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("7162.37")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" myDouble "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("974.21")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" anotherDouble "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("658.7")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" addedDoubles "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" myDouble "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" anotherDouble"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 315.51")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" subtractedDoubles "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" myDouble "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" anotherDouble"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 1632.91")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" scientificNotationDouble "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1.2e-3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 0.0012")]),t._v("\n\n")])])]),s("p",[t._v("Because of the way floating point numbers are stored, many numbers don't have an exact representation.")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" notExact "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1.32")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.42")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// result should be 0.9")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("notExact"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 0.9000000000000001")]),t._v("\n\n")])])]),s("p",[t._v("While using "),s("code",[t._v("double")]),t._v(" is fine for most applications, neither "),s("code",[t._v("float")]),t._v(" nor "),s("code",[t._v("double")]),t._v(" should be used to store precise numbers such as currency. Instead, the "),s("code",[t._v("BigDecimal")]),t._v(" class should be used")]),t._v(" "),s("p",[t._v("The default value of a "),s("code",[t._v("double")]),t._v(" is "),s("strong",[t._v("0.0d")])]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" defaultDouble"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// defaultDouble == 0.0")]),t._v("\n\n")])])]),s("p",[s("strong",[t._v("Note:")]),t._v(" "),s("code",[t._v("Double.POSITIVE_INFINITY")]),t._v(", "),s("code",[t._v("Double.NEGATIVE_INFINITY")]),t._v(", "),s("code",[t._v("Double.NaN")]),t._v(" are "),s("code",[t._v("double")]),t._v(" values. "),s("code",[t._v("NaN")]),t._v(" stands for results of operations that cannot be determined, such as dividing 2 infinite values. Furthermore "),s("code",[t._v("0d")]),t._v(" and "),s("code",[t._v("-0d")]),t._v(" are different, but "),s("code",[t._v("==")]),t._v(" yields true:")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" d1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0d")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("double")]),t._v(" d2 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0d")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("d1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" d2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1d")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v(" d1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Infinity")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1d")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v(" d2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// -Infinity")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Double")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("POSITIVE_INFINITY "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("/")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Double")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("POSITIVE_INFINITY"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// NaN")]),t._v("\n\n")])])]),s("h2",{attrs:{id:"the-long-primitive"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#the-long-primitive"}},[t._v("#")]),t._v(" The long primitive")]),t._v(" "),s("p",[t._v("By default, "),s("code",[t._v("long")]),t._v(" is a 64-bit signed integer (in Java 8, it can be either signed or unsigned). Signed, it can store a minimum value of -2"),s("sup",[t._v("63")]),t._v(", and a maximum value of 2"),s("sup",[t._v("63")]),t._v(" - 1, and unsigned it can store a minimum value of 0 and a maximum value of 2"),s("sup",[t._v("64")]),t._v(" - 1")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("long")]),t._v(" example "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("42")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("long")]),t._v(" myLong "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("284")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("long")]),t._v(" anotherLong "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("73")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('//an "L" must be appended to the end of the number, because by default,')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('//numbers are assumed to be the int type. Appending an "L" makes it a long')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//as 549755813888 (2 ^ 39) is larger than the maximum value of an int (2^31 - 1),")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('//"L" must be appended ')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("long")]),t._v(" bigNumber "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("549755813888L")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("long")]),t._v(" addedLongs "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" myLong "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" anotherLong"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 284 + 73 = 357")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("long")]),t._v(" subtractedLongs "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" myLong "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" anotherLong"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 284 - 73 = 211")]),t._v("\n\n")])])]),s("p",[t._v("The maximum and minimum values of "),s("code",[t._v("long")]),t._v(" can be found at:")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("long")]),t._v(" high "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Long")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("MAX_VALUE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// high == 9223372036854775807L")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("long")]),t._v(" low "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Long")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("MIN_VALUE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// low == -9223372036854775808L")]),t._v("\n\n")])])]),s("p",[t._v("The default value of a "),s("code",[t._v("long")]),t._v(" is "),s("strong",[t._v("0L")])]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("long")]),t._v(" defaultLong"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// defaultLong == 0L")]),t._v("\n\n")])])]),s("p",[t._v('Note: letter "L" appended at the end of '),s("code",[t._v("long")]),t._v(" literal is case insensitive, however it is good practice to use capital as it is easier to distinct from digit one:")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2L")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2l")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\n\n")])])]),s("p",[t._v("Warning: Java caches Integer objects instances from the range -128 to 127. The reasoning is explained here: "),s("a",{attrs:{href:"https://blogs.oracle.com/darcy/entry/boxing_and_caches_integer_valueof",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://blogs.oracle.com/darcy/entry/boxing_and_caches_integer_valueof"),s("OutboundLink")],1)]),t._v(" "),s("p",[t._v("The following results can be found:")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Long")]),t._v(" val1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("127L")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Long")]),t._v(" val2 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("127L")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("val1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" val2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Long")]),t._v(" val3 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("128L")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Long")]),t._v(" val4 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("128L")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("val3 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" val4"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// false")]),t._v("\n\n")])])]),s("p",[t._v("To properly compare 2 Object Long values, use the following code(From Java 1.7 onward):")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Long")]),t._v(" val3 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("128L")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Long")]),t._v(" val4 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("128L")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Objects")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("equal")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("val3"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" val4"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// true")]),t._v("\n\n")])])]),s("p",[t._v("Comparing a primitive long to an Object long will not result in a false negative like comparing 2 objects with == does.")]),t._v(" "),s("h2",{attrs:{id:"the-boolean-primitive"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#the-boolean-primitive"}},[t._v("#")]),t._v(" The boolean primitive")]),t._v(" "),s("p",[t._v("A "),s("code",[t._v("boolean")]),t._v(" can store one of two values, either "),s("code",[t._v("true")]),t._v(" or "),s("code",[t._v("false")])]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("boolean")]),t._v(" foo "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"foo = "')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" foo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// foo = true")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("boolean")]),t._v(" bar "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"bar = "')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" bar"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// bar = false")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("boolean")]),t._v(" notFoo "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("foo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"notFoo = "')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" notFoo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// notFoo = false")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("boolean")]),t._v(" fooAndBar "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" foo "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" bar"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"fooAndBar = "')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" fooAndBar"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// fooAndBar = false")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("boolean")]),t._v(" fooOrBar "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" foo "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("||")]),t._v(" bar"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"fooOrBar = "')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" fooOrBar"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// fooOrBar = true")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("boolean")]),t._v(" fooXorBar "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" foo "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("^")]),t._v(" bar"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("System")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("out"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("println")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"fooXorBar = "')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" fooXorBar"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// fooXorBar = true")]),t._v("\n\n")])])]),s("p",[t._v("The default value of a "),s("code",[t._v("boolean")]),t._v(" is "),s("strong",[t._v("false")])]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("boolean")]),t._v(" defaultBoolean"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// defaultBoolean == false")]),t._v("\n\n")])])]),s("h2",{attrs:{id:"the-byte-primitive"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#the-byte-primitive"}},[t._v("#")]),t._v(" The byte primitive")]),t._v(" "),s("p",[t._v("A "),s("code",[t._v("byte")]),t._v(" is a 8-bit signed integer. It can store a minimum value of -2"),s("sup",[t._v("7")]),t._v(" (-128), and a maximum value of 2"),s("sup",[t._v("7")]),t._v(" - 1 (127)")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("byte")]),t._v(" example "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("byte")]),t._v(" myByte "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("96")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("byte")]),t._v(" anotherByte "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("byte")]),t._v(" addedBytes "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("byte")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("myByte "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" anotherByte"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 103")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("byte")]),t._v(" subtractedBytes "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("byte")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("myBytes "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" anotherByte"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 89")]),t._v("\n\n")])])]),s("p",[t._v("The maximum and minimum values of "),s("code",[t._v("byte")]),t._v(" can be found at:")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("byte")]),t._v(" high "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Byte")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("MAX_VALUE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// high == 127")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("byte")]),t._v(" low "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Byte")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("MIN_VALUE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// low == -128")]),t._v("\n\n")])])]),s("p",[t._v("The default value of a "),s("code",[t._v("byte")]),t._v(" is "),s("strong",[t._v("0")])]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("byte")]),t._v(" defaultByte"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// defaultByte == 0")]),t._v("\n\n")])])]),s("h2",{attrs:{id:"negative-value-representation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#negative-value-representation"}},[t._v("#")]),t._v(" Negative value representation")]),t._v(" "),s("p",[t._v("Java and most other languages store negative integral numbers in a representation called "),s("strong",[t._v("2's complement")]),t._v(" notation.")]),t._v(" "),s("p",[t._v("For a unique binary representation of a data type using "),s("code",[t._v("n")]),t._v(" bits, values are encoded like this:")]),t._v(" "),s("p",[t._v("The least significant "),s("code",[t._v("n-1")]),t._v(" bits store a positive integral number "),s("code",[t._v("x")]),t._v(" in integral representation. Most significant value stores a bit vith value "),s("code",[t._v("s")]),t._v(". The value repesented by those bits is")]),t._v(" "),s("p",[t._v("x - s * 2"),s("sup",[t._v("n-1")])]),t._v(" "),s("p",[t._v("i.e. if the most significant bit is 1, then a value that is just by 1 larger than the number you could represent with the other bits ("),s("code",[t._v("2n-2 + 2n-3 + ... + 21 + 20 = 2n-1 - 1")]),t._v(") is subtracted allowing a unique binary representation for each value from - 2"),s("sup",[t._v("n-1")]),t._v(" (s = 1; x = 0) to 2"),s("sup",[t._v("n-1")]),t._v(" - 1 (s = 0; x = 2"),s("sup",[t._v("n-1")]),t._v(" - 1).")]),t._v(" "),s("p",[t._v("This also has the nice side effect, that you can add the binary representations as if they were positive binary numbers:")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("~")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n\n")])])]),s("p",[s("strong",[t._v("Example:")]),t._v(" taking the negative value of 0 ("),s("code",[t._v("byte")]),t._v("):")]),t._v(" "),s("p",[t._v("The result of negating "),s("code",[t._v("0")]),t._v(", is "),s("code",[t._v("11111111")]),t._v(". Adding 1 gives a value of "),s("code",[t._v("100000000")]),t._v(" (9 bits). Because a "),s("code",[t._v("byte")]),t._v(" can only store 8 bits, the leftmost value is truncated, and the result is "),s("code",[t._v("00000000")])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Original")]),t._v(" "),s("th",[t._v("Process")]),t._v(" "),s("th",[t._v("Result")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("0 (00000000)")]),t._v(" "),s("td",[t._v("Negate")]),t._v(" "),s("td",[t._v("-0 (11111111)")])]),t._v(" "),s("tr",[s("td",[t._v("11111111")]),t._v(" "),s("td",[t._v("Add 1 to binary")]),t._v(" "),s("td",[t._v("100000000")])]),t._v(" "),s("tr",[s("td",[t._v("100000000")]),t._v(" "),s("td",[t._v("Truncate to 8 bits")]),t._v(" "),s("td",[t._v("00000000 (-0 equals 0)")])])])]),t._v(" "),s("h2",{attrs:{id:"the-short-primitive"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#the-short-primitive"}},[t._v("#")]),t._v(" The short primitive")]),t._v(" "),s("p",[t._v("A "),s("code",[t._v("short")]),t._v(" is a 16-bit signed integer. It has a minimum value of -2"),s("sup",[t._v("15")]),t._v(" (-32,768), and a maximum value of 2"),s("sup",[t._v("15")]),t._v(" ‑1 (32,767)")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("short")]),t._v(" example "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("48")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("short")]),t._v(" myShort "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("987")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("short")]),t._v(" anotherShort "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("17")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("short")]),t._v(" addedShorts "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("short")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("myShort "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" anotherShort"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 1,004")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("short")]),t._v(" subtractedShorts "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("short")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("myShort "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v(" anotherShort"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 970")]),t._v("\n\n")])])]),s("p",[t._v("The maximum and minimum values of "),s("code",[t._v("short")]),t._v(" can be found at:")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("short")]),t._v(" high "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Short")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("MAX_VALUE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// high == 32767")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("short")]),t._v(" low "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Short")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("MIN_VALUE"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// low == -32768")]),t._v("\n\n")])])]),s("p",[t._v("The default value of a "),s("code",[t._v("short")]),t._v(" is "),s("strong",[t._v("0")])]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("short")]),t._v(" defaultShort"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// defaultShort == 0")]),t._v("\n\n")])])]),s("h4",{attrs:{id:"syntax"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#syntax"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),s("li",[t._v("\nint aInt = 8; // The defining (number) part of this int declaration is called a literal.\n")]),t._v(" "),s("li",[t._v("\nint hexInt = 0x1a; // = 26; You can define literals with hex values prefixed with **0x**.\n")]),t._v(" "),s("li",[t._v("\nint binInt = 0b11010; // = 26; You can also define binary literals; prefixed with **0b**.\n")]),t._v(" "),s("li",[t._v('\nlong goodLong = 10000000000L; // By default, integer literals are of type int. By adding the L at the end of the literal you are telling the compiler that the literal is a long. Without this the compiler would throw an "Integer number too large" error.\n')]),t._v(" "),s("li",[t._v("\ndouble aDouble = 3.14; // Floating-Point Literals are of type double by default.\n")]),t._v(" "),s("li",[t._v('\nfloat aFloat = 3.14F; // By default this literal would have been a double (and caused an "Incompatible Types" error), but by adding an F we tell the compiler it is a float.\n')]),t._v(" "),s("h4",{attrs:{id:"remarks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#remarks"}},[t._v("#")]),t._v(" Remarks")]),t._v(" "),s("p",[t._v("Java has 8 "),s("strong",[t._v("primitive data types")]),t._v(", namely "),s("code",[t._v("boolean")]),t._v(", "),s("code",[t._v("byte")]),t._v(", "),s("code",[t._v("short")]),t._v(", "),s("code",[t._v("char")]),t._v(", "),s("code",[t._v("int")]),t._v(", "),s("code",[t._v("long")]),t._v(", "),s("code",[t._v("float")]),t._v(" and "),s("code",[t._v("double")]),t._v(". (All other types are "),s("strong",[t._v("reference")]),t._v(" types. This includes all array types, and built-in object types / classes that have special significance in the Java language; e.g. "),s("code",[t._v("String")]),t._v(", "),s("code",[t._v("Class")]),t._v(" and "),s("code",[t._v("Throwable")]),t._v(" and its subclasses.)")]),t._v(" "),s("p",[t._v("The result of all operations (addition, subtraction, multiplication, etc) on a primitive type is at least an "),s("code",[t._v("int")]),t._v(", thus adding a "),s("code",[t._v("short")]),t._v(" to a "),s("code",[t._v("short")]),t._v(" produces an "),s("code",[t._v("int")]),t._v(", as does adding a "),s("code",[t._v("byte")]),t._v(" to a "),s("code",[t._v("byte")]),t._v(", or a "),s("code",[t._v("char")]),t._v(" to a "),s("code",[t._v("char")]),t._v(". If you want to assign the result of that back to a value of the same type, you must cast it. e.g.")]),t._v(" "),s("div",{staticClass:"language-java extra-class"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("byte")]),t._v(" a "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("byte")]),t._v(" b "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("byte")]),t._v(" c "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("byte")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),t._v(" b"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n")])])]),s("p",[t._v("Not casting the operation will result in a compile error.")]),t._v(" "),s("p",[t._v("This is due to the following part of the "),s("a",{attrs:{href:"http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.11.1",target:"_blank",rel:"noopener noreferrer"}},[t._v("Java Language Spec, §2.11.1"),s("OutboundLink")],1),t._v(":")]),t._v(" "),s("blockquote"),t._v(" "),s("p",[t._v("A compiler encodes loads of literal values of types "),s("code",[t._v("byte")]),t._v(" and "),s("code",[t._v("short")]),t._v(" using Java Virtual Machine instructions that sign-extend those values to values of type "),s("code",[t._v("int")]),t._v(" at compile-time or run-time. Loads of literal values of types "),s("code",[t._v("boolean")]),t._v(" and "),s("code",[t._v("char")]),t._v(" are encoded using instructions that zero-extend the literal to a value of type "),s("code",[t._v("int")]),t._v(" at compile-time or run-time. [..]. Thus, most operations on values of actual types "),s("code",[t._v("boolean")]),t._v(", "),s("code",[t._v("byte")]),t._v(", "),s("code",[t._v("char")]),t._v(", and "),s("code",[t._v("short")]),t._v(" are correctly performed by instructions operating on values of computational type "),s("code",[t._v("int")]),t._v(".")]),t._v(" "),s("p",[t._v("The reason behind this is also specified in that section:")]),t._v(" "),s("blockquote"),t._v(" "),s("p",[t._v("Given the Java Virtual Machine's "),s("strong",[t._v("one-byte opcode size")]),t._v(", encoding types into opcodes places pressure on the design of its instruction set. If each typed instruction supported all of the Java Virtual Machine's run-time data types, there would be more instructions than could be represented in a "),s("code",[t._v("byte")]),t._v(". [...] Separate instructions can be used to convert between unsupported and supported data types as necessary.")])])}),[],!1,null,null,null);a.default=n.exports}}]);