{"id":55,"date":"2020-12-31T21:59:56","date_gmt":"2020-12-31T21:59:56","guid":{"rendered":"https:\/\/bhiggs.x10hosting.com\/practical-java-programming\/?page_id=55"},"modified":"2021-01-04T16:37:46","modified_gmt":"2021-01-04T16:37:46","slug":"statements","status":"publish","type":"page","link":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/statements\/","title":{"rendered":"Statements"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a06ed5782907\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a06ed5782907\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/statements\/#The_Java_Statements\" >The Java Statements<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/statements\/#Differences_from_CC\" >Differences from C\/C++<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/statements\/#The_%22foreach%22_Loop\" >The \"foreach\" Loop<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/statements\/#Pre-Java_Version_5\" >Pre-Java Version 5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/course-topics\/statements\/#Post-Java_Version_5\" >Post-Java Version 5<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n<p>Statements in Java are similar, but not identical, to C\/C++.&nbsp;&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_Java_Statements\"><\/span>The Java Statements<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Here is a list of Java statements, with some details on how they differ in some cases from C\/C++:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th><strong>STATEMENT<\/strong><\/th><th><strong>IN C?<\/strong><\/th><th><strong>IN C++?<\/strong><\/th><th><strong>COMMENTS<\/strong><\/th><\/tr><\/thead><tbody><tr><td>The empty (null) statement<\/td><td>Yes<\/td><td>Yes<\/td><td>&nbsp;<\/td><\/tr><tr><td>Labeled statements<\/td><td>Yes<\/td><td>Yes<\/td><td>May be referred to from&nbsp;<code><strong>break&nbsp;<\/strong><\/code>or&nbsp;<code><strong>continue<\/strong><\/code><\/td><\/tr><tr><td>Assignment expression<\/td><td>Yes<\/td><td>Yes<\/td><td>&nbsp;<\/td><\/tr><tr><td>Increment and decrement expressions<\/td><td>Yes<\/td><td>Yes<\/td><td>&nbsp;<\/td><\/tr><tr><td>Method invocation<\/td><td>No<\/td><td>Yes<\/td><td>Java does not support global functions<br>C does not support objects\/classes<br>Java only allows certain forms of expressions to be used as expression statements<\/td><\/tr><tr><td>Class instance creation expression<\/td><td>No<\/td><td>Yes<\/td><td>Java is richer in this area than C++C does not support objects\/classes<\/td><\/tr><tr><td><code><strong>if<\/strong><\/code>,&nbsp;<code><strong>while<\/strong><\/code>, and&nbsp;<code><strong>do<\/strong><\/code>\/<code><strong>while&nbsp;<\/strong><\/code>statements<\/td><td>Yes<\/td><td>Yes<\/td><td>C and C++ are very cavalier about what is allowed in the conditional expression.<br>Java requires the condition to be of type&nbsp;<strong>boolean<\/strong>;<br>for example, the following is&nbsp;<strong><em>invalid<\/em><\/strong>&nbsp;in Java:<br><code><strong>int i = 10; while (i--) { \/*...*\/ }<\/strong><\/code><\/td><\/tr><tr><td><code><strong>switch<\/strong><\/code>&nbsp;statement<\/td><td>Yes<\/td><td>Yes<\/td><td>Java has eliminated some very dubious behavior in switch statements that is present in C and C++<\/td><\/tr><tr><td><code><strong>for<\/strong><\/code>&nbsp;statement<\/td><td>Yes<\/td><td>Yes<\/td><td>Java allows comma-separated expressions in the for loop initialization and increment sections, but not in the test sectionJava allows the declaration of local loop variables, as in ISO C++ (but not in C or earlier versions of C++):<br><code><strong>for (int i = 0; i &lt; 10; i++) { \/* ... *\/ }<\/strong><\/code><\/td><\/tr><tr><td>\u201cforeach\u201d&nbsp;statement (enhanced for loop)<\/td><td>No<\/td><td>No<\/td><td><strong>Added in Java 5.0<\/strong><\/td><\/tr><tr><td><code><strong>break<\/strong><\/code>&nbsp;statement<\/td><td>Yes<\/td><td>Yes<\/td><td>Can take an optional label<\/td><\/tr><tr><td><code><strong>continue<\/strong><\/code>&nbsp;statement<\/td><td>Yes<\/td><td>Yes<\/td><td>Can take an optional label<\/td><\/tr><tr><td><em><strong>No<\/strong><\/em>&nbsp;<code><strong>goto&nbsp;<\/strong><\/code>statement!<\/td><td>Yes<\/td><td>Yes<\/td><td>Java has eliminated the notorious&nbsp;<code><strong>goto<\/strong><\/code>&nbsp;statement!<\/td><\/tr><tr><td><code><strong>return<\/strong><\/code>&nbsp;statement<\/td><td>Yes<\/td><td>Yes<\/td><td>&nbsp;<\/td><\/tr><tr><td><code><strong>try<\/strong><\/code>,&nbsp;<code><strong>throw<\/strong><\/code>,&nbsp;<code><strong>catch&nbsp;<\/strong><\/code>and&nbsp;<code><strong>finally&nbsp;<\/strong><\/code>statements<\/td><td>No<\/td><td>Yes<\/td><td>Java supports exceptions somewhat like C++, except the exception models are rather different.<\/td><\/tr><tr><td><code><strong>synchronized<\/strong><\/code>&nbsp;statement<\/td><td>No<\/td><td>No<\/td><td>Java has thread support built into the language.C and C++ do not<\/td><\/tr><tr><td><code><strong>package<\/strong><\/code>&nbsp;and&nbsp;<code><strong>import&nbsp;<\/strong><\/code>statements<\/td><td>No<\/td><td>No<\/td><td>Java supports modularization into packages.C does not.C++ has&nbsp;<strong>namespaces<\/strong>&nbsp;to accomplish the same thing, but they are a very recent addition to the language and so are not used by many traditional C++ programmers.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Differences_from_CC\"><\/span>Differences from C\/C++<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Here are some other ways that Java statements differ from C\/C++ statements:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Feature<\/th><th>In C?<\/th><th>In C++?<\/th><th>Comments<\/th><\/tr><\/thead><tbody><tr><td>Local variable declarations<\/td><td>No<\/td><td>Yes<\/td><td>Java supports C++-style local variable declarations.<br>(C only supports local declarations are the start of a block.)<\/td><\/tr><tr><td>Forward references<\/td><td>Yes<\/td><td>Yes<\/td><td>Java supports flexible forward references.It does not have the concept of declarations and definitions as in C\/C++.<\/td><\/tr><tr><td>Method overloading<\/td><td>No<\/td><td>Yes<\/td><td>Java uses overloading similar to C++.Java does not support global functions.<\/td><\/tr><tr><td>The&nbsp;<strong>void&nbsp;<\/strong>return type<\/td><td>Yes<\/td><td>Yes<\/td><td>Java uses&nbsp;<strong>void&nbsp;<\/strong>for a return type, but does not support&nbsp;<strong>(void)<\/strong>&nbsp;casts<\/td><\/tr><tr><td>The&nbsp;<strong>void&nbsp;<\/strong>argument list<\/td><td>Yes<\/td><td>Optional<\/td><td>Java does not use&nbsp;<strong>void&nbsp;<\/strong>to indicate no parameters<\/td><\/tr><tr><td>The&nbsp;<strong>void *<\/strong>&nbsp;type<\/td><td>Yes<\/td><td>Yes<\/td><td>Java has no pointer types<\/td><\/tr><tr><td>Old modifiers<\/td><td>Yes<\/td><td>Yes<\/td><td>Java does <em><strong>not<\/strong><\/em> support <code><strong>long<\/strong><\/code>, <strong>short<\/strong>, <strong>signed<\/strong>, <strong>unsigned<\/strong>, or <code><strong>const<\/strong><\/code> as modifiers.<br>Java does support the <code><strong>volatile<\/strong><\/code> modifier.<\/td><\/tr><tr><td>New modifiers<\/td><td>No<\/td><td>No<\/td><td>Java supports modifiers: <code><strong>final<\/strong><\/code>,&nbsp;<strong>native<\/strong>,&nbsp;<strong>synchronized<\/strong>, and <code><strong>transient<\/strong><\/code><\/td><\/tr><tr><td>No&nbsp;<code><strong>struct<\/strong><\/code>s or&nbsp;<strong>union<\/strong>s<\/td><td>Yes<\/td><td>Yes<\/td><td>Java does not support&nbsp;<strong>struct<\/strong>s or&nbsp;<strong>union<\/strong>s<\/td><\/tr><tr><td>Enumerations (<strong>enum<\/strong>s)<\/td><td>Yes<\/td><td>Yes<\/td><td>Java did not support&nbsp;<strong>enum<\/strong>s prior to JDK 1.5 (Java 5).&nbsp; <br>As of Java 5, it now does.<\/td><\/tr><tr><td>No method types<\/td><td>Yes<\/td><td>Yes<\/td><td>Java does not support function\/method addresses<\/td><\/tr><tr><td>No bitfields<\/td><td>Yes<\/td><td>Yes<\/td><td>Java does not support bitfields<\/td><\/tr><tr><td>Variable-length argument lists<\/td><td>Yes<\/td><td>Yes<\/td><td>Java did not support variable-length argument lists.&nbsp; However, in JDK 1.5 (Java 5), it does support variable-length argument lists.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">The &#8220;foreach&#8221; Loop<\/h3>\n\n\n\n<p>Java 5.0 added a very useful, new version of a for loop:&nbsp; a &#8220;foreach&#8221; loop, which is also present in a number of other languages.&nbsp; Java calls this new version an &#8220;enhanced for loop&#8221;.<\/p>\n\n\n\n<p>The &#8220;foreach&#8221; loop allows you to iterate through a&nbsp;<em>collection of objects<\/em>&nbsp;in a way that is much simpler than with a normal for loop.&nbsp;&nbsp;<\/p>\n\n\n\n<p>For the moment, we have only encountered one kind of collection:&nbsp;<em><strong>an array<\/strong><\/em>.&nbsp; Later, we&#8217;ll see how the &#8220;foreach&#8221; loop may be used with other kinds of collections.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Pre-Java_Version_5\"><\/span>Pre-Java Version 5<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>First, let&#8217;s look at how we typically would have done this prior to Java 5.0:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: java; auto-links: false; highlight: [8]; title: ; quick-code: false; notranslate\" title=\"\">\npackage examples;\n\npublic class ForEachTest\n{\n  public static void main(String&#x5B;] args)\n  {\n    String&#x5B;] herbs = { &quot;Basil&quot;, &quot;Sage&quot;, &quot;Rosemary&quot;, &quot;Oregano&quot; };\n    for (int i = 0; i &lt; herbs.length; i++)\n    {\n      String herb = herbs&#x5B;i];\n      System.out.println(herb);\n    }\n  }\n}\n<\/pre><\/div>\n\n\n<p>which outputs:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>Basil\nSage\nRosemary\nOregano<\/strong><\/pre>\n\n\n\n<p>This form of a for loop uses a very standard Java idiom (it&#8217;s also a standard idiom for C\/C++ and other related languages) for iterating through the elements of an array.&nbsp; Note how picky you have to be with the termination condition:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>i &lt; herbs.length<\/strong><\/pre>\n\n\n\n<p>&#8220;Off by one&#8221; errors (also known as &#8220;fencepost&#8221; errors) are very common, even for experienced Java programmers.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Post-Java_Version_5\"><\/span>Post-Java Version 5<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Now, let&#8217;s see how the &#8220;foreach&#8221; loop makes this much simpler (and safer!):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: java; auto-links: false; highlight: [8]; title: ; quick-code: false; notranslate\" title=\"\">\npackage examples;\n\npublic class ForEachTest\n{\n  public static void main(String&#x5B;] args)\n  {\n    String&#x5B;] herbs = { &quot;Basil&quot;, &quot;Sage&quot;, &quot;Rosemary&quot;, &quot;Oregano&quot; };\n    for (String herb: herbs)\n    {\n      System.out.println(herb);\n    }\n  }\n}\n<\/pre><\/div>\n\n\n<p>which outputs exactly the same thing as the former example.<\/p>\n\n\n\n<p>Notice how much simpler this version is!&nbsp; Not only does it save several lines of code, it also eliminates the error-prone termination condition of the conventional for loop construct.<\/p>\n\n\n\n<p>The compiler is doing more work for you!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Statements in Java are similar, but not identical, to C\/C++.&nbsp;&nbsp; The Java Statements Here is a list of Java statements, with some details on how they differ in some cases from C\/C++: STATEMENTIN C?IN C++?COMMENTSThe empty (null) statementYesYes&nbsp;Labeled statementsYesYesMay be referred to from&nbsp;break&nbsp;or&nbsp;continueAssignment expressionYesYes&nbsp;Increment and decrement expressionsYesYes&nbsp;Method invocationNoYesJava does not support global functionsC does not [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":34,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_eb_attr":"","_uag_custom_page_level_css":"","ocean_post_layout":"left-sidebar","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"ocs-course-topics-sidebar","ocean_second_sidebar":"0","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"0","ocean_custom_header_template":"0","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"0","ocean_menu_typo_font_family":"0","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"0","footnotes":""},"class_list":["post-55","page","type-page","status-publish","hentry","entry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"ocean-thumb-m":false,"ocean-thumb-ml":false,"ocean-thumb-l":false},"uagb_author_info":{"display_name":"Bryan Higgs","author_link":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/author\/bryan\/"},"uagb_comment_info":0,"uagb_excerpt":"Statements in Java are similar, but not identical, to C\/C++.&nbsp;&nbsp; The Java Statements Here is a list of Java statements, with some details on how they differ in some cases from C\/C++: STATEMENT IN C? IN C++? COMMENTS The empty (null) statement Yes Yes &nbsp; Labeled statements Yes Yes May be referred to from&nbsp;break&nbsp;or&nbsp;continue Assignment&hellip;","_links":{"self":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/pages\/55","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/comments?post=55"}],"version-history":[{"count":14,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/pages\/55\/revisions"}],"predecessor-version":[{"id":376,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/pages\/55\/revisions\/376"}],"up":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/pages\/34"}],"wp:attachment":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalJavaProgramming\/wp-json\/wp\/v2\/media?parent=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}