All programming languages have variable data types. Each data type is used for doing a different kind of computation. For example, an integer type variable is used to hold integer values for computations. Similarly a character type is used for doing computations where strings and characters are involved in any computation. E.g. if we want to hold user names in a textbox at a user interface then string data type will be used.
Java is a strongly typed programming language. What it means is that when you program using Java then the compiler will not allow you to assign a value to a variable if it is not defined. The compiler will also not allow you to hold a data in a variable of a different data type.
For a new comer it may pose some problems. For example, a new comer may not know subtle differences between different data types and thus may find it difficult to compile his/her code because of some minor error in his/her program. But this apparent shortcoming is a disguise in blessing.
What happens is that if your programming language is strongly typed then your source code is immune to faulty performance when it runs. Since all errors are already restricted through data type checking of variables in programming language itself, your code will be highly fault tolerant. For example if you have defined a text field on your user screen as an integer but the user enters some values different than an integer (character or date or float for example) then the system will raise an error and will not accept the entered data. This will save you a lot of heartache. Your program will allow only the right values to be accepted and saved to the database. On the other hand if typing checking is not handled then even garbage values will be accepted and saved in the database.
You can see the immense value of fault tolerance in a programming language. Java definitely scores very highly in this area.