String s1="Java"; String s2="Java"; My question is whether these two references point to the same memory location
Dumb citing §3.10.5 Спецификации языка Java :
Строковый литерал является ссылкой на экземпляр класса String ( §4.3.1 , §4.3.3 ).
Кроме того, строковый литерал всегда ссылается на тот же экземпляр класса String. Это связано с тем, что строковые литералы, или, в более общем смысле, строки, которые являются значениями константных выражений ( §15.28 ), «интернированы», чтобы обмениваться уникальными экземплярами, используя метод String.intern.
blockquote>И прочитайте комментарии к примеру кода там:
Этот пример иллюстрирует шесть пунктов:
blockquote>
- Литеральные строки в одном и том же класс (§8) в том же пакете (§7) представляют ссылки на один и тот же объект String (§4.3.1).
- Литеральные строки в разных классах в одном пакете представляют ссылки на один и тот же объект String .
- Литеральные строки в разных классах в разных пакетах также представляют ссылки на один и тот же объект String.
- Строки, вычисленные с помощью константных выражений (§15.28), вычисляются во время компиляции, а затем обрабатываются как если они были литералами.
- Строки, вычисленные путем конкатенации во время выполнения, вновь создаются и, следовательно, различны.
- Результат явно interni ng вычисленная строка является той же строкой, что и любая ранее существовавшая буквальная строка с тем же содержимым.
Если для отображения маркера на карте не требуется id
, попробуйте следующее:
Добавьте маркер с пустым id
перед вызовами GET / POST. Таким образом, не должно быть никаких задержек.
И обновите значение id
после завершения вызовов POST.
Проверьте комментарии в коде
createMarker(event){
var lat = event.latLng.lat();
var lng = event.latLng.lng();
const latLng = 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' + lat + ',' + lng + '&key='
// add the marker to the map first
this.markers.push({ 'id': '',
'lat': lat,
'lng': lng})
// save the position of the marker, so we can add `id` later
var index = this.markers.length - 1;
axios.get(latLng)
.then(response => {
const name = response.data.results[0].address_components[5].long_name + ', '
+ response.data.results[0].address_components[3].long_name
console.log(response)
axios.post('/marker', {
userId: this.$store.state.auth.userId,
marker: event.latLng,
name: name
}).then(response => {
// update marker index
this.markers[index].id = response
}).catch((error) => console.log(error));
}).catch((error) => console.log(error))