search
HomeJavaJavagetting StartedThe difference between int and integer in java

The difference between int and integer in java

Nov 30, 2019 pm 05:24 PM
intintegerjavathe difference

The difference between int and integer in java

1. Java basic data types and their encapsulation classes

The difference between int and integer in java

java Data types include basic data types and reference data types. In order to facilitate the processing of basic data types as objects, Java introduces encapsulation classes corresponding to basic data types. For example, the int encapsulation class is Integer.

Online teaching video sharing: java teaching video

2. java automatic unboxing and automatic packing

1. Automatic boxing

Autoboxing is actually converting basic data types into reference data types (objects)

2. Automatic unboxing

Automatic unboxing is actually converting reference data types into basic data types

The code is as follows:

    public static void main(String[] args) {
        Integer a = 1;//这里就用到了自动装箱;等同于Integer a = new Integer(1);

        int b = a - 1;//对象不能直接进行计算,所以这里有自动拆箱的操作,将a对象转换成基本数据类型,然后-1
        System.out.println(a);
        System.out.println(b);
    }

Print results:

1
0

3. The difference between int and Interger

From the above we can see the difference between int and Interger:

int is the basic data type, and Integer is the reference data type;

## The default value of #int is 0, and the default value of Integer is null;

int type directly stores values, and Integer needs to instantiate the object and point to the address of the object.

Speaking of this, do you think that’s it? In fact, there are some detailed differences between them: as follows

    public static void main(String[] args) {
        Integer a = new Integer(1);
        Integer b = new Integer(1);

        int c = 1;
        int d = 1;

        Integer e = 1;
        Integer f = 1;
        
        Integer g = 130;
        Integer h = 130;
        
        Integer i = new Integer(130);
        int j = 130;
    }

1: a == b? Nonsense, definitely not equal. The addresses of the two new objects are different.

2: c == d? This is also nonsense, the values ​​​​of basic data types must be equal.

3: The key question now is e == f? g == h?

The answer is: e == f; g != h.

Why does this happen? Because Integer g = 130 will be compiled into Integer.valueOf(130) when ava is compiled. This can be seen by decompiling the class file. It can be concluded from the Integer source code that the Integer.valueOf() method will cache the Integer between the values ​​-128~127, and will not create a new one, so e==f; when the value two is greater than 127 or less than - At 128, a new one will be created, so g != h.

The valueOf method of Integer is as follows:

    public static Integer valueOf(int i) {
         //IntegerCache.low == -128  ;IntegerCache.high == 127
         //当数值大于-128小于127时,进行缓存;否则重新new一个。
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

4: Does c == e, i == j?

The answers are all equal. Because when comparing encapsulated classes with basic data types, Java will automatically unbox them and then compare whether the values ​​are equal.

Summary:

1. They are all encapsulated classes and are all derived from new, so they are definitely not equal. Because the memory addresses of the objects are different.

2. They are all encapsulated classes and are not derived from new. If the value is between -128~127, it is equal, otherwise it is not equal.

3. If the encapsulated class and the basic type are compared, as long as the values ​​​​are equal, they are equal, otherwise they are not equal. Because there will be an automatic unboxing operation when comparing the encapsulated class with the basic data type.

4. They are all basic data types. If the values ​​are equal, they are equal; otherwise, they are not equal.

For more related tutorials, please visit:

Getting Started with Java

The above is the detailed content of The difference between int and integer in java. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:CSDN. If there is any infringement, please contact admin@php.cn delete

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 Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)