Конвертируйте свою cDate в Java Date, а затем в String.
Заменить cDate
в запросе на:
dateFormatter.format(cDate.toJavaDate())
Да, изменения в свойствах сохраняются. Java является 100%-й передачей значением, однако при передаче объекта "значение" передало, действительно указатель на объект. Таким образом при изменении объекта в методе Вы изменяетесь, фактический объект передал в.
Таким образом, если у Вас будет следующий метод, то затем вызывающий метод будет видеть изменения:
private void updateMyDot(final Dot aDot) {
aDot.dotColor = new Color(255,255,255);
}
но если Вы сделаете следующее, то затем вызывающий метод не будет видеть изменений.
private void updateMyDot(/* not final */ Dot aDot) {
aDot = new Dot();
aDot.dotColor = new Color(255,255,255);
}
Во втором примере вызывающая сторона не будет видеть изменений и не будет видеть недавно созданный Dot
объект.
Мимо объектов проходят [ссылочное значение, где значение является ссылкой] (вещи, которые наследовались Объекту), примитивные значения (интервал, долго, дважды, и т.д.) передаются значением.
Это означает, что, когда примитив передается от вызывающей стороны методу, он копируется, тогда как с объектом [значение] ссылка передается.
Который в свою очередь означает, что, когда объект видоизменен методом, вызывающая сторона видит те изменения, потому что он имеет ссылку на тот же объект.
С другой стороны, когда метод видоизменяет примитив, вызывающая сторона не видит изменений, поскольку метод работает над копией.
[причина редактирований]
Если бы Java имел передачу ссылкой затем, то Вы могли бы сделать это:
Object x;
x = new Integer(42);
foo(x);
System.out.println(x.getClass()); // pass by reference would have it print out java.lang.Float
где нечто определяется как:
void foo(Object o)
{
o = new Float(43);
}
Так как Java передает ссылку значением o = new Float(43);
позволяется - но значение в вызывающей стороне останется как new Integer(42);