1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/climpeaker-zb_java0718

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

zb_java0718

Обучающие цели

1. Анализ HelloWorld
2. Типы данных и операторы# Заметки с лекции

Анализ программы HelloWorld

1. Синтаксические знания HelloWorld

Язык Java чувствителен к регистру; Одна строка кода в языке Java заканчивается точкой с запятой (;); Одну строку кода можно разбить на несколько строк; В одном файле Java может быть только один публичный класс (public); Если в файле Java есть публичный класс, то имя файла должно совпадать с именем этого класса; Метод main имеет фиксированную структуру; он является точкой входа для выполнения программы JVM; То есть выполнение файла Java начинается с метода main; Файл Java выполняет только метод main; другие методы могут быть выполнены только если они вызываются из метода main (в последующих разделах); В одном публичном классе может быть только один метод main; В одном файле Java можно определить несколько классов; но только один из них может быть публичным; Правила программирования требуют, чтобы в одном файле Java был только один класс;

Код [com.yuw.hello.HelloWorld]

public class HelloWorld {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("HelloWorld! ");
    }
}

Анализ программы HelloWorld

0. Дополнительные сведения

Основы компьютера В компьютере только двоичная система счисления (0/1); Одна единица информации (бит) представляет собой 1 или 0; 8 бит составляют 1 байт; 1024 байта = 1 килобайт (Кб); 1024 килобайта = 1 мегабайт (Мб); 1024 мегабайта = 1 гигабайт (Гб); 1024 гигабайта = 1 терабайт (Тб); 1024 терабайта = 1 петабайт (Пб); 1024 петабайта = 1 эксабайт (Эб);

1. Переменные

  Переменная — это значение, которое может изменяться;
  Объявление переменной:
     Синтаксис:
         Тип данных имя переменной;
  Инициализация переменной:
     Синтаксис:
         имя переменной = начальное значение;
  Объявление и инициализация могут быть объединены:
     Синтаксис:
         Тип данных имя переменной = начальное значение;                 
  Анализ:
     В данном контексте переменные относятся к локальным переменным;
     Локальные переменные не могут повторно объявляться в одном методе, но могут повторно использоваться;

2. Типы данных

java поддерживает следующие типы данных:
     Объектные типы (ссылающиеся типы): подклассы Object, массивы
     Базовые типы: 8 типов
2. 1 8 базовых типов и их размеры и диапазоны
  Целочисленные типы: без дробной части;
      byte    1 байт
      short   2 байта
      int     4 байта (по умолчанию)
      long    8 байт (используется суффикс L или l для обозначения long)
  Дробные типы: с дробной частью;
      float   4 байта (используется суффикс F или f для обозначения float)
      double  8 байт (по умолчанию)
  Тип char:
      char    2 байта
	Тип char представляет один символ, заключенный в одинарные кавычки '', в одинарных кавычках может быть только один символ, который может быть буквой, кириллицей или Unicode кодом;     Логический тип:
      boolean принимает значения true или false     
   Внимание:
(1) Целочисленные константы по умолчанию имеют тип int, а дробные константы — тип double;
(2) Для целочисленных констант типа long используется суффикс L или l, а для дробных констант типа double — F или f;
  Код [com.yuw.datatype.Test01]:
  ```java
	// Использование типов данных
	// Объявление и инициализация переменных
	int iAge = 20;
	// Объявление
	int iAge2;
	iAge2 = 20;
	iAge2 = 21;
	// Объявление типа byte
	byte bAge = 20;
	// Объявление типа long
	long lAge = 2000000000000L; // Целочисленная константа по умолчанию имеет тип int
	// Символьный тип
	char ch0 = 'a'; // Английский символ
	char ch1 = '小'; // Китайский символ
	char ch3 = '1'; // Число
	char ch2 = '\uAF45'; // Символ в Unicode кодировке
	System.out.println("小明年龄为:" + iAge2); 
  ``````markdown
  1. 2 Преобразование между 8 основными типами данных Преобразование типов данных имеет два способа:
  • По умолчанию;
  • Принудительное. По умолчанию преобразование типов данных:
  • Типы данных автоматически преобразуются из более низкого (меньший диапазон значений) в более высокий (больший диапазон значений);
  • byte -> short -> int -> long -> float -> double;
  • char -> int -> long -> float -> double;
  • float -> double; Отношения преобразования типов:
  • Символьный тип -> Целочисленный тип -> Дробный тип Внимание:
  • При присваивании значений переменным типа byte, short, char, если значение константы не выходит за пределы диапазона данного типа, можно присвоить значение напрямую.
  • Если значение выходит за пределы диапазона, необходимо использовать принудительное преобразование типов.
  • Например:
byte bVal0 = 127; 
byte bVal1 = 128; // 128 выходит за пределы диапазона типа byte, поэтому значение константы не может быть присвоено напрямую

Код [com.yuw.datatype.Test01]:

/////////////////////// Преобразование между основными типами/////////////////////////
// Преобразование целочисленных типов от высокого к низкому по умолчанию
byte bVal0 = 127;
// byte bVal1 = 128; // 128 выходит за пределы диапазона типа byte, поэтому значение константы не может быть присвоено напрямую
short sVal0 = bVal0;
int iVal0 = sVal0;
// short преобразуется по умолчанию в long
long lVal0 = sVal0;

// По умолчанию конвертация между типами float float fVal0 = 3.14F; double dVal0 = fVal0; // По умолчанию конвертация типа char в целочисленный тип char chVal0 = 'a'; // Тип char может быть конвертирован по умолчанию в целочисленные типы int и long // short sVal1 = chVal0; int iVal1 = chVal0; Конвертация типов данных по умолчанию в выражениях: Если выражение содержит несколько типов данных, все типы данных в выражении по умолчанию конвертируются в самый высокий тип данных; Тип данных результата выражения зависит от самого высокого типа данных в выражении; То есть, тип данных результата выражения будет самым высоким типом данных; Обратите внимание: Если выражение содержит типы данных byte, char, short, то результатом выражения будет тип int; Код [com.yuw.datatype.Test01]:java /////////////// Конвертация типов данных по умолчанию в выражениях ////////////////// byte bVal20 = 20; char chVal20 = 'a'; short sVal20 = 31; int iVal20 = 21; // Выражение, содержащее типы данных byte, char, short, будет иметь тип int; int chVal30 = bVal20 + chVal20 + sVal20; int iVal31 = sVal20 + iVal20; Принудительная конвертация типов данных: Принудительная конвертация обычно происходит от более высокого (шире диапазона) к более низкому (узкий диапазон) типу данных; Принудительная конвертация типов данных может привести к переполнению (потере данных); Синтаксис: целевой_тип переменная = (целевой_тип) переменная_для_конвертации; Обратите внимание: целевой_тип все еще является типом данных Java; () является оператором принудительной конвертации; Код [com.yuw.datatype.Test01]: java /////////////// Принудительная конвертация типов данных в выражениях ////////////////// int iVal30 = 20000000; // Принудительная конвертация типа int в тип short short sVal30 = (short) iVal30; // Может привести к переполнению System. out. println("Принудительная конвертация: " + sVal30);```markdown

3. Операторы

Операторы могут быть разделены на: унарные, бинарные и тернарные операторы в зависимости от количества операндов, участвующих в операции.

3.1 Арифметические операторы

Операторы: + - * / % ++ -- / - деление, обратите внимание: результат целочисленного деления всегда будет целым числом, если результат содержит дробную часть, она будет отбрасываться; % - остаток от деления, результатом является остаток от деления двух чисел;

      • / % - все являются бинарными операторами; ++ и -- - это унарные операторы; Автозначение и автозменение: операции выполняются на основе текущего значения переменной, автоматически увеличивая или уменьшая значение на 1; Синтаксис:
переменная++;
переменная--;
++переменная;
--переменная;

Выражения автозначения и автозменения могут быть использованы отдельно для вычислений; Анализ: В операциях автозначения и автозменения есть два значения:

  • Значение выражения (значение выражения после выполнения автозначения или автозменения);
  • Собственное значение переменной (значение переменной после выполнения выражения автозначения или автозменения); Законы операций: Автозначение:
Значение выражения		Значение переменной i
i + 1					i
```++i (сначала увеличение)	i+1			i+1
 i++ (после увеличения)	i			i+1

Автозамена:

Значение выражения		Значение переменной i
--i (сначала уменьшение)	i-1			i-1
i-- (после уменьшения)	i			i-1

Заключение: Независимо от того, увеличивается ли значение переменной сначала или после операции, его значение всегда увеличивается на 1; Значение выражения: увеличивается на 1 при сначала увеличении, остается неизменным при после увеличении; Код [com.yuw.datatype.Test02]:

/**
 * Арифметические операторы
 */
private static void test01() {
    // Деление
    int iVal0 = 10;
    int iVal1 = 3;
    int iVal2 = iVal0 / iVal1;
    System.out.println("iVal2=" + iVal2); // Результат целое число, дробная часть отбрасывается
    double iVal3 = iVal0 / 3.0; // 3.0 по умолчанию является типом double
    System.out.println("iVal3=" + iVal3);
    // Остаток от деления
    int iVal10 = 0 % 2; // Остаток равен 0
    System.out.println("0%2=" + iVal10);
    // Операция сначала увеличения
    System.out.println("=========================");
    int iVal21 = 1;
    System.out.println("Сначала увеличение до операции: iVal21=" + iVal21);
    int iVal31 = ++iVal21; // Сначала увеличение
    System.out.println("После операции сначала увеличения: iVal21=" + iVal21);
    System.out.println("После операции сначала увеличения: iVal31=" + iVal31);
    System.out.println("=========================");
    // Автозамена и автодобавление
    int iVal20 = 1;
    System.out.println("После увеличения до операции: iVal20=" + iVal20);
    // Выражение автодобавления
    int iVal30 = iVal20++; // Выражение после увеличения
    System.out.println("После увеличения: iVal20 = " + iVal20);
    System.out.println();
}
``````java
println("После увеличения: iVal30=" + iVal30);
}

3. 2 Операторы отношения [сравнение]

Сравнение двух операндов. Это бинарные операторы. Основные операторы: > < >= <= == != = Результат операции отношения — это значение типа boolean; Код [com.yuw.datatype.Test02]:

/**
 * Операторы отношения
 */
private static void test02() {
    int iVal1 = 10;
    int iVal2 = 11;
    boolean isResult0 = ++iVal1 > iVal2++; // false
    System.out.println("Результат операции: " + isResult0);
}

3. 3 Операторы присваивания

Присваивает значение выражения или числового константа указанной переменной; бинарные операторы; Операторы: = += -= *= /= %= Оператор +=: i += j; эквивалентно: i = i + j; i %= j; эквивалентно: i = i % j; Внимание: += -= *= /= %= не могут использоваться вместе с объявлением переменной; Например: int i += j; Код [com.yuw.datatype.Test02]:

/**
 * Операторы присваивания
 */
private static void test03() {
    int iVal0 = 10;
    int iVal1 = 0;
    iVal1 += iVal0;
}
```		byte bVal0 = 1;
		// +=
		bVal0 += 1; // 1 представляет собой единицу сдвига
		// эквивалентно
		bVal0 = (byte) (bVal0 + 1);

	}
	```
#### 3.4 Битовые операторы
	операции над каждым битом двоичного числа;
	(числа, участвующие в операциях, представлены битами)
	Операторы: ~  &  | ^ >>  <<  >>>
	Синтаксис:
	    ~: операция инвертирования, унарный оператор;
	       0 становится 1, 1 становится 0;
	    &: операция "и", бинарный оператор;
	       1&1=1
	       1&0=0
	       0&1=0
	       0&0=0
	       	оба значения равны 1, результат 1, в остальных случаях 0;
	    |: операция "или", бинарный оператор;
	       1|1=1
	       1|0=1
	       0|1=1
	       0|0=0
	       	оба значения равны 0, результат 0, в остальных случаях 1;
	    ^: операция "или-исключающее", бинарный оператор;
	       1^1=0
	       1^0=1
	       0^1=1
	       0^0=0
	       	значения равны, результат 0, значения не равны, результат 1;    
	Код [com.yuw.datatype.Test02]:
	```java
		/**
	 * Битовые операторы
	 */
	private static void test04() {
		int iVal10 = 3;
		int iVal11 = 4;
		//// следующий код не требуется для изучения////
		// инвертирование по битам
		int iVal20 = ~iVal10; // 4 -4     0000 0011 (дополнительный код) ---  1111 1100 (дополнительный код)---1000 0100 (основной код)
		// "и", "или", "или-исключающее"
		int iVal21 = iVal10 & iVal11; // 0   0011 0100  0000
		int iVal22 = iVal10 | iVal11; // 7              0111
		int iVal23 = iVal10 ^ iVal11; // 7              0111
	}
	```		System.out.println("iVal20=" + iVal20);
		System.out.println("iVal21=" + iVal21);
		System.out.println("iVal22=" + iVal22);
		System.out.println("iVal23=" + iVal23);
	}	
	```
###### Дополнительные сведения о битовых операциях
	Основы компьютера: основной код, дополнительный код, дополнительный код; (подробное объяснение будет дано позже)
	Принцип: все числа в компьютере хранятся в виде дополнительного кода; [в компьютере отрицательные числа хранятся в виде дополнительного кода]
	
#### Участие в проекте1. Создайте форк этого проекта
2. Создайте ветку Feat_xxx
3. Подайте код
4. Создайте Pull Request


#### Специальные возможности Gitee

1. Используйте Readme\_XXX.md для поддержки различных языков, например Readme\_en.md, Readme\_zh.md
2. Официальный блог Gitee [blog.gitee.com](https://blog.gitee.com)
3. Вы можете [https://gitee.com/explore](https://gitee.com/explore) для просмотра лучших проектов с открытым исходным кодом на Gitee
4. [GVP](https://gitee.com/gvp) полное название "самые ценные проекты Gitee", это оценка лучших проектов с открытым исходным кодом на Gitee
5. Официальное руководство Gitee [http://git.mydoc.io/](http://git.mydoc.io/)
6. Секция "лица Gitee" представляет раздел, посвященный демонстрации достижений членов Gitee [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Типы данных и операторы Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Язык

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/climpeaker-zb_java0718.git
git@api.gitlife.ru:oschina-mirror/climpeaker-zb_java0718.git
oschina-mirror
climpeaker-zb_java0718
climpeaker-zb_java0718
master