Your code is all wrong.
First, you don't need:
byte bArray[] = new byte[str.length()];
bArray = str.getBytes();
You just need:
byte bArray[] = str.getBytes();
The method getBytes() creates the array and returns it. You don't need to create it yourself. What you did was create an empty array and then throw it away and replace it with the array created by getBytes.
Second, you aren't printing the array. You're printing the address in memory that the data is stored at. To print the array, you need to do the following:
for(int iByte = 0; iByte < bArray.length; iByte++)
System.print((char)bArray[iByte]);
System.println();
(Note: I didn't actually test this code, but it should work.)
It will print the actual characters instead of the address of the array. The system.print methods don't take arrays as arguments. They take Strings. Other objects are converted with the toString() method, but it turns out that with arrays this just outputs the address of the array.
You also have to convert the byte back into a char to avoid printing out a number instead of a character.
If you use byte arrays properly, they actually work. In that case, you'll know when you need them by the time you get to writing a real program. Roots' example is a good one.