Those 3 terms are all very similar, and people will use them almost interchangeably. But here's my attempt to distinguish the main uses of them, while ignoring some of the more obscure exceptions:
Data is everything that's not executable code. It's the ints, booleans, bytes, Strings, arrays etc that a program uses and creates, eg 101, "James".
A value is the data associated with a variable or field, eg String personName = "James" ... the data "James" is the value of the variable personName.
Field is a word from the Object-Oriented world. When you define a class it has methods and fields. Fields will typically be implemented as variables in the class (but not necessarily - that's what data hiding is about), and accessed via public setter and getter (mutator and accessor) methods. Fields have values, which are examples of data.
Does that help?
Maybe someone else can explain it better...
ps. Yes, I deliberately didn't talk about references to objects; first things first, time enough for that later.