一、包装类

Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,

在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆类或数据类型类。

  1.1、包装类均位于Java.lang包,包装类和基本数据类型的对应关系如下表所示:

  Primitive-Type     Wrapper-Class
        byte                  Byte
        short                 Short
        int                     Integer
        long                  Long
        float                  Float
        double                   Double
        boolean                 Boolean
        char                                Character

  注意:在这八个类名中,除了Integer和Character类以后,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写即可

  1.2、包装类的位置

  包装类型都是java.lang下的类,所以在使用的时候不需要导入包。

  1.3、每种包装类中都定义属性和方法供其对象使用

    这是从基本类型变为包装类型最明显的区别,现在指向的是对象了,可以访问对象中的属性和调用对象中的方法了,之前只是一个简单的数值,没有任何属性和方法。
        例如:
            //使用变量i不能访问任何属性和访问
            //因为变量i没有指向对象,也不能指向对象
            int i = 1;
            
            //查看API可知Integer类中的构造器如果使用
            //使用变量i可以访问Integer类中定义的属性和方法
            //因为变量i指向的是对象,这是一个引用类型的变量
            Integer i = new Integer(1);
            或者
            Integer i = new Integer("1");

注:包装类中的属性和方法大都是静态的,可以使用类名直接访问。(也有非静态的方法,就需要使用对象调用了)
        
        例如:
            main:
                System.out.println(Integer.MAX_VALUE);
                System.out.println(Integer.MIN_VALUE);
                System.out.println(Integer.toBinaryString(100));

  1.4、常用的方法

    

    简单的使用:

        

  1.5、包装类的作用

    1)作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。

2)包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

  1.6、JDK1.5增加了自动拆箱装箱的功能(低版本JDK中编译报错)

    注:针对八种基本类型及其包装类型,这里以int和Integer为例

   //自动装箱,把字面值1包装成Integer类型对象
          Integer i1 = 1;
        
          //自动拆箱,把Integer对象转变为一个简单的int类型值
          int i2 = new Integer(1);

     注:
              //编译通过
              Integer a = 1;

     //编译报错
              //1可以自动装箱为Integer类型对象
              //但是Integer和Long没有任何关系
              Long b = 1;
            
              //因为int是32位 long是64位
              int --可以自动转换为--> long
            
              //因为Integer和Long没有子父类关系
              Integer --不能转换为--> Long

二、基本类型和字符串之间的转换  

  在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换。

  2.1、基本类型转换为字符串有三种方法:

    1) 使用包装类的 toString() 方法

    2) 使用String类的 valueOf() 方法

    3.)用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串

  

  

  2.2、将字符串转换成基本类型有两种方法:

    1) 调用包装类的 parseXxx 静态方法

    2.)调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱

    

三、==和equals方法的区别

  这俩个都是对俩个变量做比较的。
      1)基本类型变量的比较
          基本类型变量指向的不是对象,不能调用方法,所以只能使用==进行比较,并且比较的是基本类型变量的简单数值是否相等。
    
      2)引用类型变量的比较
          引用类型变量指向的是对象,所以既可以使用==进行比较,也可以使用equals进行比较

   区别在于:
              equals是Object中的方法,每个对象都可以调用和其他对象比较是否相等,默认比较的是俩个引用所指向的对象内存地址值(和==号的作用一样),但是也可以在类中对equals方法进行重写,按照自己的逻辑来比较俩个对象。

  ==是java中的基本的操作符,是不能重写的,俩个引用使用==进行比较,那么比较的是引用所指向的内存地址值是否相同。

四、toString方法hashCode方法 

toString和hashCode都是Object类中的方法,所以每个对象都可以直接调用。
    
    hashCode方法,返回该对象的哈希码值,Object中的实现一般是通过将该对象的内存地址转换成一个整数。

toString方法,返回该对象的字符串表示。
        其形式为:
            类的全限定名@hashCode方法返回值的十六进制形式
            即:
            o.getClass().getName() + "@" + Integer.toHexString(o.hashCode())

例如:
        public class Student{
        
        }
        main:
            Student s = new Student();
            String str1 = s.toString();
            String str2 = s.getClass().getName()+"@"+Integer.toHexString(s.hashCode());
            System.out.println(str1);
            System.out.println(str2);
        
        输出结果:
            com.briup.ch06.Student@6084fa6a
            com.briup.ch06.Student@6084fa6a

注:我们可以把最后的那个六十进制数字认为是这个对象的内存地址,但是其实并不是真的地址值,而是这个对象的哈希码值,这个哈希码值默认又是通过对象地址值转换过来的一个数字。(如果我们重写了hashCode方法,那这个返回的哈希码值就真的和对象内存地址没有一点关系了)

例如:
        Student s = new Student();
        //打印引用时,默认调用其所指向对象的toString方法
        System.out.println(s);
        System.out.println(s.toString());
    
        注:有些时候还是会有一点区别
        Student s = null;
        //打印null
        System.out.println(s);
        //运行报错,空指针异常
        System.out.println(s.toString());

 

  

JavaSE(六)包装类、基本类型和字符串之间的转换、==和equals的区别的更多相关文章

  1. Java基础——基本类型和包装类、基本类型和字符串之间的转换

    基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更 ...

  2. Java 中基本类型和字符串之间的转换

    Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...

  3. Java学习--Java 中基本类型和字符串之间的转换

    Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...

  4. JAVA中基本类型和字符串之间的转换

    一.基本类型转换成字符串有三种方法: int c = 10; 1.使用包转类的toString()方法 String str1 = Integer.toString(c); 2.使用String类的v ...

  5. java基本类型和String之间的转换

    String → 基本类型,除了Character外所有的包装类提供parseXxx(String s)静态方法,用于把一个特定的字符串转换成基本类型变量: 基本类型 → String,String ...

  6. java 基本类型、包装类、字符串之间的转换

    1.基本类型和包装类 基本类型和包装类可通过自动装箱和拆箱实现. int i = 24; Integer a = new Integer(i); //手动装箱 Integer b = i; //自动装 ...

  7. C++中数字与字符串之间的转换,别人的,

    C++中数字与字符串之间的转换   1.字符串数字之间的转换 (1)string --> char *   string str("OK");   char * p = st ...

  8. SQL Server 取日期时间格式 日期与字符串之间的转换

    SQL Server 取日期时间部分   在本文中,GetDate()获得的日期由两部分组成,分别是今天的日期和当时的时间: Select GetDate()  用DateName()就可以获得相应的 ...

  9. java中数组、集合、字符串之间的转换,以及用加强for循环遍历

    java中数组.集合.字符串之间的转换,以及用加强for循环遍历: @Test public void testDemo5() { ArrayList<String> list = new ...

随机推荐

  1. 4.前端基于react,后端基于.net core2.0的开发之路(4) 前端打包,编译,路由,模型,服务

    1.简要的介绍 学习react,首先学习的就是javascript,然后ES6,接着是jsx,通常来说如果有javascript的基础,上手非常快,但是真正要搭建一个前端工程化项目,还是有很多坑的 搞 ...

  2. C++ 知识点总结复习

    C++ 1.C++是静态类型语言,使用静态类型的编程语言是在编译时执行类型检查,而不是在运行时执行类型检查. 2.面向对象程序设计 C++ 完全支持面向对象的程序设计,包括面向对象开发的四大特性: 封 ...

  3. jquery $.fn $.fx是什么意思有什么用

    $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效, .fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效. 如扩展$.fn ...

  4. Java设计模式总汇一

    PS:首先我们要带着问题读文章 什么是设计模式 为什么要用设计模式 使用设计模式有什么好处 设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了重用代码.让 ...

  5. Dubbo(一) 开始认识Dubbo,分布式服务框架

    引言: 以前的车马很慢,一生只够爱一个人以前的网站人很少,一个单应用服务着一个人--------------------现在,动不动就谈什么高并发,千万级访问.单应用?BOOM!分分钟爆炸.于是,技术 ...

  6. raspberrypi 3代B 配置摄像头

    raspberrypi 3代B 配置摄像头 硬件环境: 树莓派3B (element 14版) 树莓派3夜视摄像头800万像素(element 14版) 金士顿 64GB TF Class 10 UH ...

  7. 在表格中,th scope="row"和th scope="col"中的scope属性的用法及意义

    把表头和数据联系起来:scope,id,headers属性就我用到现在,很多表格要比上面提供的例子复杂的多.让例子复杂一点,我会移去"Company"表头,并且把第一列的数据移到表 ...

  8. 高仿二次元网易GACHA

    高仿二次元网易GACHA,所有接口均通过Charles抓取而来,图片资源通过 https://github.com/yuedong56/Assets.carTool 工具提取. 详情见github地址 ...

  9. [编织消息框架][JAVA核心技术]动态代理应用7-IRpcSend实现

    根据设计生成两个接口,IRpcSend send方法返回数据要求包装成QResult对象 public interface IRpcSend { public <T> QResult< ...

  10. cleanMyMac

    想看外国网站可以找我,facebook.youtube.XX大片等,只要8元钱,无限制用到服务器关闭.看大片流畅不成问题 需要cleanMyMac的请加微信只要10或直接拍 http://a.p6ff ...