1.几种import
import java.util.List
import java.util.*
import static java.xxx.xx
- 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.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的包了。