I think there are a few ideas getting confused in your quote. So I'll take each at a time.
FIRST CONCEPT:
"All of these integer types are SIGNED. The leftmost bit represents the sign (positive or negative) and is NOT part of the value"
This is a format called SIGN MAGNITUDE which I don't think
JAVA uses. This, as you said, means that the value is represented by the the lower 7 bits and the 8th bit is purely a sign bit. So
00000011 = 3
10000011 = -3
This format creates a symmetry between negative and positive respresentations giving you a range of
-((2^7)-1) to 2^7 - 1
-127 to 127
(same number of positive and negative values are represented)
SECOND CONCEPT:
"(-2 to the 7th) through (2 to the 7th) -1"
This range occurs when the values are being represented by two's complement, which is what I'm pretty sure JAVA uses. The equation for calculating a two's complement number is as follows (for a byte)
msb = most significant bit.
(2^7)*(-1)*(msb) + (the value represented by the remaining bits).
examples:
00000011 = 3
(2^7)*(-1)*0 + 3 = 3
11111101 = -3
(2^7)*(-1)*1 + 125 = -3
This format results in the range you said:
"(-2 to the 7th) through (2 to the 7th) -1"
CONCLUSION:
Two's complement (nothings wasted):
10000000 = -128
00000000 = 0
Sign magnitude (two things represent 0):
10000000 = -0
00000000 = +0
These representation issues come from the fact that in binary you have an even set of values to pick from to represent an odd set.
BASE10
from -10->10 there are 11 values (odd)
BASE2 will always result in an even number of different combinations.
0 = 2
00 = 4
000 = 8
etc..
So somewhere there is going to be a comprimise. In SIGN magnitude, because there are two zeros, you will lose one value of representation but then you have the same number of positive and negative numbers. With 2's complement you have one more value represented on the negative side.
Hope this answers your question