## Basic data type

Numeric:

Integer type (4 kinds):

Byte (1 byte): range (- 128 ~ 127);

short(2 bytes): range (- 32768 ~ 32767);

int(4 bytes);

long(8 bytes): if the data is defined as long and exceeds the range of int, add "L" (recommended) or "L" (the default is int. if it exceeds the range of int, the compilation will report an error, and if it does not exceed the range, it will not);

Floating point type (2):

Float (4 bytes): the first bit is the sign bit, the next 8 bits represent the exponent, and the next 23 bits represent the mantissa; If the specified floating-point type is float, add "F" or "F" (double by default, otherwise the compilation prompt may lose precision);

double(8 bytes): the first bit is the sign bit, the next 11 bits represent the exponent, and the next 52 bits represent the mantissa;

Form of floating point number:

- a. Decimal number form: it must contain a decimal point (1.68, 168.0 and. 168), otherwise it is regarded as int type;
- b. Scientific counting method: only floating-point values can be used, such as 1.68e2(168.0), 1.68E2 and 168e2(16800.0);

Special floating point number:

- a. Positive infinity: divide a positive number by 0.0, and use the positive of Double or Float_ Infinity means that all positive infinities are mostly equal;
- b. Negative infinity: divide a negative number by 0.0, and use the negative of Double or Float_ Infinity means that all negative infinities are mostly equal;
- c. Non number: 0.0/0.0, represented by NaN of Double or Float, all non numbers are not equal;

Character type: char(2 bytes)

Boolean: boolean(1 byte)

## Learning tutorials for basic data types:

Java300 set zero basic video tutorial for beginners_ Java 300 set zero basic tutorial_ Introduction to java video foundation consolidation tutorial_ Introduction to Java language_ Beep beep beep_ bilibili [highly recommended]java data structure video tutorial_ Practical course of data structure and algorithm_ Beep beep beep_ bilibili

Basic knowledge of Java data structure and algorithm_ Java data structure and algorithm foundation to advanced_ Common data structure and algorithm problems in Java interview_ Sorting algorithm_ Recursion_ Half query_ Stack and queue_ Linked list_ Beep beep beep_ bilibili

Let's explain the basic data types in detail:

## Basic data type

### Integer variable int

public static void main1(String[] args) { int a = 10; System.out.println(a); System.out.println(Integer.MAX_VALUE); System.out.println(Integer.MIN_VALUE); System.out.println(Integer.MAX_VALUE+1); System.out.println(Integer.MIN_VALUE-1); }

int represents an integer variable, which occupies 4 bytes (conversion: bit-8 - > byte-1024 - > kb-1024 - > mb-1024 - > gb-1024 - > TB) max in the code of the above example_ Value is the maximum value, MIN_VALUE is the minimum value.

### long integer variable

public static void main2(String[] args) { long a = 10L;//10 is the default integer type by the system. Although short types can assign values to long types, assigning values to each other with corresponding types is more secure System.out.println(a); System.out.println(Long.MAX_VALUE); System.out.println(Long.MIN_VALUE); }

In general, the default input integer constant in Java is int, so 10 is defaulted as integer by the system. Although short types can assign values to long types, assigning values to each other with corresponding types is more secure

short integer variable

public static void main7(String[] args) { short b = 12; System.out.println(b); System.out.println(Short.MIN_VALUE); System.out.println(Short.MAX_VALUE); }

Byte type byte

public static void main6(String[] args) { byte b = 12; byte c = 21; System.out.println(b+" "+c); System.out.println(Byte.MIN_VALUE); System.out.println(Byte.MAX_VALUE); }

When the maximum value of byte type is added by one, it should return to the minimum value theoretically, but the output is 128. This phenomenon is the result of integer promotion. 1 defaults to integer. When the two are added, the byte type is promoted to integer by default, and the final output is also integer.

## Floating Point Types

### Double precision floating point type double

public static void main3(String[] args) { double n = 9.5; System.out.println(n); System.out.println(Double.MIN_VALUE); System.out.println(Double.MAX_VALUE); int a=1; int b=2; System.out.println(a /b); double num = 1.1; System.out.println(num * num); }

The system defaults to the most commonly used floating-point type variable

### Single precision floating point type float

public static void main4(String[] args) { float f = 12.3f; System.out.println(f);//An error will be reported. In 12.3, the system defaults to double type. If f is directly assigned, precision may be lost. //It reflects the security of Java and ensures the accuracy and safety of data. C language will only warn and Java will prohibit the passage }

The system prohibits a double precision variable from being assigned to a single precision variable, which will directly report an error and cannot run.

It embodies the security of Java and ensures the accuracy and security of data

The C language will only warn and Java will prohibit the passage, indicating that the C language is a weak language and Java is a strong language.

### Character variable char

public static void main5(String[] args) { char ch = 'a'; System.out.println(ch); char ch2 = 'high'; System.out.println(ch2); char ch3 = 97;//Unicode character set code that contains more characters than ASCII System.out.println(ch3); }

Java uses the Unicode character set, which contains more characters and even Chinese characters. The character code is 0-65535, including ASCII code, of which 'a' is No. 65 and 'a' is No. 97.

When we compile Java, if the code contains Chinese characters, the compilation fails because the GBK character set is generally used by default in the Windows system and the UTF8 character set is used in the Mac. Different mechanisms will lead to mismatches.

As long as we declare to use UTF-8 character set when compiling

javac -encoding UTF-8 dataType.java

boolean type

public static void main(String[] args) { boolean n = true; System.out.println(n); }

Java's unique variable type has no specified size, only right and wrong.

## reference type

Use the classic common type String type to explain:

String type

Common reference types

public static void main(String[] args) { String s = "Hello"; System.out.println(s); }

Escape character

We are using character expressions. Some characters are regarded by the system as characters with special purposes, such as double quotation marks and single quotation marks. When we want to output or use these characters, we need to use escape characters:

String splicing

Direct use + splicing

String a = "hello"; String b = "world"; String c = a + b; System.out.println(c);

Strings can be spliced directly with numbers

String str = "result ="; int i = 10; int j = 20; String result = str + i + j; System.out.println(result);

When one of the + expressions is a string, the basic data type is spliced according to the string. When there is no string on both sides of +, it is calculated according to the original type.

## Constant:

Constant refers to the value whose type and value cannot be changed during program operation, mainly in the following two forms:

## literal constant

## final keyword modifier constant

final int a = 10; a = 20;//Compilation error: unable to assign value to final variable

Constants cannot be modified while the program is running.

Constants can only be initialized once.

## operator

Arithmetic operators:

ยท + - * / %

Division operation

public static void main(String[] args) { System.out.println(5/2);//2 System.out.println(5.0/2);//2.5 System.out.println((float)5/2);//2.5 System.out.println((float)(5/2));//2.0 }

be careful:

int / int result or int.

When the precision of one of the / is greater, the type promotion occurs, as shown above: float / int = float

The fourth is the strong conversion of 5 / 2 itself, not a single party, so 5 / 2 is still calculated in the form of int / int.

Remainder operation

public static void main(String[] args) { System.out.println(10%3);//1 System.out.println(-10%3);//-1 System.out.println(10%-3);//1 System.out.println(-10%-3);//-1 }

The plus or minus of the remainder depends on the plus or minus of the divisor.

%You can modulo not only int, but also double

System.out.println(11.5 % 2.0); // Operation results 1.5

Whether it is remainder or division, 0 cannot be used as divisor, and runtime exception.

Incremental assignment operator + = - = * = / =%=

Auto increment / Auto decrement operator + + –

The above two are the same as C language.

Relational operator

== != < > <= >= public static void main(String[] args) { int a = 10; int b = 20; System.out.println(a == b); System.out.println(a != b); System.out.println(a < b); System.out.println(a > b); System.out.println(a <= b); System.out.println(a >= b); }

The outputs of relational operators are of boolean type

Logical operator

There are three main logical operators:

&& || !

Note: the operands (operands are often the result of relational operators) and return values of logical operators are Boolean v

Logic and&&

Rule: if both operands are true, the result is true, otherwise the result is false

Logical or||

Rule: if both operands are false, the result is false, otherwise the result is true

Logical non!

Rule: the operand is true and the result is false; The operand is false and the result is true (this is a unary operator with only one operand)

Logical operators can only act on data of boolean type.

Short-circuit evaluation

&&And | observe the rules of short circuit evaluation

System.out.println(10 > 20 && 10 / 0 == 0); // Print false System.out.println(10 < 20 || 10 / 0 == 0); // Print true

We all know that calculating 10 / 0 will cause the program to throw an exception But the above code works normally, indicating that 10 / 0 is not really evaluated

Conclusion:

- For & &, if the left expression value is false, the overall value of the expression must be false, and there is no need to evaluate the right expression
- For |, if the left expression value is true, the overall value of the expression must be true, and the right expression does not need to be evaluated

Bitwise Operators

The smallest unit of data operation in Java is not bytes, but binary bits

There are four bitwise operators:

& | ~ ^

Bit operations represent operations on binary bits In computers, binary is used to represent data (sequence composed of 01). Bitwise operation is to calculate in turn according to each bit of binary bit

- Bitwise AND &: if both binary bits are 1, the result is 1, otherwise the result is 0
- Bitwise or |: if both binary bits are 0, the result is 0, otherwise the result is 1
- Reverse by bit ~: if this bit is 0, it turns to 1; if this bit is 1, it turns to 0
- Bitwise exclusive or ^: if the binary bits of two numbers are the same, the result is 0, and if they are different, the result is 1

Shift Operators

There are three shift operators:

<< >> >>>

They all operate according to binary bits

- Move left < <: don't use the leftmost position, and fill 0 on the rightmost position
- Shift right > >: the rightmost bit is not needed, and the leftmost sign bit is filled (positive number is filled with 0, negative number is filled with 1)

Note: the speed of bit operation is greater than that of basic operation.

- Unsigned shift right > > >: the rightmost bit is not needed, and the leftmost bit is filled with 0

be careful:

- Shift left by 1 bit, equivalent to the original number * 2 Shift N bits to the left, which is equivalent to the nth power of the original number * 2
- Shift 1 bit to the right, equivalent to the original number / 2 Shift N bits to the right, which is equivalent to the nth power of the original number / 2
- Because the shift efficiency of computer calculation is higher than that of multiplication and division, when a code exactly multiplies and divides to the nth power of 2, it can be replaced by shift operation
- Moving negative digits or shifting too many digits is meaningless

Conditional operator

There is only one conditional operator:

Expression 1? Expression 2: expression 3

- When the value of {expression 1} is true, the value of the whole expression is the value of {expression 2};
- When the value of expression 1 is false, the value of the whole expression is the value of expression 3

Simplified writing of conditional judgment statements

Operator precedence

System.out.println(1 + 2 * 3);

The result is 7, indicating that 2 * 3 is calculated first, and then 1+

Another example:

System.out.println(10 < 20 && 20 < 30);

At this time, it is obvious to calculate 10 < 20 and 20 < 30 first, and then calculate & & Otherwise, operations like 20 & & 20 are syntactically incorrect (& & operands can only be boolean)

There is priority between operators We don't have to remember the specific rules Just put parentheses in the code that may be ambiguous

## After learning data types, you can give yourself an exercise to test yourself:

data type

1. What are the basic data types and how many bits do they occupy?

2. Define a variable with 8 basic types respectively?

3. Constants in Java

operator

- Arithmetic operators: + (add) - (subtract) * (multiply) / (divide)% (take remainder) -- (arithmetic operators are tested with examples respectively)
- Logical operators: & (and) | (or)! (non) ^ (XOR) & & (short circuit and) | (short circuit or) -- (list cells are tested separately, and the table I listed in class)
- Comparison operator: = =! = > > = <<=
- Single operator (one operand): + + -- (test the effect of placing + + and -- before and after variables respectively)
- Bitwise operators: > > (signed shift right) < < (signed shift left) > > (unsigned shift right) (just understand)
- Ternary operator: expression? Value 1: value 2 (test with your own example, important)