I\'m confused about this. Most of us have been told that there isn\'t any goto statement in Java.
But I found that it is one of the keywords in Java. Where can it be
It is important to understand that the goto
construct is remnant from the days that programmers programmed in machine code and assembly language. Because those languages are so basic (as in, each instruction does only one thing), program control flow is done completely with goto
statements (but in assembly language, these are referred to as jump or branch instructions).
Now, although the C language is fairly low-level, it can be thought of as very high-level assembly language - each statement and function in C can easily be broken down into assembly language instructions. Although C is not the prime language to program computers with nowadays, it is still heavily used in low level applications, such as embedded systems. Because C's function so closely mirrors assembly language's function, it only makes sense that goto
is included in C.
It is clear that Java is an evolution of C/C++. Java shares a lot of features from C, but abstracts a lot more of the details, and therefore is simply written differently. Java is a very high-level language, so it simply is not necessary to have low-level features like goto
when more high-level constructs like functions, for, for each, and while loops do the program control flow. Imagine if you were in one function and did a goto
to a label into another function. What would happen when the other function returned? This idea is absurd.
This does not necessarily answer why Java includes the goto
statement yet won't let it compile, but it is important to know why goto
was ever used in the first place, in lower-level applications, and why it just doesn't make sense to be used in Java.