zoukankan      html  css  js  c++  java
  • scala学习手记4

    在Java中变量类型分为两大类:基本类型和引用类型。虽然在JDK1.5以后引入了自动装箱和自动拆箱机制,大大减少了我们在直接类型和引用类型之间的纠结,但仍有一些我们不得不考虑的问题。比如我在工作遇到的基本类型和其包装类型的默认值的问题,比如泛型只能使用引用类型,比如默认情况下直接类型的值不能作为对象来操作(1.toString()就不能通过编译)等等。

    在scala中一切都是对象。 在scala中1.toString()这样的写法是完全可以接受的。java中的每个基本类型在scala中都有对应的封装类,此外scala的每个封装类也都对应一个富封装类。在scala中常见的直接量的类型是scala中的相应的封装类。不过scala中富封装类、封装类与java中的直接类型都是可以直接隐式转换的。

    看一下下面的代码:

    class ScalaInt {
      def playWithInt() {
        val capacity: Int = 10
        val list = new java.util.ArrayList[String]  
        list.ensureCapacity(capacity)
      }
    }

    在代码中先使用scala的封装类Int定义了一个变量capacity,而后在一个java.util.ArrayList的对象上使用这个变量作为其方法的参数。在这一步中scala的Int变量被隐式转换为java中的直接类型的变量。

    此外,在前一节曾提到过scala中1.to(3)或者1 to 3这样的用法。其中的to方法不是Int类型中的方法,而是其对应的富封装类RichInt中的方法。当scala推断出Int型的值1无法满足要求时就会调用它的intWrapper方法将其转为scala.runtime.RichInt类型,而后再调用它的to方法。

    在scala中直接量的封装类提供了算术运算方法,富封装类则封装了一些更常用的方法以方便开发使用。

  • 相关阅读:
    自动化基础知识
    第一章Google软件测试介绍
    《将博客搬至CSDN》
    二叉树的先序遍历和中序遍历分析(递归)
    java 部分快捷功能
    toString
    自增自减运算符剖析
    二进制数的直接表示
    编程中的&&和||
    npm 镜像地址设置
  • 原文地址:https://www.cnblogs.com/amunote/p/5551469.html
Copyright © 2011-2022 走看看