Статьи

Понимание переменных Java и типов данных

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

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

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

Переменные Java

Переменные могут содержать данные, и эти данные могут быть изменены в течение срока действия нашей программы. Переменная должна иметь тип, имя и иметь какие-то данные для хранения. Наиболее широко используемым типом данных в Java является символьная строка, представленная классом Java String . Строка, такая как «SitePoint», является просто экземпляром класса String .

Именование переменных

Есть несколько правил, которым вы должны следовать, и несколько, которые вы должны соблюдать. Имена переменных в Java чувствительны к регистру и могут содержать неограниченное количество букв и цифр. Однако имена переменных должны начинаться с буквы, символа подчеркивания _ или знака доллара $ .

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

фасоль

Использование переменных

Давайте создадим каркас основного класса нашего приложения, чтобы увидеть, как мы можем хранить каждую из вышеупомянутых точек данных о нашем приложении в String переменных:

 public class SitePointGram { public static void main(String[] args) { String nameOfApp = "SitePointGram"; String numberOfUsers = ""; String numberOfPhotos; String numberOfComments = null; //... } } 

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

В первой строке нашего main метода мы сохраняем имя нашего приложения в nameOfApp переменной nameOfApp и в нем хранятся данные «SitePointGram». В следующей строке есть String переменная, которая будет хранить количество пользователей в нашем приложении. Обратите внимание, что он хранит пустую строку "" . Держите эту мысль, когда мы переходим к следующим двум строкам.

Каждая переменная в Java имеет значение по умолчанию; значение по умолчанию для строковых переменных — null , «ничего». Если мы не знаем значение переменной во время объявления, мы можем пропустить явную инициализацию его значением и позволить Java неявно предоставить ему соответствующее значение по умолчанию. Это именно то, что мы делаем с переменной numberOfPhotos . Аналогичным образом, в четвертой строке мы инициализируем numberOfComments переменную numberOfComments для null , хотя мы не обязаны это делать. Важно понимать, что пустая строка является действительной символьной строкой, хотя и пустой, в то время как null означает, что переменная еще не имеет допустимых данных. Давай продолжим.

SitePointGram становится популярным, и люди стекаются к нему. Давайте представим рост нашего приложения на Java:

 public static void main(String[] args) { //... numberOfUsers = "500"; numberOfPhotos = "1600"; numberOfComments = "2430"; //.. } 

После инициализации наших String переменных стало очевидно, что в нашем приложении 500 пользователей, 1600 общих фотографий и всего 2430 комментариев по этим фотографиям. У нас все хорошо, поэтому пришло время научиться использовать типы данных в Java.

Типы данных Java

В настоящее время все наши точки данных хранятся в String переменных, хотя некоторые из них являются числами. Строки хороши для представления символьных строк, таких как текст, но когда мы хотим представить числа и другие типы данных (и выполнить операции с этими данными), мы можем использовать типы данных, предоставленные Java, или создать свои собственные.

Давайте посмотрим, как мы можем более правильно хранить наши числовые точки данных в переменных, чтобы мы могли использовать их так, как мы ожидаем:

 public static void main(String[] args) { String appName = "SitePointGram"; boolean appIsAlive = true; int numUsers = 500; int numPhotos = 1600; int numComments = 2430; //... } 

Отойдя от нашего оригинального метода main , мы получили новый блок кода с новыми переменными соответствующих типов данных. В первой строке тела нашего main метода переменная, содержащая имя нашего приложения, теперь более точна: вместо nameOfApp у нас есть appName . На следующей строке у нас есть boolean переменная, которая хранит состояние нашего приложения. boolean может быть только true или false и поэтому лучше всего, когда вы хотите сохранить точку данных, которая представляет достоверность; в нашем случае это правда, что наше приложение живо, пока мы не должны закрыть его для обслуживания. Следующие три переменные имеют тип int . Тип данных int представляет целочисленные значения в Java. Следуя тому же шаблону, что и appName , вместо того, чтобы называть наши appName переменные по numberOfX , мы должны сделать numX чтобы быть точным, сохраняя читабельность.

Типы данных int , boolean и double — это три из восьми примитивных типов данных в Java . Примитивные типы данных — это специальные значения, а не объекты, созданные из класса, предоставляемого Java. Помните, что строки являются экземплярами класса String и поэтому являются объектами, а не примитивами. Значением по умолчанию для числовых типов данных является 0 и false для boolean .

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

 //a new user joined, increase the number of users by 1 numUsers += 1; //multiply the number of photos by 2 numPhotos = numPhotos * 2; //get the average number of photos by doing division double avgPhotosPerUser = 1.0 * numPhotos / numUsers; 

Последняя переменная в нашем main методе содержит значение с плавающей запятой среднего числа фотографий на пользователя, и это представлено double типом данных. Мы получили это, разделив количество фотографий на количество пользователей. Обратите внимание, что мы умножили первое число на 1,0, чтобы результат не округлялся до ближайшего целого числа. Мы можем хранить число с плавающей запятой в виде числа с float или double ; единственное отличие здесь в том, что double (64-битный) может содержать гораздо больший диапазон чисел, чем float (32-битный), и по этой причине он используется чаще.

Последнее, что нужно сделать, это посмотреть, как мы можем представлять наши данные в наших собственных типах данных.

 String user1 = "id: 1, username: LincolnWDaniel, isOnline: true"; 

Хотя было бы легко создать кучу строк, содержащих информацию о пользователях, как у нас в user1 , было бы лучше создать класс для создания пользовательских объектов:

Пользовательские типы данных Java (классы)

 public class User { public static int numUsers = 0; private int id; private String username; private boolean isOnline; /*other information about this user, perhaps a list of associated photos*/ public User(String username) { id = numUsers++; this.username = username; this.isOnline = true; System.out.println(username + " signed up!"); } public void logOn() { isOnline = true; printOnlineStatus(); } public void logOff() { isOnline = false; printOnlineStatus(); } private void printOnlineStatus() { System.out.println(username + " is online: " + isOnline); } //... } 

Там у нас есть класс с именем User . Этот класс просто определяет свойства и поведенческие экземпляры, созданные из него. Свойства этого класса являются просто переменными различных типов данных, которые будут содержать информацию о пользователе в нашем приложении. Экземпляр класса User может иметь информацию о себе от своего идентификационного номера до своего имени пользователя, и его онлайн-статус хранится в boolean переменной, которая может обновляться при входе или выходе пользователя из системы. Когда пользователь создается или входит в систему или выключается, мы печатаем эту информацию в консоли.

Каждый раз, когда в нашем приложении создается новый пользователь, numUsers переменной numUsers увеличивается на единицу, так что наше приложение знает, сколько пользователей постоянно. Вы можете добавить больше информации в этот класс, добавив больше переменных экземпляра. Теперь давайте создадим экземпляр нашего нового типа данных User в основном методе нашего приложения:

 public static void main(String[] args) { String appName = "SitePointGram"; boolean appIsAlive = true; /*declare a new variable of type User and store a new User instance with the name of "Lincoln" in it*/ User lincoln = new User("Lincoln"); //log lincoln off lincoln.logOff(); //print out the number of users in our app System.out.println("Number of users: " + User.numUsers); //... } 

В этом блоке кода мы снова изменили наш main метод. Первые две строки остались без изменений, но теперь у нас есть три новые строки. Третья строка в методе создает новый экземпляр User или объект и сохраняет его в переменной с именем «lincoln», следующая строка записывает lincoln из нашего приложения, а следующая строка выводит количество экземпляров User в нашем приложении: доступ к public static переменной numUsers из класса User . Важно отметить, что static переменные класса принадлежат классу, а не экземплярам этого класса, поэтому нам не нужен экземпляр User для доступа к numUsers .

Вывод

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

Ссылки:
Документация Oracle по строкам Java
Документация Oracle по примитивным типам данных Java