2021-03-25

本文介绍了Scala编程中的注释规则,包括单行、多行和文档注释,并强调了良好的编程习惯。接着讲解了变量和常量的使用,包括var和val的区别,以及Scala的强类型特性。此外,还探讨了标识符的命名规范,如合法的命名规则和特殊情况。最后,提到了字符串输出的方法,如字符串连接、printf和插值字符串的使用,以及键盘输入的基本语法和案例。
摘要由CSDN通过智能技术生成

2. 自学第二天——Scala的变量规则

2.1注释

Scala注释使用和Java完全一样。

注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。

1)基本语法

(1)单行注释://

(2)多行注释:/* */

(3)文档注释:

/**

​ *

​ */

2)案例实操

package com.atguigu.chapter02
object TestNotes {
    
    def main(args: Array[String]): Unit = {
        //(1)单行注释://
        println("dalang")
  
        //(2)多行注释:/* */
        /*
        println("dalang")
        println("jinlian")
        */
        
        //(3)文档注释:/**
        //*
        //*/
        /**
          * println("qingge")
            println("qingge")
            println("qingge")
          */
    }
}

2. 自学第二天——Scala的变量规则

2.1注释

Scala注释使用和Java完全一样。

注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。

1)基本语法

(1)单行注释://

(2)多行注释:/* */

(3)文档注释:

/**

​ *

​ */

2)案例实操

package com.atguigu.chapter02
object TestNotes {
    
    def main(args: Array[String]): Unit = {
        //(1)单行注释://
        println("dalang")
  
        //(2)多行注释:/* */
        /*
        println("dalang")
        println("jinlian")
        */
        
        //(3)文档注释:/**
        //*
        //*/
        /**
          * println("qingge")
            println("qingge")
            println("qingge")
          */
    }
}

3) 代码规范

(1)使用一次tab操作,实现缩进,默认整体向右边移动,用shift+tab整体向左移

(2)或者使用ctrl + alt + L来进行格式化

(3)运算符两边习惯性各加一个空格。比如:2 + 4 * 5。

(4)一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅

2.2 变量和常量(重点)

常量:在程序执行的过程中,其值不会被改变的变量

0)回顾:Java变量和常量语法

​ 变量类型 变量名称 = 初始值 int a = 10

​ final常量类型 常量名称 = 初始值 final int b = 20

1)基本语法

​ var 变量名 [: 变量类型] = 初始值 var i:Int = 10

val 常量名 [: 常量类型] = 初始值 val j:Int = 20

注意:能用常量的地方不用变量

2)案例实操

(1)声明变量时,类型可以省略,编译器自动推导,即类型推导

(2)类型确定后,就不能修改,说明Scala是强数据类型语言。

(3)变量声明时,必须要有初始值

(4)在声明/定义一个变量时,可以使用var或者val来修饰,var修饰的变量可改变,val修饰的变量不可改。

package com.atguigu.chapter02

object TestVar {

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

        //(1)声明变量时,类型可以省略,编译器自动推导,即类型推导
        var age = 18
        age = 30

        //(2)类型确定后,就不能修改,说明Scala是强数据类型语言。
//        age = "tom" // 错误

        //(3)变量声明时,必须要有初始值
//        var name //错误
        
        //(4)在声明/定义一个变量时,可以使用var或者val来修饰,var修饰的变量可改变,val修饰的变量不可改。
        var num1 = 10   // 可变
        val num2 = 20   // 不可变

        num1 = 30  // 正确
        //num2 = 100  //错误,因为num2是val修饰的
    }
}


(5)var修饰的对象引用可以改变,val修饰的对象则不可改变,但对象的状态(值)却是可以改变的。(比如:自定义对象、数组、集合等等)

object TestVar {

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

        // p1是var修饰的,p1的属性可以变,而且p1本身也可以变
        var p1 = new Person()
        p1.name = "dalang"
        p1 = null

        // p2是val修饰的,那么p2本身就不可变(即p2的内存地址不能变),但是,p2的属性是可以变,因为属性并没有用val修饰。
        val p2 = new Person()
        p2.name="jinlian"
// p2 = null // 错误的,因为p2是val修饰的
    }
}

class Person{
    var name : String = "jinlian"
}

2.3 标识符的命名规范

Scala对各种变量、方法、函数等命名时使用的字符序列称为标识符。即:凡是自己可以起名字的地方都叫标识符。

1)命名规则

Scala中的标识符声明,基本和Java是一致的,但是细节上会有所变化,有以下三种规则:

(1)以字母或者下划线开头,后接字母、数字、下划线

(2)以操作符开头,且只包含操作符(+ - * / # !等)

(3)用反引号....包括的任意字符串,即使是Scala关键字(39个)也可以

• package, import, class, object, trait, extends, with, type, for

• private, protected, abstract, sealed, final, implicit, lazy, override

• try, catch, finally, throw

• if, else, match, case, do, while, for, return, yield

• def, val, var

• this, super

• new

• true, false, null

2)案例实操

​ 需求:判断hello、Hello12、1hello、h-b、x h、h_4、ab、Int、、+-/#!、+-/#!1、if、if,这些名字是否合法。

object TestName {

 

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

 

        // (1)以字母或者下划线开头,后接字母、数字、下划线

        var hello: String = "" // ok

        var Hello12: String = "" // ok

        var 1hello: String = "" // error 数字不能开头

 

        var h-b: String = "" // error   不能用-

        var x h: String = "" // error   不能有空格

        var h_4: String = "" // ok

        var _ab: String = "" // ok

       var Int: String = "" // ok 因为在Scala中Int是预定义的字符,不是关键字,但不推荐

 

        var _: String = "hello" // ok 单独一个下划线不可以作为标识符,因为_被认为是一个方法

        println(_)

 

        //(2)以操作符开头,且只包含操作符(+ - * / # !等)

        var +*-/#! : String = "" // ok

        var +*-/#!1 : String = "" // error 以操作符开头,必须都是操作符

 

        //(3)用反引号`....`包括的任意字符串,即使是Scala关键字(39个)也可以

        var if : String = "" // error 不能用关键字

        var `if` : String = "" // ok 用反引号`....`包括的任意字符串,包括关键字

    }

}

2.4 字符串输出

1)基本语法

(1)字符串,通过+号连接

(2)printf用法:字符串,通过%传值。

(3)字符串模板(插值字符串):通过$获取变量值

2)案例实操

package com.atguigu.chapter02

 

object TestCharType {

 

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

 

        var name: String = "jinlian"

        var age: Int = 18

 
        //(1)字符串,通过+号连接

        println(name + " " + age)

 

        //(2)printf用法字符串,通过%传值。

        printf("name=%s age=%d\n", name, age)

 

        //(3)字符串,通过$引用

       **//****多行字符串,在****Scala****中,利用三个双引号包围多行字符串就可以实现。****//****输入的内容,带有空格、****\t****之类,导致每一行的开始位置不能整洁对齐。** **//****应用****scala****的****stripMargin****方法,在****scala****中****stripMargin****默认是****“|”****作为连接符,****//****在多行换行的行头前面加一个****“|”****符号即可。**

        val s =

            """

              |select

              |    name,

              |    age

              |from user

              |where name="zhangsan"

            """.stripMargin

println(s)

 

//如果需要对变量进行运算,那么可以**加****${}**

        val s1 =

            s"""

              |select

              |    name,

              |    age

              |from user

              |where name="$name" and age=${age+2}

            """.stripMargin

        println(s1)

 

       val s2 = s"name=$name"

        println(s2)

    }

}

2.5 键盘输入

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。

1)基本语法

StdIn.readLine()、StdIn.readShort()、StdIn.readDouble()

2)案例实操

需求:可以从控制台接收用户信息,【姓名,年龄,薪水】。

import scala.io.StdIn

 

object TestInput {

 

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

 

        // 1 输入姓名

        println("input name:")

        var name = StdIn.readLine()

 

        // 2 输入年龄

        println("input age:")

        var age = StdIn.readShort()

 

        // 3 输入薪水

        println("input sal:")

        var sal = StdIn.readDouble()

 

        // 4 打印

        println("name=" + name)

        println("age=" + age)

        println("sal=" + sal)

    }

}

(1)使用一次tab操作,实现缩进,默认整体向右边移动,用shift+tab整体向左移

(2)或者使用ctrl + alt + L来进行格式化

(3)运算符两边习惯性各加一个空格。比如:2 + 4 * 5。

(4)一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅

2.2 变量和常量(重点)

常量:在程序执行的过程中,其值不会被改变的变量

0)回顾:Java变量和常量语法

​ 变量类型 变量名称 = 初始值 int a = 10

​ final常量类型 常量名称 = 初始值 final int b = 20

1)基本语法

​ var 变量名 [: 变量类型] = 初始值 var i:Int = 10

val 常量名 [: 常量类型] = 初始值 val j:Int = 20

注意:能用常量的地方不用变量

2)案例实操

(1)声明变量时,类型可以省略,编译器自动推导,即类型推导

(2)类型确定后,就不能修改,说明Scala是强数据类型语言。

(3)变量声明时,必须要有初始值

(4)在声明/定义一个变量时,可以使用var或者val来修饰,var修饰的变量可改变,val修饰的变量不可改。

package com.atguigu.chapter02

object TestVar {

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

        //(1)声明变量时,类型可以省略,编译器自动推导,即类型推导
        var age = 18
        age = 30

        //(2)类型确定后,就不能修改,说明Scala是强数据类型语言。
//        age = "tom" // 错误

        //(3)变量声明时,必须要有初始值
//        var name //错误
        
        //(4)在声明/定义一个变量时,可以使用var或者val来修饰,var修饰的变量可改变,val修饰的变量不可改。
        var num1 = 10   // 可变
        val num2 = 20   // 不可变

        num1 = 30  // 正确
        //num2 = 100  //错误,因为num2是val修饰的
    }
}


(5)var修饰的对象引用可以改变,val修饰的对象则不可改变,但对象的状态(值)却是可以改变的。(比如:自定义对象、数组、集合等等)

object TestVar {

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

        // p1是var修饰的,p1的属性可以变,而且p1本身也可以变
        var p1 = new Person()
        p1.name = "dalang"
        p1 = null

        // p2是val修饰的,那么p2本身就不可变(即p2的内存地址不能变),但是,p2的属性是可以变,因为属性并没有用val修饰。
        val p2 = new Person()
        p2.name="jinlian"
// p2 = null // 错误的,因为p2是val修饰的
    }
}

class Person{
    var name : String = "jinlian"
}

2.3 标识符的命名规范

Scala对各种变量、方法、函数等命名时使用的字符序列称为标识符。即:凡是自己可以起名字的地方都叫标识符。

1)命名规则

Scala中的标识符声明,基本和Java是一致的,但是细节上会有所变化,有以下三种规则:

(1)以字母或者下划线开头,后接字母、数字、下划线

(2)以操作符开头,且只包含操作符(+ - * / # !等)

(3)用反引号....包括的任意字符串,即使是Scala关键字(39个)也可以

• package, import, class, object, trait, extends, with, type, for

• private, protected, abstract, sealed, final, implicit, lazy, override

• try, catch, finally, throw

• if, else, match, case, do, while, for, return, yield

• def, val, var

• this, super

• new

• true, false, null

2)案例实操

​ 需求:判断hello、Hello12、1hello、h-b、x h、h_4、ab、Int、、+-/#!、+-/#!1、if、if,这些名字是否合法。

object TestName {

 

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

 

        // (1)以字母或者下划线开头,后接字母、数字、下划线

        var hello: String = "" // ok

        var Hello12: String = "" // ok

        var 1hello: String = "" // error 数字不能开头

 

        var h-b: String = "" // error   不能用-

        var x h: String = "" // error   不能有空格

        var h_4: String = "" // ok

        var _ab: String = "" // ok

       var Int: String = "" // ok 因为在Scala中Int是预定义的字符,不是关键字,但不推荐

 

        var _: String = "hello" // ok 单独一个下划线不可以作为标识符,因为_被认为是一个方法

        println(_)

 

        //(2)以操作符开头,且只包含操作符(+ - * / # !等)

        var +*-/#! : String = "" // ok

        var +*-/#!1 : String = "" // error 以操作符开头,必须都是操作符

 

        //(3)用反引号`....`包括的任意字符串,即使是Scala关键字(39个)也可以

        var if : String = "" // error 不能用关键字

        var `if` : String = "" // ok 用反引号`....`包括的任意字符串,包括关键字

    }

}

2.4 字符串输出

1)基本语法

(1)字符串,通过+号连接

(2)printf用法:字符串,通过%传值。

(3)字符串模板(插值字符串):通过$获取变量值

2)案例实操

package com.atguigu.chapter02

 

object TestCharType {

 

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

 

        var name: String = "jinlian"

        var age: Int = 18

 
        //(1)字符串,通过+号连接

        println(name + " " + age)

 

        //(2)printf用法字符串,通过%传值。

        printf("name=%s age=%d\n", name, age)

 

        //(3)字符串,通过$引用

       **//****多行字符串,在****Scala****中,利用三个双引号包围多行字符串就可以实现。****//****输入的内容,带有空格、****\t****之类,导致每一行的开始位置不能整洁对齐。** **//****应用****scala****的****stripMargin****方法,在****scala****中****stripMargin****默认是****“|”****作为连接符,****//****在多行换行的行头前面加一个****“|”****符号即可。**

        val s =

            """

              |select

              |    name,

              |    age

              |from user

              |where name="zhangsan"

            """.stripMargin

println(s)

 

//如果需要对变量进行运算,那么可以**加****${}**

        val s1 =

            s"""

              |select

              |    name,

              |    age

              |from user

              |where name="$name" and age=${age+2}

            """.stripMargin

        println(s1)

 

       val s2 = s"name=$name"

        println(s2)

    }

}

2.5 键盘输入

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。

1)基本语法

StdIn.readLine()、StdIn.readShort()、StdIn.readDouble()

2)案例实操

需求:可以从控制台接收用户信息,【姓名,年龄,薪水】。

import scala.io.StdIn

 

object TestInput {

 

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

 

        // 1 输入姓名

        println("input name:")

        var name = StdIn.readLine()

 

        // 2 输入年龄

        println("input age:")

        var age = StdIn.readShort()

 

        // 3 输入薪水

        println("input sal:")

        var sal = StdIn.readDouble()

 

        // 4 打印

        println("name=" + name)

        println("age=" + age)

        println("sal=" + sal)

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值