第2章 变量和数据类型

第2章 变量和数据类型

  1. 变量和常量

    1.1 java中变量和常量的定义

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GlV7b9Gu-1686932220296)(assets/image-20230615235651-tap2v21.png)]

    1.2 scala中变量和常量的定义

    scala中不仅是面向对象的语言,还是一种函数式编程语言,里面没有变量的概念,所以能用常量的地方不用变量。

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GXZRKm0t-1686932220297)(assets/image-20230616000026-ntwuqf6.png)]​

    // 常量 
    val a: Int = 10
    // 变量
    var b: Int = 20
    
  2. 测试变量

    变量声明时,必须有初始值

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tT2fsRfY-1686932220297)(assets/image-20230616000624-tjgf0ca.png)]​

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vn3H8gVj-1686932220298)(assets/image-20230616001319-5e9ogi4.png)]​

  3. 标识符

    ​​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HxawYeSF-1686932220298)(assets/image-20230616001645-701w560.png)]​

  4. 字符串

    ​​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FJq2JWrC-1686932220299)(assets/image-20230616002211-cmderf9.png)]​​

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8EMcR4Q4-1686932220299)(assets/image-20230616002311-vyz1gf2.png)]​

  5. 读写文件

    package chapter02
    
    import java.io.{File, PrintWriter}
    import scala.io.{BufferedSource, Source}
    
    object Test06_FileIO {
      def main(args: Array[String]): Unit = {
        // 1. 从文件中读取
        val source: BufferedSource = Source.fromFile("src/data/test.txt")
        // 涉及函数式编程
        source.foreach(print)
        // 2. 将数据写入文件,直接调用java类
        val writer = new PrintWriter(new File("src/data/output.txt"))
        writer.write("hello scc")
        writer.close()
      }
    }
    
  6. 数据类型

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ALhqDDW2-1686932220300)(assets/image-20230616003118-sdapxag.png)]​

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IgIq6VAS-1686932220300)(assets/image-20230616003321-lkri4jc.png)]​

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3WeKDuvI-1686932220300)(assets/image-20230616004127-d1bsl48.png)]​

  7. 整型和浮点类型

    分别占1,2,4,8字节

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fxOtXGqV-1686932220301)(assets/image-20230616004346-t11hdhu.png)]​

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qU2JKOZi-1686932220302)(assets/image-20230616004819-tsxhafx.png)]​

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JT0RAvG3-1686932220303)(assets/image-20230616005022-ntwpndy.png)]​

  8. 字符类型Char

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3SKwj5qb-1686932220303)(assets/image-20230616203656-mfzewyy.png)]​

  9. 空类型

    空值类型,空引用类型,什么都没有类型​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-46mmrjlo-1686932220304)(assets/image-20230616203729-gk68qbb.png)]

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ug41jAE1-1686932220304)(assets/image-20230616203943-qa4h6z9.png)]​

    ​​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-doGPQEN0-1686932220304)(assets/image-20230616204119-sxsy820.png)]​

  10. java类型转换复习

    /**
     * 1. byte自动类型转换,从低精度类型自动转换为高精度类型,byte->short->int类型转换,
     * 注意byte不能转换为char(字符),char占据两个字节,但是是字符类型
     * 2. char类型自动转换为char->int
     */
    public class TestDataTypeConversion {
        public static void main(String[] args) {
            byte b = 10;
            test(b);
            char c = 'c';
            test(c);
        }
    
        public static void test(byte b) {
            System.out.println("bbbbbbbbbbb");
        }
    
    
        public static void test(short s) {
            System.out.println("ssssssssss");
        }
    
        public static void test(char c) {
            System.out.println("cccccccccccccc");
        }
    
        public static void test(int i) {
            System.out.println("iiiiiiiiiiii");
        }
    }
    
    
  11. scala自动类型转换

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QTYSBFSQ-1686932220305)(assets/image-20230616205616-k8h22uz.png)]​

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b15LO4Yp-1686932220305)(assets/image-20230616205813-c76vxsd.png)]​

    package chapter02
    
    object Test08_DataTypeConversion {
      def main(args: Array[String]): Unit = {
        val b: Byte = 10
        val l: Long = 22222L
        val c: Long = b + l
        val c1: Int = (b + l).toInt // 强制类型转换
    
        val a3: Byte = 10
        //val b3:Char = a3 error
        //val c3:Byte = b3 error
    
        val a4: Char = '1'
        val b4: Byte = 10
        val c4: Short = 10
        val d4: Int = a4 + b4 + c4
        println(d4)
      }
    
    }
    
    
  12. 强制类型转换

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bXxcP2yH-1686932220306)(assets/image-20230616211002-zt8ci9d.png)]​

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Aq7l309M-1686932220307)(assets/image-20230616211221-qjk6oww.png)]​

  13. 数值类型和字符串类型转换

    //数值类型和string类型转换
    //1.数值转string
    val n2 = 27
    val s2 = n2 + ""
    //2.string转数值
    val f: Float = "12.3".toFloat
    val n3 = "27.3".toDouble.toInt // 符合当前数据类型规则做转换,直接"27.3".toInt会报错
    println(n3)
    
  14. 强制转换导致数据溢出问题

    ​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-en2LmFky-1686932220308)(assets/image-20230616211947-tgpq4yl.png)]​

    /**
     * 强转导致数据溢出
     * 128 Int类型,占据四个字节,32位
     * 原码:0000 0000 0000 0000 0000 0000 1000 0000
     * 由于是正数,原码等于补码
     * 补码:0000 0000 0000 0000 0000 0000 1000 0000
     * 截取最后一个字节
     * 得到补码1000 0000
     * 表示最大负数-128
     */
    
    /**
     * 强转导致数据溢出
     * 130 Int类型,占据四个字节,32位
     * 原码:0000 0000 0000 0000 0000 0000 1000 0010
     * 由于是正数,原码等于补码
     * 补码:0000 0000 0000 0000 0000 0000 1000 0010
     * 截取最后一个字节
     * 得到补码1000 0010
     * 对应原码,符号位不变,取反+1,得到11111110
     * 表示最-126
     */
    val n5 = 130
    val b5: Byte = n5.toByte
    println(b5) // -126
    

你可能感兴趣的:(scala,开发语言)