import(java & scala)

1.几种import

import java.util.List
import java.util.*
import static java.xxx.xx
  1. ConstBean对象
package com.atguigu.bigdata.java.chapter01;

public class ConstBean {

    public static final int AGE = 20;

    public static void  START() {

    }

    public static void END() {

    }
}

使用ConstBean

package com.atguigu.bigdata.scala.chapter06;

import com.atguigu.bigdata.java.chapter01.ConstBean;

public class TestImport {
    public static void main(String[] args) {

        ConstBean.START();
        System.out.println(ConstBean.AGE);
        ConstBean.END();

    }
}

可以省略ConstBean

package com.atguigu.bigdata.scala.chapter06;

import static com.atguigu.bigdata.java.chapter01.ConstBean.AGE;
import static com.atguigu.bigdata.java.chapter01.ConstBean.END;
import static com.atguigu.bigdata.java.chapter01.ConstBean.START;

public class TestImport {
    public static void main(String[] args) {

        START();
        System.out.println(AGE);
        END();

    }
}

3.静态导入
java (导类)
静态导入语法:加static关键字

import static com.atguigu.bigdata.java.chapter06.ConstBean.*;

4.联想scala的breakable()

4.1 Breaks.breakable

import scala.util.control.Breaks

object TestBreak {
  var i = 0

  Breaks.breakable{
    while  (i < 10) {
      if (i == 5){
        Breaks.break()
      }
      println("i = " + i)
      i = i + 1
    }
  }

4.2 导入Breaks._后可以省略前面的Breaks。(这里import不能加static关键字)

import scala.util.control.Breaks._

object TestBreak {
  var i = 0

  breakable{
    while  (i < 10) {
      if (i == 5){
        break
      }
      println("i = " + i)
      i = i + 1
    }
  }

------------------------------------------------------------分割线--------------------------------------------------------

2.import在scala中(导类,也可导包)

  • scala中import关键字可以在任意地方使用。(为了更快速直观地发现导入的哪个类)
package com.atguigui.bigdata.chapter06

object Test {

  def main(args: Array[String]): Unit = {
    import java.util.Date
    new Date()
  }
}
  • 可以导入指定包中的类,但是java.lang, scala中的类不需要导入,可以直接使用
    如:new String()来自java.lang,可以直接使用。

  • 导入指定包中所有的类,在scala中使用我们的下划线代替java中的星号

import java.util._
new HashMap()

思考:写下划线是把所有包都导入了吗?
并没有全部导入,在编译的时候需要啥就导入了什么。

编译后如下图:target/classes/com/atguigu/bigdata/java/chapter01/TestImport.class中并没有全部导入,而是用到啥导入啥。


import(java & scala)_第1张图片
  • 导入指定包中的多个类,可以采用大括号,声明在一行
    import java.util.{HashMap,ArrayList}

  • scala 中import可以导包,如果是包对象,可以访问其属性和方法

import java.util
//用包的方式访问
new util.ArrayList
  • IDEA的import class提示 表示相同名称的类有多个可以导入

  • scala可以在导类时隐藏指定的类

import scala.collection.mutable. _
import java.util. _

object Test {

  def main(args: Array[String]): Unit = {
    println(new HashMap())
  }
}

当导入的多个包中都包含有HashMap(),会报错,所以我们需要隐藏。
如果我们需要用到的是scala.collection.mutable中的HashMap,就需要隐藏java中的HashMap
import java.util.{HashMap=>,} 隐藏指定的类HashMap

import scala.collection.mutable. _
import java.util. {HashMap=> _,_}

object Test {

  def main(args: Array[String]): Unit = {
    println(new HashMap())
  }
}

Map()

  • scala可以给导入的类起别名
    import java.util.{HashMap=>JavaHashMap, _}
    println(new JavaHashMap)
import scala.collection.mutable. _
import java.util. {HashMap=>JavaHashMap,_}

object Test {

  def main(args: Array[String]): Unit = {
    println(new JavaHashMap())
  }
}

{}

也可用type起别名,type hm = java.util.HashMap

  • scala中包的概念其实是相对路径,这样可能会出现冲突,一般采用绝对路径的方式去解决
package java {
  package util{
    class HashMap {
      
    }
    class Test1 {
      def test() : Unit = {
       new java.util.HashMap
      }
    }
  }
}

上述代码new的是自己定义的HashMap,如果我们要使用java的怎么办?
加上root, 如下:

package java {
  package util{
    class HashMap {

    }
    class Test1 {
      def test() : Unit = {
       new _root_.java.util.HashMap
      }
    }
  }
}

root表示顶层那个包。
点一下HashMap可以跳到HashMap.java了,说明导的是java的包了。

你可能感兴趣的:(import(java & scala))