scala学习day01

1.scala中的main函数

package com.shujia.scala

object Demo2Helloworld {

  /**
    * def : 定义函数的关键字
    * main: 函数名
    * args:参数名
    * Array[String]: 参数类型
    * Unit; 相当于void
    *
    * main需要放在object
    *
    * object中所有的方法可以直接调用
    */

  def main(args: Array[String]): Unit = {
    System.out.println("java")
    println("helloWorld")

    //在scala中使用java类
    //scala自动通过等号右边推测出等号左边类型
    val student = new StudentJava("张三", 23)
    
    //写上类型
    val student1: StudentJava = new StudentJava("张三", 23)

    println(student)

  }
}

2.scala的变量

package com.shujia.scala

object Demo3base {
  def main(args: Array[String]): Unit = {

    /**
      * 变量
      * 类型推断,scala会自动推断变量类型
      *
      *
      * val ;常量,不可变 (不能再指向其他的对象) 相当于java中 final
      * var :变量
      *
      */

    val i: Int = 10

    var j = 100

    //修改变量的值
    j = 20
    println(j)


    //多态,父类引用指向子类对象
    val a: Any = 100


    val l: Long = 1000L


    //scala中的字符串用的就是java中的字符串
    val s: String = "10"


    //java的方式进行类型转换
    println(Integer.parseInt(s))


    //scala进行类型转换
    // String类中本来没有toInt方法,scala可以动态增加方法(隐式转换)
    println(s.toInt)
    println(s.toDouble)
    println(s.toLong)


    val b = 100
    println(b.toDouble)

    /**
      * scala基础类型之间都可以通过to 的方式进行类型转换
      *
      */


    /**
      * scala中字符串的拼接
      *
      */

    val s1 = "java"
    val s2 = "scala"


    //内部使用的是java的Stringbuilder
    val s3 = s"$s1\t$s2"
    println(s3)


    //java中字符串拼接
    val builder = new StringBuilder

    builder.append(s1)
    builder.append("\t")
    builder.append(s2)

    println(builder.toString())


  }
}

3.java和scala读取文件的对比

package com.shujia.scala

import java.io.{BufferedReader, FileReader}

import scala.io.{BufferedSource, Source}

object Demo4ScalaOnJava {
  def main(args: Array[String]): Unit = {


    /**
      * 读写文件
      *
      */

    //java中读取文件的方式
    val fileReader: FileReader = new FileReader("scala/data/students.txt")

    val bufferedReader: BufferedReader = new BufferedReader(fileReader)

    //读第一行
    var line: String = bufferedReader.readLine()
    while (line != null) {
      println(line)

      //读下一行
      line = bufferedReader.readLine()
    }


    //scala 中读取文件的方式
    val source: BufferedSource = Source.fromFile("scala/data/students.txt", enc = "utf-8")

    //获取所有行
    //Iterator :迭代器,只能迭代一次
    val lines: Iterator[String] = source.getLines()

    //增强for循环 ,  line 的类型自动推断
    for (line: String <- lines) {
      println(line)
    }

    println("=" * 100)

    for (line: String <- lines) {
      println(line)
    }

  }
}

4.scala中的类class

package com.shujia.scala

object DemoClass {
  def main(args: Array[String]): Unit = {
    val student:Student = new Student("001","张三",23,"文科六班")
    println(student)
  }
}

//(id:String,name:String)默认构造函数的参数
class Student(id:String,name:String,age:Int){
  println("默认构造函数")

  //私有化
  private val _id:String = id
  var _name:String = name
  val _age:Int = age

  //_ 占位符
  var _clazz:String = _


  //重置构造函数,第一行必须显示调用默认构造函数
  def this(id:String,name:String,age:Int,clazz:String){
    this(id,name,age)
    println("重置构造函数")

    _clazz=clazz

  }
  //重写父类的方法
  override def toString=s"Student(${_id},${_name},${_age},${_clazz})"
}

5.scala中的继承

package com.shujia.scala

object Demo6Extends {
  def main(args: Array[String]): Unit = {

    val student = new Student1("张三", 23, "文科一班")

    println(student)


    //多态
    val lisi: Person = new Student1("李四", 23, "文科一班")

    println(lisi)

  }
}

class Person(name: String, age: Int) {

  println("Person类默认构造函数")
  var _name: String = name
  var _age: Int = age

  override def toString = s"Person(${_name}, ${_age})"
}


/**
  * 继承
  * 再继承的时候默认需要调用父类的构造函数
  *
  */

class Student1(name: String, age: Int, clazz: String) extends Person(name, age) {
  println("Student默认构造函数")
  var _clazz: String = clazz

  //重写父类的方法
  override def toString = s"Student1(${_name}\t${_age}\t${_clazz})"
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值