When learning the basics of JAVA, I believe everyone, like me, always confuses basic data types and reference data types. How to distinguish them? I have summarized their respective characteristics for your reference.
1. Basic data types
byte: The smallest data type in Java, occupying 8 bits (bit) in memory, that is, 1 bytes, the value range is -128~127, the default value is 0
short: short integer, occupies 16 bits in memory, that is, 2 bytes, the value range is - 32768~32717, default value 0
int: Integer type, used to store integers, occupies 32 bits internally, that is, 4 bytes, the value range is -2147483648~2147483647, Default value 0
long: long integer, occupies 64 bits in memory, that is, 8 bytes -2^63~2^63-1, default value 0L
float: Floating point type, occupies 32 bits in memory, that is, 4 bytes, used to store numbers with decimal points (the difference from double is that the valid decimal point of the float type is only 6~7 digits ), default value 0
double: double-precision floating point type, used to store numbers with decimal points, occupying 64 bits in memory, that is, 8 bytes, default value 0
char: Character type, used to store a single character, occupies 16 bits, that is, 2 bytes, the value range is 0~65535, the default value is empty
boolean: Boolean type, occupies 1 byte, used to determine true or false (only two values, namely true, false), the default value is false
two. Reference data type
Class
Interface type
Array type
Enumeration type
Annotation type
3. Difference
When the basic data type is created, a piece of memory is allocated to it on the stack, and the value is stored directly on the stack.
Reference data typeWhen it is created, its reference (handle) must first be allocated a piece of memory on the stack, and the specific information of the object is stored on the heap memory, and then the stack The above reference points to the address of the object in the heap.
For example, there is a class Person, with attributes name, age, and a constructor method with parameters,
Person p = new Person("zhangsan",20);
The specific creation process in memory:
1. First allocate a space for its p in the stack memory;
2. Allocate a space for the Person object in the heap memory and assign it to Set the initial value of the three attributes to "", 0;
3. According to the definition of the attributes in the Person class, assign values to the two attributes of the object;
4. Call the constructor , assign the values to the two attributes as "Tom", 20; (note that there is no connection between p and the Person object at this time);
5. Assign the address of the Person object in the heap memory to the stack The p in; the specific information of the object in the heap can be found by referencing (handle) p.
4. Related knowledge
Static area
Save automatic global variables and static variables (including static global and local variables ). The contents of the static area exist throughout the life cycle of the entire program and are allocated by the compiler during compilation.
Heap area
is generally allocated and released by the programmer. The memory allocated by the malloc series of functions or the new operator has its life cycle determined by free or delete. It exists until the program ends and is released by the OS. It is characterized by flexible use and relatively large space, but it is prone to errors.
Stack area
is automatically allocated and released by the compiler to save local variables. The content on the stack is only in Exists within the scope of the function. When the function ends, these contents will be automatically destroyed. It is characterized by high efficiency, but limited space.
Literal constant area
This is where the constant string is placed. It is released by the system after the program ends.
Related recommendations:
JAVA Tutorial | Chapter 2 Basic Data Types
Detailed explanation of the difference between basic data types and reference types in JavaScript
Video Tutorial:
Passing Basic Data Types as Parameters - Latest Java Complete
The above is the detailed content of JAVA basics: two types that are often confused (basic data and reference data). For more information, please follow other related articles on the PHP Chinese website!