Путь разработчика    

Почему Java не поддерживает указатели?


Большинство исследований согласны с тем, что указатели являются одной из основных функций, которые позволяют разработчикам вводить ошибки в свой код. Когда Java была создана, было сделано намерение создать язык, который легко изучить и не подвержен ошибкам, с которыми склонен C ++. Это не похоже на c / c ++, где мы должны управлять управлением памятью деструкторами. В Java автоматическая сборщик мусора работает для управления памятью. На самом деле ссылки Java являются указателями, поэтому все в Java доступно только через указатели.

Некоторые причины для Java не поддерживают указатели:

1. Доступ к памяти через арифметику указателя: это принципиально небезопасно. Java обладает надежной моделью безопасности и по той же причине запрещает арифметику указателя. Виртуальной машине было бы невозможно гарантировать, что код, содержащий арифметику указателя, безопасен без дорогостоящих проверок времени выполнения.

2. Безопасность. Не позволяя указателям, Java эффективно предоставляет другой уровень абстракции разработчику. Никакая поддержка указателей не делает Java более безопасным, поскольку они указывают на местоположение памяти или используются для управления памятью, которая теряет безопасность, поскольку мы используем их напрямую.

3. Передача аргумента по ссылке: передача ссылки, которая позволяет вам изменять значение переменной в области вызова. Java не имеет этого, но это довольно редкий случай использования и может быть легко выполнен другими способами. Это в целом эквивалентно изменению поля в области объекта, которое могут видеть как вызывающий, так и вызываемый.

4. Ручное управление памятью: вы можете использовать указатели для ручного управления и выделения блоков памяти. Это полезно для некоторых более крупных приложений, таких как игры, драйверы устройств и т. Д., Но для объектно-ориентированного программирования общего назначения это просто не стоит усилий. Java вместо этого обеспечивает очень хорошую автоматическую сборку мусора (GC), которая занимается управлением памятью.

Источник: http://net-informations.com/Java/cJava/pointers.htm



Отзывы (через аккаунты в социальных сетях Вконтакте или Facebook):

Оставить отзыв с помощью аккаунта ВКонтакте:

Оставить отзыв с помощью аккаунта FaceBook:

Как рассчитать сумму денег в C#

В этом примере показано, как рассчитать текущую стоимость будущей суммы денег. Предположим, вы хотите получить определенную сумму денег за определенное кол...

18 07 2019 10:15:37

HTML5. Недостающее руководство (Мэтью Мак-Дональд)

Доступно и в занимательной форме рассказано, как HTML превратился в HTML5. Рассмотрены семантические элементы и новые стандарты языка. Описано, как создава...

17 07 2019 17:42:19

Найти египетские фракции в C#

Египетская фракция представляет собой долю, выраженную в виде суммы отдельных единичных дробей. Например, вы можете написать 3/7 как 1/3 + 1/11 + 1/231. Вы...

16 07 2019 10:45:10

Циклы while и do..while в Java

Мы используем многократные действия для решения проблем повседневной жизни. В программировании мы также используем многократные действия для решения пробле...

15 07 2019 23:44:42

Исключения в Java

Исключение - это событие, которое происходит во время выполнения программы, что нарушает нормальный поток инструкций программы. Он обеспечивает способ пере...

14 07 2019 11:31:39

Инициализация ComboBox из перечисления в C#

Часто полезно инициализировать ComboBox из перечисления, чтобы пользователь мог выбрать одно из значений перечисления. Вы можете ввести значение в ComboBox...

13 07 2019 7:31:23

Сравнение строк в Java

Класс Java String имеет ряд методов сравнения строк. Ниже приведены некоторые из часто используемых методов: Операторы == для сравнения, а не значения, рав...

12 07 2019 20:56:10

Как рассчитать разницу дат в Java

Есть много способов найти разницу между датами. Ниже приведен самый простой способ найти разницу между двумя датами. Вы можете просто взять число миллисеку...

11 07 2019 5:47:28

Основы программирования в Delphi 7 (Н. Б.Культин)

Книга является руководством по программированию в среде Delphi 7. Описывается весь процесс разработки программы: от конструирования диалогового окна до орг...

10 07 2019 1:49:47

Почему Java не поддерживает указатели?

Большинство исследований согласны с тем, что указатели являются одной из основных функций, которые позволяют разработчикам вводить ошибки в свой код. Когда...

09 07 2019 16:40:36

JavaScript: логические операторы

  AND оператор: & & OR оператор: || NOT оператор: ! Логические операторы обычно используются с логическими (логическими) значениями. Когда они...

08 07 2019 13:39:36

Восстановить контроль в C#

Изменение родительского элемента управления легко. Просто установите его свойство Parent в элемент управления, который должен содержать его. В этом примере...

07 07 2019 22:49:25

Разница между HashMap и Hashtable в Java?

Оба HashTable и HashMap реализуют интерфейс карты, но между ними существуют некоторые различия. Они есть: Безопасность потоков (синхронизировано) Нулевые к...

06 07 2019 3:15:57

Языки программирования для начинающих: с чего лучше начать?

Какие языки программирования подходят для начинающих? С какого лучше начать? В наше время программирование стало одной из самых востребовательных и высокооплачиваемых...

05 07 2019 2:32:21

Как записать write() в файл Python

После изучения того, как открыть и закрыть файл в Python , откройте файл, тогда мы напишем в него случайный текст с помощью метода write() . Чтобы записать...

04 07 2019 1:26:51

Сохранение цветовой палитры в настройках программы на C#

Пример Сделать постоянную цветовую палитру в C# показывает, как программа может использовать настройки для сохранения и восстановления цветовой палитры. Пр...

03 07 2019 13:12:45

Нарисуйте текст движущейся кистью в C#

В этом примере используется техника, аналогичная той, которая используется в примере Сделать движущийся фон в C# . Для рисования текста используется градие...

02 07 2019 4:32:26

Нарисуйте масштабированное нормальное распределение в C#

Пример Нарисовать нормальную кривую распределения в C# показывает, как для нормального распределения. К сожалению, для некоторых средств и стандартных откл...

01 07 2019 6:19:24

Как определить ОС на клиентском компьютере в JavaScript?

Свойство Window.navigator только для чтения возвращает ссылку на объект Navigator, который может быть запрошен для получения информации о приложении, выпол...

30 06 2019 16:57:52

Что такое скрипт Bash?

Сценарий Bash - это простой текстовый файл, содержащий ряд команд.  Эти команды представляют собой смесь команд, которые мы обычно будем вводить в командной строке...

29 06 2019 17:41:50

Сделать владельцем рисованные всплывающие подсказки с картинками в C#

В этом примере отображаются создаваемые пользователем всплывающие подсказки для каждой из его кнопок. Он рисует изображение слева от текста, назначенного п...

28 06 2019 2:59:55

Как создать строку Java из содержимого файла?

И Л И Использование класса сканера Следующий код Java прочитает весь файл в String. Пример Примечание: useDelimiter ("\ Z") задает разделитель в конце файла...

27 06 2019 9:47:59

Введение в потоки Thread в Java

В чем разница между Reader и InputStream в Java Процесс представляет собой экземпляр выполняемой компьютерной программы. Процесс может выполняться процессо...

26 06 2019 4:15:25

Переход на другую HTML страницу JavaScript

Вы можете перенаправить веб-страницу с помощью JavaScript, используя ряд методов. Если вам нужен скрипт переадресации JavaScript, совместимый с кросс-брауз...

25 06 2019 20:48:53

LINQ. Карманный справочник (Джозеф Албахари, Бен Албахари)

Справочник посвящен технологии LINQ (Language Integrated Query) — новой функциональной возможности языка C# и платформы .NET Framework, которая позволяет п...

24 06 2019 9:24:49

Глаза, которые следят за мышью в C#

В этом примере используется Timer с именем tmrTick для отслеживания мыши. Его обработчик событий Tick, который показан в следующем коде, обновляет глаза. О...

23 06 2019 9:38:45

События JavaScript DOM

События - это определенные действия, выполняемые конечным пользователем или самим веб-браузером. Он может запускаться в любой части документа, независимо о...

22 06 2019 19:55:45

Преобразование метафайла в PNG-файл в C#

Метафайл (файл WMF) содержит команды рисования, которые сообщают программе, как создавать изображение. Это очень полезно и позволяет изменять размер изобра...

21 06 2019 17:35:12

Выполнение бинарного усиления контраста на изображении в C#

В улучшении бинарного контраста вы меняете каждый пиксель изображения на черный или белый, в зависимости от того, светлее ли он, чем какое-либо значение от...

20 06 2019 11:58:51

Назначение оператора «/» и «//» в python?

Разделение («/»): делит левый. Отдел работает на Python так, как он математически определен. Floor Division ("//"): разделение операндов, где результатом я...

19 06 2019 23:41:56

Треугольник Флойда и Треугольник Паскаля в C#

В этой статье мы напишем программу C# для печати треугольника Флойда и Треугольника Паскаля. Треугольник Флойда Вывод: Треугольник Паскаля Вывод:   Ис...

18 06 2019 0:26:54

Получить имя первого дня недели в C#

Различные культуры начинают неделю с другого первого дня недели. Например, некоторые культуры начинают неделю с понедельника, а другие начинают с воскресен...

17 06 2019 4:58:49

Использование именованные и необязательные параметры в C#

Дополнительные параметры - одно из немногих дополнений в последних версиях Visual Studio, которые действительно полезны. Обычно я пытаюсь опубликовать прим...

16 06 2019 6:59:15

Являются ли полиморфизм, перегрузка и переопределение аналогичных понятий?

Перегрузка - это действие определения нескольких методов с тем же именем, но с разными параметрами. Переопределяющее средство переопределяет тело метода су...

15 06 2019 16:44:16

C# Программирование на языке высокого уровня (Т.А. Павловская)

Книга "C# Программирование на языке высокого уровня" представляет собой учебный курс по программированию на языке C#. Автор рассказывает в своей книге об о...

14 06 2019 2:31:18

Переопределение WndProc, чтобы увидеть, когда пользователь нажимает любой элемент управления на форме в C#

Метод WndProc формы обрабатывает сообщения, отправленные в форму операционной системой Windows. Это чрезвычайно важный метод, который позволяет формам пере...

13 06 2019 4:14:39

Каковы недостатки Python?

Недостатками Python являются: Скорость Python медленнее, чем C или C ++. Но, конечно, Python - это язык высокого уровня, в отличие от C или C ++ он не ближ...

12 06 2019 20:42:35

Класс Java Scanner

Класс Java Scanner - это класс в пакете Java.util, который позволяет пользователю считывать значения различных типов. Это простой текстовый сканер, который...

11 06 2019 23:40:59

Скопируйте массивы быстро в C#

Для копирования массива достаточно просто использовать цикл для, но для большинства массивов вы можете получить еще лучшую производительность, используя Ar...

10 06 2019 1:27:58

Как сделать изображение прозрачным фоном в C#

Метод Bitmap класса MakeTransparent изменяет все пиксели с заданным цветом на прозрачный цвет A = 0, R = 0, G = 0, B = 0 Когда программа запускается, следу...

09 06 2019 13:33:44

Как генерировать случайные целые числа в определенном диапазоне в Java

В Java 1.7 или более поздней версии стандартный способ сделать это выглядит следующим образом: min: минимальное значение max: максимальное значение Пример...

08 06 2019 8:32:34

Отображение местного времени и GMT в C#

В этом примере используется Timer для выполнения следующего кода каждые полсекунды. Вначале используется DateTime.Now для получения текущей даты и времени....

07 06 2019 3:59:13

Оператор Java break и continue

Иногда желательно пропустить некоторые утверждения внутри цикла или немедленно завершить цикл, не проверяя тестовое выражение. В таких случаях мы можем исп...

06 06 2019 15:33:42

Что такое компилятор Just-In-Time (JIT) в Java?

Компилятор Just-In-Time (JIT) является компонентом JRE (Java Runtime Environment), который повышает производительность приложений Java во время выполнения....

05 06 2019 21:20:41

Что такое singleton класс в Java?

В объектно-ориентированном программировании шаблон Singleton ограничивает создание экземпляра класса и гарантирует, что в JVM (виртуальная машина Java) сущ...

04 06 2019 15:42:32

Сравниние производительности простых арифметических операций в C#

На днях я увидел сообщение о том, что упомянутое деление было самой медленной арифметической операцией, поэтому я написал этот пример, чтобы точно увидеть,...

03 06 2019 19:39:28

Список поставщиков OLE DB, установленных в системе на C#

В этом примере показано, как вы можете указать поставщиков OLE DB, установленных в системе. ( Недавно мне пришлось запускать более старую программу в новой...

02 06 2019 0:55:26

Основа для карточной игры в C#

Цель этого примера - предоставить некоторую поддержку для создания карточной игры. В нем показано, как сделать класс для представления карт и рассказать, к...

01 06 2019 13:39:25

События флеш-кликов в C#

Если кнопка запускает длинную задачу, вы, вероятно, не хотите, чтобы пользователь мог снова нажать кнопку (или, возможно, ничего в приложении), пока задача...

31 05 2019 6:12:32

Как загрузить CSV-файл в Excel в C#

Загрузка CSV-файла (файла значений с разделителями-запятыми) в Excel не слишком сложна, если вы знаете трюки. Используя те же трюки, вы можете загрузить фа...

30 05 2019 19:57:51

Сделайте значки приложений приложений Windows Forms на соответствующих размерах в C#

Установка значка формы проста. Просто выберите форму в редакторе форм и установите ее свойство Icon. Windows использует этот значок разными способами. Напр...

29 05 2019 17:12:12

Чтение и запись текста в текстовых файлах в C#

Когда вы нажимаете кнопку «Write» кнопки примера, следующий код записывает значения в текстовые поля в файл. Этот код создает новый StreamWriter для записи...

28 05 2019 21:57:23

Калькулятор на C#

...

27 05 2019 22:42:27

Вектор в Java

Java-векторы обычно используются вместо массивов, поскольку они автоматически расширяются при добавлении новых данных. Это означает, что экземпляры Vector,...

26 05 2019 16:39:57

Как быстро научиться программировать: 7 советов

Как быстро научиться программировать? Чтобы облегчить обучение программированию и хорошо усвоить основы, необходимо правильно выбрать темп работы и использовать некоторые способы....

25 05 2019 21:31:17

PHP: обучение на примерах (А. Кухарчик)

Книга предназначена прежде всего для начинающих, но может быть полезна и опытным программистам, использующим Р Н Р. Просто и доступно изложены основы Р Н Р — п...

24 05 2019 1:12:28

Перетаскивание текста в C#

В этом примере показано, как позволить программе перетаскивать текст как между его элементами управления, так и с помощью элементов управления перетаскиван...

23 05 2019 1:55:47

Увеличьте и прокрутите изображение, нарисованное на C#

Эта программа позволяет масштабировать и прокручивать изображение, нарисованное программой. Программа содержит Panel с AutoScale, установленным в true. Вну...

22 05 2019 3:56:10

Нарисуйте простой робот в C#

Это действительно упражнение в использовании графических преобразований. Вы можете нарисовать каждый сегмент и суставы в руке, используя простые методы рис...

21 05 2019 7:34:53

Алгоритм Brute-Force в C#

В этой статье мы узнаем о реализации алгоритма в C# Brute-Force.Brute-force search или исчерпывающий поиск, также известный как генерация и тест,...

20 05 2019 7:37:23

Позвольте пользователю выбрать критерии поиска базы данных в C#

Верхняя часть этой программы содержит три столбца элементов управления. В левом столбце содержатся комбинированные поля, содержащие имена полей в таблице б...

19 05 2019 16:50:16

В чем разница между поточной и многопроцессорной обработкой?

Нить процесса означает сегмент кода процесса, который имеет свой собственный идентификатор потока, счетчик программ, регистры и стек и может выполняться не...

18 05 2019 16:58:49

Разница между Path и Classpath в Java

путь является посредником между программистом и операционной системой, чтобы информировать двоичный путь файла, где, поскольку Classpath является посредник...

17 05 2019 7:47:39

Как работать с Raycast в 2D пространстве в Unity 5

В данном уроке мы разберем как работать с Raycast в 2D пространстве в Unity 5. Для этого мы будем использовать библиотеку Physics2d...

16 05 2019 16:20:19

Как быстро выбрать уровень сжатия JPEG в C#

Пример Сжатие файлов JPG до определенного размер в C# позволяет вам отрегулировать уровень сжатия JPG файла, пока он не станет больше указанного размера. О...

15 05 2019 11:17:21

Используйте SQL-запросы для отображения данных master-detail в C#

В этом примере SQL-запросы запрашивают данные master-detail только тогда, когда это необходимо. В течение довольно долгого времени .NET-ish способ манипули...

14 05 2019 20:44:11

Языки веб программирования: список языков для WEB разработки

Какие существуют языки программирования для WEB разработки? Веб программирование в наше время является одним из самых востребовательных направлений деятельности....

13 05 2019 3:13:44

PHP 5 для чайников (Джанет Валейд)

Данная книга является введением в область Web-программирования на языке Р Н Р 5. С ее помощью можно быстро написать сценарий для Web, обеспечить взаимодейств...

12 05 2019 17:56:19

Как сделать сохранения в Unity 5 при помощи Newtonsoft.Json

В этом уроке мы разберем как сделать сохранения в Unity 5 при помощи библиотеки Newtonsoft.Json и разберем некоторые её свойства....

11 05 2019 18:25:43

jQuery Mobile. Разработка приложений для смартфонов и планшетов (Максимилиано Фиртман)

Рассмотрено использование фреймворка jQuery Mobile для создания гибких мультиплатформенных приложений для различных мобильных устройств (iPad, Kindle Fire,...

10 05 2019 19:52:26

Преобразование строки в массив символов в C#

В этой статье мы напишем программу в C# для преобразования String в массив символов.   Источник: http://www.csharpstar.com/convert-string-to-character...

09 05 2019 12:11:34

Ошибка компиляции "Can not Find Symbol" в Java

Ошибки « Не удается найти символ» обычно возникают, когда вы пытаетесь ссылаться на необъявленную переменную в коде. Ошибка « Не удается найти символ» означа...

08 05 2019 10:52:25

В чем разница между 'is' и '==' в python

Оператор is сравнивает идентичность двух объектов, в то время как оператор == сравнивает значения двух объектов. Существует разница в значении между равным...

07 05 2019 2:38:14

Полный справочник по C++ (Герберт Шилдт)

Четвертое издание энциклопедического труда Г. Шилдта " Полный справочник по C++", в котором всесторонне рассматривается и иллюстрируется основная терминолог...

06 05 2019 1:57:36

Каковы различия между ArrayList и Vector в Java?

Java ArrayList и Vector реализуют интерфейс List и поддерживают порядок вставки. Но между ArrayList и Vector есть некоторые отличия. Java ArrayList и Vecto...

05 05 2019 2:41:46

Являются ли полиморфизм, перегрузка и переопределение аналогичных понятий?

Перегрузка - это действие определения нескольких методов с тем же именем, но с разными параметрами. Переопределяющее средство переопределяет тело метода су...

04 05 2019 21:59:45

Получить и установить время файла в C#

Класс File предоставляет методы, которые получают и устанавливают время файла, включая время создания, изменения и времени доступа. Следующий код показывае...

03 05 2019 17:36:59

Использование метода File.Replace для резервного копирования файлов на C#

В этом примере показано, как использовать метод File.Replace для создания двухуровневой системы резервного копирования журнала. Пример Сделать файл журнала...

02 05 2019 22:52:29

Как найти даты в цифрах Pi в C#

Пример Поиск паттернов внутри pi в C# ищет шаблоны внутри цифры Pi. Вы можете использовать этот пример для поиска таких дат, как 4/1. В этом примере опреде...

01 05 2019 4:23:53

1С:Предприятие. Бухгалтерский учет. Секреты работы (Наталья Рязанцева)

Книга "1 С: Предприятие. Бухгалтерский учет. Секреты работы" посвящена системе программ ведения автоматизированного учета на предприятиях, в организациях и у...

30 04 2019 12:27:42

Класс Java HashSet

Класс HashSet расширяет AbstractSet и реализует заданный интерфейс. Набор представляет собой набор, который не содержит повторяющихся элементов и элементы...

29 04 2019 3:45:49

Итерации по элементам в массиве с неизвестными параметрами в C#

В этом примере показано, как вы можете перебирать элементы в массиве с неизвестным числом измерений. Когда он запускается, программа выполняет следующий ко...

28 04 2019 9:34:35

Как сравнить производительность методов сравнения строк в C#

В этом примере используется следующий код для создания четырех строк: Затем он использует несколько методов для сравнения первой строки с другими. Например...

27 04 2019 5:50:27

Изучаем C++ через программирование игр

Если вы хотите научиться программировать первоклассные игры, вам просrо необходимо изучить язык С++. Эrа книга поможет вам освоить разработку игр с самых а...

26 04 2019 17:44:30

Как аннотации работают на Java?

Аннотации Java используются для предоставления метаданных для Java-кода, хотя они не являются частью самой программы. Метаданные - это данные о данных. Так...

25 04 2019 3:42:10

Анимация проблемы Башни Ханоя в C#

Следующий метод AnimateMovement перемещает диск по прямой линии из текущего местоположения в новый. Код вычисляет количество пикселей в секунду, которое он...

24 04 2019 3:36:40

Рисуем гладкий текст в GraphicsPath в C#

Вы можете установить свойство TextRenderingHint объекта Graphics для AntiAliasGridFit, чтобы нарисовать гладкий текст. Однако, если вы поместите текст в об...

23 04 2019 9:23:58

Загрузка статического и динамического класса в Java

Концепция загрузчика классов, один из краеугольных камней виртуальной машины Java (JVM). В нем описывается поведение преобразования именованного класса в б...

22 04 2019 7:37:58

Среда разработки Intellij idea

IntelliJ IDEA — интегрированная среда разработки программного обеспечения на многих языках программирования от компании JetBrains. В 2001 году была выпущен...

21 04 2019 9:29:51

Выделение эллипса в программе WPF с использованием C#

В этом примере показано, как вы можете визуализировать эллипс в программе WPF. Обычно для рисования фигур в WPF вы используете какой-то объект. Вы можете д...

20 04 2019 15:23:21

Язык программирования Python (Д.С.Откидач)

Python является простым и, в то же время, мощным интерпретируемым объектно-ориентированным языком программирования. Он предоставляет структуры данных высок...

19 04 2019 11:38:53

Чтение и запись текста в текстовых файлах в C#

Когда вы нажимаете кнопку «Write» кнопки примера, следующий код записывает значения в текстовые поля в файл. Этот код создает новый StreamWriter для записи...

18 04 2019 18:54:24

Мифы о программировании

Многие люди считают профессию программиста одной из самых сложных, поэтому отказываются от идеи освоить её. Но вокруг IT существуют мифы, которые нужно раз...

17 04 2019 7:34:21

Как создать инвентарь в Unity 5 при помощи UI с выбором предмета

В этом уроке мы разберем как создать инвентарь для RPG игр (или их подобрых) с выбором предмета в Unity 5 при помощи UI. И реализуем их динамическую выгруку...

16 04 2019 4:34:32

Проверьте тип текстовых данных в C#

Следующий код показывает, как программа определяет, содержит ли значение, введенное в первом TextBox, допустимый int. Код объявляет переменную значение. За...

15 04 2019 7:41:45

Разница между Java и JavaScript?

Хотя оба имеют похожие имена, оба являются двумя совершенно разными языками программирования. Java - это полнофункциональный, универсальный, язык программи...

14 04 2019 21:20:20

Переменные и типы данных JavaScript

Данные могут быть разных типов. Типы данных зависят от значений, которые удерживаются переменной. Следующий урок охватывает динамические типы данных JavaSc...

13 04 2019 22:18:28

Смотрите, где парабола и гипербола пересекаются в C#

В этом примере показано, как пересекаться парабола и гипербола. Предыдущий пример из четырех частей здесь , здесь < / a>, здесь , и здесь объясняет, как на...

12 04 2019 20:17:57

Ассемблер - это просто. Учимся программировать. (Калашников О. А.)

Подробно и доходчиво объясняются все основные вопросы программирования на ассемблере. Рассмотрены команды процессоров Intel, 16- и 32-разрядные регистры, о...

11 04 2019 19:15:24

Создаем класс вне любого оператора пространства имен в C#

Когда вы создаете класс в C#, Visual Studio автоматически помещает его в оператор пространства имен. Если имя вашего проекта isto_remove_namespace, то по у...

10 04 2019 21:43:12