In C string is indeed array of character ended by '\0'. In Java string is a class. The java string can better be compared with std::string in C++ rather than C character array.
Declaration :- In C - char str[100]; In Java - String str;
In Java in most of the cases you don't need to worry about the string implementation as rich varieties of member functions are provided to work with it. In C also there are many APIs like strlen, strcpy, strcat, which are quite sufficient for normal operations.
The main difference comes in when you have to do some operations involving two strings. e.g.
lets say assigning one string to other. In jave it's straight forward.
String str1("This is Stack Overflow.");
String str2;
str2 = str1;
But In C you will have to use a loop to assign each character. Now again that does not mean that Java does it faster, because internally java also does the same thing. Just that the programmer is unaware of that.
In Java some operations can be done using natural operators e.g. comparison.
str1 == str2.
But in C you will have to use strcmp function for this.
strcmp(str1,str2);
In short while working in C you must and must know how to operate on string internally. In Java you must not.
Now in C you will also have to be extra careful when you are creating string on heap area.
char * str1 = malloc(100);
You will have to free this memory using free(str1). In Java the programmer need not aware of heap memory or stack memory so such thing do not come into picture.