{"id":1900,"date":"2011-08-25T10:44:39","date_gmt":"2011-08-25T10:44:39","guid":{"rendered":"https:\/\/sysgears.com\/?p=1900"},"modified":"2026-02-22T22:24:17","modified_gmt":"2026-02-22T22:24:17","slug":"api-enhancements-in-java-se-7","status":"publish","type":"post","link":"https:\/\/sysgears.com\/articles\/api-enhancements-in-java-se-7\/","title":{"rendered":"API Enhancements in Java SE 7"},"content":{"rendered":"\n<p>Recently released Java 7 has a lot of useful API enhancements such as the automatic resource management, multi-catch statements, switch statement with strings, binary literals and improved numeric literals. This post is a quick roundup of the new features, which should help you to get a full picture of Java 7 syntax in a short time.<\/p>\n\n\n\n<p><strong>Automatic Resource Management<\/strong><\/p>\n\n\n\n<p>The try-with-resources statement is a &#8216;try&#8217; that accepts one or more resources which will be closed automatically when the statement completes. Resources must implement the <code>AutoCloseable<\/code> or <code>Closeable<\/code> interface to be used with the try-with-resources block:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class Resource implements AutoCloseable {\n\n    public void doAction() throws Exception {\n        \/\/ throws the exception when doAction() is being called\n        throw new Exception(\"Resource action exception\");\n    }\n\n    @Override\n    public void close() throws Exception {\n       \/\/ throws the exception when the resource is being closed\n       throw new Exception(\"Resource close exception\");\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dracula\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #FF79C6\">class<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #8BE9FD\">Resource<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FF79C6\">implements<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #8BE9FD; font-style: italic\">AutoCloseable<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #FF79C6\">public<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #8BE9FD; font-style: italic\">void<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #50FA7B\">doAction<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #FF79C6\">throws<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #8BE9FD; font-style: italic\">Exception<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        <\/span><span style=\"color: #6272A4\">\/\/ throws the exception when doAction() is being called<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        <\/span><span style=\"color: #FF79C6\">throw<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FF79C6; font-weight: bold\">new<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #50FA7B\">Exception<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Resource action exception<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    @<\/span><span style=\"color: #8BE9FD; font-style: italic\">Override<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #FF79C6\">public<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #8BE9FD; font-style: italic\">void<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #50FA7B\">close<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #FF79C6\">throws<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #8BE9FD; font-style: italic\">Exception<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">       <\/span><span style=\"color: #6272A4\">\/\/ throws the exception when the resource is being closed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">       <\/span><span style=\"color: #FF79C6\">throw<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FF79C6; font-weight: bold\">new<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #50FA7B\">Exception<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Resource close exception<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>try (Resource resource = new Resource()) {\n    \/\/ the resource will be automatically closed when doAction()\n    \/\/ throws the exception\n    resource.doAction();\n} catch (Exception e) {\n    \/\/ catches the exception thrown by the doAction() method,\n    \/\/ the exception thrown by the close() method is suppressed,\n    \/\/ but still can be retrieved with Throwable.getSuppressed()\n    e.getSuppressed()&#91;0&#93; \/\/ returns the \"Resource close exception\"\n    throw e;             \/\/ throws the \"Resource action exception\"\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dracula\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #FF79C6\">try<\/span><span style=\"color: #F8F8F2\"> (<\/span><span style=\"color: #8BE9FD; font-style: italic\">Resource<\/span><span style=\"color: #F8F8F2\"> resource <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FF79C6; font-weight: bold\">new<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #50FA7B\">Resource<\/span><span style=\"color: #F8F8F2\">()) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #6272A4\">\/\/ the resource will be automatically closed when doAction()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #6272A4\">\/\/ throws the exception<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    resource.<\/span><span style=\"color: #50FA7B\">doAction<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">} <\/span><span style=\"color: #FF79C6\">catch<\/span><span style=\"color: #F8F8F2\"> (<\/span><span style=\"color: #8BE9FD; font-style: italic\">Exception<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FFB86C; font-style: italic\">e<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #6272A4\">\/\/ catches the exception thrown by the doAction() method,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #6272A4\">\/\/ the exception thrown by the close() method is suppressed,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #6272A4\">\/\/ but still can be retrieved with Throwable.getSuppressed()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    e.<\/span><span style=\"color: #50FA7B\">getSuppressed<\/span><span style=\"color: #F8F8F2\">()&#91;<\/span><span style=\"color: #BD93F9\">0<\/span><span style=\"color: #F8F8F2\">&#93; <\/span><span style=\"color: #6272A4\">\/\/ returns the &quot;Resource close exception&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #FF79C6\">throw<\/span><span style=\"color: #F8F8F2\"> e;             <\/span><span style=\"color: #6272A4\">\/\/ throws the &quot;Resource action exception&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><strong>Catching Multiple Exception Types<\/strong><\/p>\n\n\n\n<p>A single catch block can handle several different exception types, which was impossible in prior Java versions. For example, the try-catch:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>catch (ConnectException ex) {\n     throw new APIException(\"Cannot connect to the database\");\ncatch (DBConnectException ex) {\n     throw new APIException(\"Cannot connect to the database\");\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dracula\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #FF79C6\">catch<\/span><span style=\"color: #F8F8F2\"> (<\/span><span style=\"color: #8BE9FD; font-style: italic\">ConnectException<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FFB86C; font-style: italic\">ex<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">     <\/span><span style=\"color: #FF79C6\">throw<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FF79C6; font-weight: bold\">new<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #50FA7B\">APIException<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Cannot connect to the database<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FF79C6\">catch<\/span><span style=\"color: #F8F8F2\"> (<\/span><span style=\"color: #8BE9FD; font-style: italic\">DBConnectException<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FFB86C; font-style: italic\">ex<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">     <\/span><span style=\"color: #FF79C6\">throw<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FF79C6; font-weight: bold\">new<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #50FA7B\">APIException<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Cannot connect to the database<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>can be replaced with:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>catch (ConnectException | DBConnectException ex) {\n    \/\/ handles both the ConnectException and the DBConnectException\n    throw new APIException(\"Cannot connect to the database\");\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dracula\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #FF79C6\">catch<\/span><span style=\"color: #F8F8F2\"> (<\/span><span style=\"color: #8BE9FD; font-style: italic\">ConnectException<\/span><span style=\"color: #F8F8F2\"> | <\/span><span style=\"color: #8BE9FD; font-style: italic\">DBConnectException<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FFB86C; font-style: italic\">ex<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #6272A4\">\/\/ handles both the ConnectException and the DBConnectException<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #FF79C6\">throw<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FF79C6; font-weight: bold\">new<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #50FA7B\">APIException<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Cannot connect to the database<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><strong>Strings in Switch Statements<\/strong><\/p>\n\n\n\n<p>Java 7 finally allows to use a <code>String<\/code> object in the expression of a switch statement. The new switch compares strings using the <code>String.equals()<\/code> method:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>public String getPlanetSize(String planet) {\n   String size;\n   switch (planet) {\n       case \"Earth\":\n           size = \"Small\";\n           break;\n       case \"Jupiter\":\n       case \"Saturn\":\n           size = \"Large\";\n           break;\n       \/\/ ---------------\n       default:\n           throw new IllegalArgumentException(\"Invalid pl: \" + planet);\n   }\n   return size;\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dracula\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #FF79C6\">public<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #8BE9FD; font-style: italic\">String<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #50FA7B\">getPlanetSize<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #8BE9FD; font-style: italic\">String<\/span><span style=\"color: #F8F8F2\"> planet) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">   <\/span><span style=\"color: #8BE9FD; font-style: italic\">String<\/span><span style=\"color: #F8F8F2\"> size;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">   <\/span><span style=\"color: #FF79C6\">switch<\/span><span style=\"color: #F8F8F2\"> (planet) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">       <\/span><span style=\"color: #FF79C6\">case<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Earth<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #FF79C6\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">           size <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Small<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">           <\/span><span style=\"color: #FF79C6\">break<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">       <\/span><span style=\"color: #FF79C6\">case<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Jupiter<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #FF79C6\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">       <\/span><span style=\"color: #FF79C6\">case<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Saturn<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #FF79C6\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">           size <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Large<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">           <\/span><span style=\"color: #FF79C6\">break<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">       <\/span><span style=\"color: #6272A4\">\/\/ ---------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">       <\/span><span style=\"color: #FF79C6\">default:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">           <\/span><span style=\"color: #FF79C6\">throw<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FF79C6; font-weight: bold\">new<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #50FA7B\">IllegalArgumentException<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Invalid pl: <\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FF79C6\">+<\/span><span style=\"color: #F8F8F2\"> planet);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">   }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">   <\/span><span style=\"color: #FF79C6\">return<\/span><span style=\"color: #F8F8F2\"> size;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>This code works the same as the following if-then-else chain:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>public String getPlanetSize(String planet) {\n   String size;\n   if (planet.equals(\"Earth\")) {\n       size = \"Small\";\n   } else if (planet.equals(\"Jupiter\") || planet.equals(\"Saturn\")) {\n       size = \"Large\";\n   \/\/ --------------\n   } else {\n       throw new IllegalArgumentException(\"Invalid planet name: \" + planet);\n   }\n   return size;\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dracula\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #FF79C6\">public<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #8BE9FD; font-style: italic\">String<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #50FA7B\">getPlanetSize<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #8BE9FD; font-style: italic\">String<\/span><span style=\"color: #F8F8F2\"> planet) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">   <\/span><span style=\"color: #8BE9FD; font-style: italic\">String<\/span><span style=\"color: #F8F8F2\"> size;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">   <\/span><span style=\"color: #FF79C6\">if<\/span><span style=\"color: #F8F8F2\"> (planet.<\/span><span style=\"color: #50FA7B\">equals<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Earth<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F8F8F2\">)) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">       size <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Small<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">   } <\/span><span style=\"color: #FF79C6\">else<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FF79C6\">if<\/span><span style=\"color: #F8F8F2\"> (planet.<\/span><span style=\"color: #50FA7B\">equals<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Jupiter<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F8F8F2\">) <\/span><span style=\"color: #FF79C6\">||<\/span><span style=\"color: #F8F8F2\"> planet.<\/span><span style=\"color: #50FA7B\">equals<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Saturn<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F8F8F2\">)) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">       size <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Large<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">   <\/span><span style=\"color: #6272A4\">\/\/ --------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">   } <\/span><span style=\"color: #FF79C6\">else<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">       <\/span><span style=\"color: #FF79C6\">throw<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FF79C6; font-weight: bold\">new<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #50FA7B\">IllegalArgumentException<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F1FA8C\">Invalid planet name: <\/span><span style=\"color: #E9F284\">&quot;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FF79C6\">+<\/span><span style=\"color: #F8F8F2\"> planet);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">   }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">   <\/span><span style=\"color: #FF79C6\">return<\/span><span style=\"color: #F8F8F2\"> size;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>The switch statement, of course, is much more preferable choice, as the code generated by a compiler will be more efficient.<\/p>\n\n\n\n<p><strong>Binary Literals<\/strong><\/p>\n\n\n\n<p>New binary literals must be prefixed with 0b or 0B, for example:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>int i1 = 0b101;\n\/\/ or\nint i2 = 0B101;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dracula\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">int<\/span><span style=\"color: #F8F8F2\"> i1 <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #BD93F9\">0b101<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6272A4\">\/\/ or<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">int<\/span><span style=\"color: #F8F8F2\"> i2 <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #BD93F9\">0B101<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>You can also use binary literals to express integral types:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>byte b = 0b10010010 \/\/ up to 8 bit\nshort s = 0b1001001010010010 \/\/ up to 16 bit\nint i = 0b10010010100100101001001010010010 \/\/ up to 32 bit\nlong l = 0b1001001010010010100100101001001010010010100100101001001010010010 \/\/up to 64 bit<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dracula\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">byte<\/span><span style=\"color: #F8F8F2\"> b <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #BD93F9\">0b10010010<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #6272A4\">\/\/ up to 8 bit<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">short<\/span><span style=\"color: #F8F8F2\"> s <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #BD93F9\">0b1001001010010010<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #6272A4\">\/\/ up to 16 bit<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">int<\/span><span style=\"color: #F8F8F2\"> i <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #BD93F9\">0b10010010100100101001001010010010<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #6272A4\">\/\/ up to 32 bit<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">long<\/span><span style=\"color: #F8F8F2\"> l <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #BD93F9\">0b1001001010010010100100101001001010010010100100101001001010010010<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #6272A4\">\/\/up to 64 bit<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Binary literals are very convenient in bitwise and bitshift operations:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>byte hex = 0xA | 0x9;\nbyte binary = 0b00001010 | 0b00001001;\nassert binary == hex;\nassert binary == (byte)0xB;\nassert binary == (byte)0b00001011<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dracula\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">byte<\/span><span style=\"color: #F8F8F2\"> hex <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #BD93F9\">0xA<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FF79C6\">|<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #BD93F9\">0x9<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">byte<\/span><span style=\"color: #F8F8F2\"> binary <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #BD93F9\">0b00001010<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #FF79C6\">|<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #BD93F9\">0b00001001<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FF79C6\">assert<\/span><span style=\"color: #F8F8F2\"> binary <\/span><span style=\"color: #FF79C6\">==<\/span><span style=\"color: #F8F8F2\"> hex;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FF79C6\">assert<\/span><span style=\"color: #F8F8F2\"> binary <\/span><span style=\"color: #FF79C6\">==<\/span><span style=\"color: #F8F8F2\"> (<\/span><span style=\"color: #8BE9FD; font-style: italic\">byte<\/span><span style=\"color: #F8F8F2\">)<\/span><span style=\"color: #BD93F9\">0xB<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FF79C6\">assert<\/span><span style=\"color: #F8F8F2\"> binary <\/span><span style=\"color: #FF79C6\">==<\/span><span style=\"color: #F8F8F2\"> (<\/span><span style=\"color: #8BE9FD; font-style: italic\">byte<\/span><span style=\"color: #F8F8F2\">)<\/span><span style=\"color: #BD93F9\">0b00001011<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><strong>Underscores in Numeric Literals<\/strong><\/p>\n\n\n\n<p>Any numeric literal can be separated into groups using underscore characters. The literal will be invalid if it has underscores that are placed:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>before or after a decimal point<\/li>\n\n\n\n<li>before F, f, D, d, \u2026 suffixes<\/li>\n\n\n\n<li>at the literal beginning or end<\/li>\n<\/ul>\n\n\n\n<p>Correct:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>int i1 = 10_103;      \/\/ 10103\nint i2 = 10______103; \/\/ 10103\nint i3 = 0_12;        \/\/ 012 - octal literal<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dracula\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">int<\/span><span style=\"color: #F8F8F2\"> i1 <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #BD93F9\">10_103<\/span><span style=\"color: #F8F8F2\">;      <\/span><span style=\"color: #6272A4\">\/\/ 10103<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">int<\/span><span style=\"color: #F8F8F2\"> i2 <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #BD93F9\">10______103<\/span><span style=\"color: #F8F8F2\">; <\/span><span style=\"color: #6272A4\">\/\/ 10103<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">int<\/span><span style=\"color: #F8F8F2\"> i3 <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> 0_12;        <\/span><span style=\"color: #6272A4\">\/\/ 012 - octal literal<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Incorrect:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>float f = 10_.3432F;\nlong l = 10_L;\nint i = 12_;\nint x = 0_x12;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dracula\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">float<\/span><span style=\"color: #F8F8F2\"> f <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> 10_.<\/span><span style=\"color: #FF5555; font-style: italic; text-decoration: underline\">3432F<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">long<\/span><span style=\"color: #F8F8F2\"> l <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> 10_L;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">int<\/span><span style=\"color: #F8F8F2\"> i <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> 12_;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">int<\/span><span style=\"color: #F8F8F2\"> x <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> 0_x12;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Underscores can be used to visually separate digits and make code more readable, for example, binary or hexadecimal literals can be separated by bytes:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>int i1 = 0b10010010_10010010_10010010_10010010\nint i2 = 0x92_92_92_92<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dracula\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">int<\/span><span style=\"color: #F8F8F2\"> i1 <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #BD93F9\">0b10010010_10010010_10010010_10010010<\/span><\/span>\n<span class=\"line\"><span style=\"color: #8BE9FD; font-style: italic\">int<\/span><span style=\"color: #F8F8F2\"> i2 <\/span><span style=\"color: #FF79C6\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #BD93F9\">0x92_92_92_92<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><strong>Conclusion<\/strong><\/p>\n\n\n\n<p>These are almost all syntax changes in Java 7, and yes, it would be nice to have more syntactic sugar. The good news is the Java 8 release is coming soon, which, with lambda expressions and method references, promises to have a lot of extremely interesting features and improvements.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently released Java 7 has a lot of useful API enhancements such as the automatic resource management, multi-catch statements, switch statement with strings, binary literals and improved numeric literals. This post is a quick roundup of the new features, which should help you to get a full picture of Java 7 syntax in a short time.<\/p>\n","protected":false},"author":5,"featured_media":1901,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[75],"tags":[94,79],"class_list":["post-1900","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles","tag-educational","tag-java"],"_links":{"self":[{"href":"https:\/\/sysgears.com\/wp-json\/wp\/v2\/posts\/1900","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sysgears.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sysgears.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sysgears.com\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/sysgears.com\/wp-json\/wp\/v2\/comments?post=1900"}],"version-history":[{"count":1,"href":"https:\/\/sysgears.com\/wp-json\/wp\/v2\/posts\/1900\/revisions"}],"predecessor-version":[{"id":12751,"href":"https:\/\/sysgears.com\/wp-json\/wp\/v2\/posts\/1900\/revisions\/12751"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sysgears.com\/wp-json\/wp\/v2\/media\/1901"}],"wp:attachment":[{"href":"https:\/\/sysgears.com\/wp-json\/wp\/v2\/media?parent=1900"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sysgears.com\/wp-json\/wp\/v2\/categories?post=1900"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sysgears.com\/wp-json\/wp\/v2\/tags?post=1900"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}