your string variable 'word' is being read into a for loop, as per the condition set out in the for loop. And also, a substring of 'word' means the loop is breaking up the word for you.
You see, take the criteria word.substring(0,j) where j is set to 0, that will obviously print nothing, and as you follow the for loop, with the next word.substring(0,j) where j is set to 1 now, because in your for loop you will notice your last condition in the for loop j++ where j got incremented by 1. This will now print out your first character in word which is 'c'.
Do I need to continue or you get the picture? Do a trace table like I roughly did replacing j with number 0 right upto 3, not 4 because your second condition states j < 4.
String is an array. Look up properties of an array.
String is an object
may be containing an array of char but it will be against any OO philosophy to assume that
may be String keep, or will eventually, hold its elements in an array, an ArrayList, a Vector, a LinkedList, a Stack, you don't know and you don't want to know
You were really taught to think of them as an Array? Thats a new one to me. As PBL says, you could create a String from a char array, or vise versa, wouldnt suggest it though. Not trying to catch you out here but if you create an Array of type String, why would you have to generically label it as a String?