This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
I take you are talking about DataInputStream and ByteArrayInputStream(and corresponding output streams). Besides having quite different interfaces, the Data streams are used for reading Java primitives, so you are dealing with data in its "natural" form. Byte streams handles data at the byte level, and stores it in an array. It doesn't deal with the character "C", like a data stream will, it deals with the byte value of "C".