Home Java javaTutorial JAVA basics: two types that are often confused (basic data and reference data)

JAVA basics: two types that are often confused (basic data and reference data)

Jul 26, 2018 pm 02:09 PM

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!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

In Java remote debugging, how to correctly obtain constant values ​​on remote servers? In Java remote debugging, how to correctly obtain constant values ​​on remote servers? Apr 19, 2025 pm 01:54 PM

Questions and Answers about constant acquisition in Java Remote Debugging When using Java for remote debugging, many developers may encounter some difficult phenomena. It...

How to choose Java project management tools when learning back-end development? How to choose Java project management tools when learning back-end development? Apr 19, 2025 pm 02:15 PM

Confused with choosing Java project management tools for beginners. For those who are just beginning to learn backend development, choosing the right project management tools is crucial...

Ultimate consistency in distributed systems: how to apply and how to compensate for data inconsistencies? Ultimate consistency in distributed systems: how to apply and how to compensate for data inconsistencies? Apr 19, 2025 pm 02:24 PM

Exploring the application of ultimate consistency in distributed systems Distributed transaction processing has always been a problem in distributed system architecture. To solve the problem...

How to restrict access to specific interfaces of nested H5 pages through OAuth2.0's scope mechanism? How to restrict access to specific interfaces of nested H5 pages through OAuth2.0's scope mechanism? Apr 19, 2025 pm 02:30 PM

How to use OAuth2.0's access_token to achieve control of interface access permissions? In the application of OAuth2.0, how to ensure that the...

Why does the Python script not be found when submitting a PyFlink job on YARN? Why does the Python script not be found when submitting a PyFlink job on YARN? Apr 19, 2025 pm 02:06 PM

Analysis of the reason why Python script cannot be found when submitting a PyFlink job on YARN When you try to submit a PyFlink job through YARN, you may encounter...

How to dynamically modify the savePath parameter of @Excel annotation in easypoi when project starts in Java? How to dynamically modify the savePath parameter of @Excel annotation in easypoi when project starts in Java? Apr 19, 2025 pm 02:09 PM

How to dynamically configure the parameters of entity class annotations in Java During the development process, we often encounter the need to dynamically configure the annotation parameters according to different environments...

When Tomcat loads Spring-Web modules, does the SPI mechanism really destroy the visibility principle of Java class loaders? When Tomcat loads Spring-Web modules, does the SPI mechanism really destroy the visibility principle of Java class loaders? Apr 19, 2025 pm 02:18 PM

Analysis of class loading behavior of SPI mechanism when Tomcat loads Spring-Web modules. Tomcat is used to discover and use the Servle provided by Spring-Web when loading Spring-Web modules...

What is the reason why the browser does not respond after the WebSocket server returns 401? How to solve it? What is the reason why the browser does not respond after the WebSocket server returns 401? How to solve it? Apr 19, 2025 pm 02:21 PM

The browser's unresponsive method after the WebSocket server returns 401. When using Netty to develop a WebSocket server, you often encounter the need to verify the token. �...

See all articles