java基础之包装类和基本类型

1.包装类对象是不可变的.

2.== ,在包装类和基本类型使用== 比较的时候,包装类会自动拆装为基本类型再比较

3.小于等于<=127 的boolean,byte,char,和介于-128~127之间的short 和int 被包装到固定地址的包装类对象中.但如果是new 出来的包装对象则会被分配新的地址,不再是固定的.

如:

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Integer a = new Integer(1);
        Integer b = new Integer(1);
        int c=1;
        Integer d = 1;
        Integer e=1;
        System.out.println("a==b:"+(a==b));
        System.out.println("d==e:"+(d==e));
        System.out.println("a==c:"+(a==c));
        System.out.println("a==e:"+(a==e));
        System.out.println("c==e:"+(c==e));
    }
结果是:
    a==b:false
    d==e:true
    a==c:true
    a==e:false
    c==e:true

4.在声明<=128 或者 -128~127 的时候是分配固定的包装类,而包装类的方法Integer valueOf(String s) 也是 分配固定的包装类对象.源码如下:

 public static Integer valueOf(int i) {
    final int offset = 128;
    if (i >= -128 && i <= 127) { // must cache
        return IntegerCache.cache[i + offset];
    }
        return new Integer(i);
    }

java 这样设计或许是因为 这个范围的值是用的最多的.

时间: 2024-10-04 19:47:24

java基础之包装类和基本类型的相关文章

Java基础知识点1:基本类型包装类

基本类型的包装类 简介 通常来说我们在程序中经常会使用元类型,比如 int data = 1; float data = 2.1F; 但是在有些场景中不能直接使用元类型,比如如果我们想要建立一个int类型的ArrayList,你就不可以直接写做: ArrayList<int> 因为ArrayList的"<>"符号中的类型要求是类,而不能是元类型. 所以java为了解决这个问题,提出了包装类的解决方案.即对于每一种元类型,java都会引入一个包装类(wrapper

JAVA基础之包装类,static,final,abstract ,接口 和 内部类

包装类: 自jdk5之后,java就提供了自动装箱与自动拆箱功能,大大简化了基本类型与其包装类对象之间的转换过程,当然装换过程中要注意类型的匹配. public class IntAndInteger { public static void main(String[] args) { //自动装箱 Integer intObj = 5; Integer intObjj = 5; //自动拆箱 int a = intObj; //包装类实现基本变量与字符串的转换 String str = "12

Java基础之包装类的自动装箱和拆箱详解

定义 在java中,数据类型可以分为两大类,即基本数据类型和引用数据类型,基本数据类型的数据不是对象,所以对于要将数据类型作为对象来使用的情况,java提供了相对应的包装类.(关于包装类的详细介绍请参看博客Java基础之常用类详解) 本篇博客主要讲述包装类的自动装箱和拆行机制. 所谓装箱,就是把基本数据类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把int类型包装成Integer类型的对象,或者把double包装秤Double,等等. 所谓拆箱,就是和装箱的方向相反,将I

Java 基础数据类型包装类的高频区间的数据缓存

一.Java的基础数据类型的包装类:Integer,Long,Double,Float,Boolean,Byte,Short,Character. 二.高频缓存区 其中Double和Float没有缓存,其他类型都有高频缓存区间.其高频缓存区间的缓存范围是:Boolean:使用静态final,就会返回静态值Byte:-128~127Short:-128~127Character:0~127Long:-128~127Integer:-128~127 如果所使用的包装类的值在这个缓存区间内,就会直接复

3.6 java基础总结①包装类,基本数据类型,String相互间转换

包装类,基本数据类型,String相互间转换 每个基本数据类型都有相对应的包装类型 包装类,基本数据类型,String相互间转换,这三者间的转换时很重要的: 一.String 转其他 String → 包装类型1.Integer(String str)调用包装类的带String参构造 String → 基本数据类型☆String → int调用包装类的parseInt方法 二.包装类转其他 → String调用包装类对象的ToString方法 → 基本类型①调用包装类的XXXValue方法包装类

java基础之包装类,Math,日期格式处理

包装类,Math,日期格式处理 包装类 Math:random(),round() 日期格式处理 Java提倡的是思想是一切皆对象,但是我们基本数据类型不是一个类,也就是说 没有对象概念,和Java提倡的思想相违背,为了解决这个矛盾,Java里面提供8种基本数据类型的包装类. 序号 基本数据类型 包装类 1 int Integer 2 char Character 3 float Float 4 long Long 5 short Short 6 double Double 7 boolean

Java基础之RTTI 运行时类型识别

运行时类型识别(RTTI, Run-Time Type Identification)是Java中非常有用的机制,在Java运行时,RTTI维护类的相关信息. 多态(polymorphism)是基于RTTI实现的.RTTI的功能主要是由Class类实现的. Class类 Class类是"类的类"(class of classes).如果说类是对象的抽象和集合的话,那么Class类就是对类的抽象和集合. 每一个Class类的对象代表一个其他的类.比如下面的程序中,Class类的对象c1代

【java基础】 合并两个类型相同的list

将两个类型相同的list合并,可以用 addAll(Collection<? extends E> c) import java.util.ArrayList; import java.util.List; public class test { public static void main(String[] args) throws Exception { /*测试合并两个类型相同的list*/ List<String> list1 = new ArrayList<Str

java基础(一) 深入解析基本类型

一.基本类型的简介 基本类型的两条准则: Java中,如果对整数不指定类型,默认时int类型,对小数不指定类型,默认是double类型. 基本类型由小到大,可以自动转换,但是由大到小,则需要强制类型转换. 所占的字节数: byte: 1个字节: char: 2个字节: short: 2个字节: int: 4个字节: long: 8个字节: float: 4个字节:(6位小数,指数是:10^-38~10^38; 范围:) double: 8个字节: char:Java中用 "\u四位十六进制的数字