Ответ: 4 .
Поскольку вы использовали ключевое слово new
, Java создаст новый объект String в обычной (не пуловой) памяти, и x
будет ссылаться на него. В дополнение к этому, литерал «xyz» будет помещен в пул строк, который снова является другим строковым объектом.
Итак, 4 строковых объекта:
Если бы ваш код был таким:
String x = "xyz";
String y = "abc";
x = x + y;
, то ответ был бы 3 .
Примечание: строка № 4 находится в памяти без пула, поскольку строковые литералы и строки, полученные путем вычисления константных выражений (см. JLS §15.28), являются единственными строками, которые неявно интернированы.
Источник: SCJP Sun Certified Programmer для Java 6 (Страница: 434, Глава 6)
Я потратил некоторое время, пытаясь ответить на тот же вопрос ... мне кажется, что наиболее сложными для переноса в GAE являются модели django ... ощущение, что они требуют различных модификаций и переосмысления, в основном потому, что бэкэнд GAE - это не стандартная реляционная БД, а BigTable Google . Я нашел здесь хорошее вступление к этому:
http://www.youtube.com/watch?v=rRCx9e38yr8
В любом случае, стоит скачать один из этих «патчей» и попробовать!
Для меня лучшим решением является « app-engine-patch ». Я скачал образец проекта, и он сразу заработал! (Имейте в виду, что вам нужно иметь GAE ' s SDK устанавливается отдельно) Убийственной фичей для меня является тот факт, что django-admin и многие другие классические функции django также были перенесены !!!
http://code.google.com/p/app-engine-patch/
Документация , на мой взгляд, по-прежнему довольно минимальна, но она достаточно хороша, чтобы вы начали. Это поможет вам бегло просмотреть официальные документы GAE!
App Engine включает версию 0.96 Django "из коробки", но она весьма урезана.
App Engine Helper и app-engine-patch предположительно решают эту проблему в некоторой степени, но я сам не пробовал.
http://code.google.com/appengine/articles/appengine_helper_for_django.html http://code.google.com/appengine/articles/app-engine-patch.html
Объем проблем зависит от того, сколько существующего кода вы хотите использовать повторно. К сожалению, из-за того, что Datastore не поддерживает SQL, вы часто не можете просто взять любое подключаемое к django приложение и использовать его в своем проекте GAE.
App-engine-patch http://code.google.com/p / app-engine-patch / , похоже, опережает других помощников django в переносе стандартных приложений (Sites, ContentTypes, Flatpages) в GAE. Я использовал app-engine-patch в нескольких проектах gae, и как только вы поймете, как портировать модель django-sql в модель django-gae и преобразовать sql в запросы хранилища данных, все можно сделать очень быстро, но всегда есть обучение кривая.
appengine-helper пытается восполнить пробел в хранилище данных, предоставляя модель, чтобы вам не приходилось менять суперклассы модели, но я ' Мы обнаружили, что в любом случае вам придется изменить отношения ManyToMany и любой sql, поэтому преимущество в конечном итоге минимально. У ae-patch есть план, чтобы попытаться предоставить серверную часть ae-datastore, но это, вероятно, не произойдет в ближайшее время.
Всего Вчера (в зависимости от вашего часового пояса) Google выпустил новый SDK для Python на Appengine, который поддерживает django 1.0 из коробки.