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中直接量的封装类提供了算术运算方法,富封装类则封装了一些更常用的方法以方便开发使用。

  • 相关阅读:
    Linux 配置yum源(互联网)
    Linux SSH远程链接 短时间内断开
    loadrunner12安装教程
    Jmeter关联处理
    JMeter做http接口压力测试
    面试试题库
    Selenium基础之--01(将浏览器最大化,设置浏览器固定宽、高,操控浏览器前进、后退)
    索引(快速查询)
    视图是什么玩意
    mysql面试常见题目3
  • 原文地址:https://www.cnblogs.com/amunote/p/5551469.html
Copyright © 2011-2022 走看看