Chapter 2 variables

First, the introduction of variables

	变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号
我们可以找到房间,而通过变量名可以访问到变量(值)。

Second, the basic use of variables

Syntax

var | val 变量名 [: 变量类型] = 变量值

Precautions

1. 声明变量时,类型可以省略(编译器自动推导,即类型推导);
2. 类型确定后,就不能修改,说明Scala是强数据类型语言;
3. 在声明/定义一个变量时,可以使用var或者val来修饰,var修饰的变量可改变,val修饰的变量不可改;
4. val修饰的变量在编译后,等同于加上final;
5. var修饰的对象引用可以改变,val修饰的则不可改变,但对象的状态(值)却是可以改变的(比如: 自定义对象、数组、集合等等);
6. 变量声明时,需要初始值。

Third, the program "+" use

1. 当左右两边都是数值型时,则做加法运算;
2. 当左右两边有一方为字符串,则做拼接运算。

Fourth, data types

1 Introduction

1. Scala与Java有着相同的数据类型,在Scala中数据类型都是对象,也就是说scala没有java中的原生类型;
2. Scala数据类型分为两大类AnyVal(值类型)和AnyRef(引用类型), 注意:不管是AnyVal还是AnyRef 都是对象;
3. 相对于java的类型系统,scala要复杂些!也正是这复杂多变的类型系统才让面向对象编程和函数式编程完美的融合在了一起

2, a list of data type system

Here Insert Picture Description
Summary on the map

1. 在Scala中有一个根类型,他是所有类的父类;
2. Scala中一切皆为对象,分为两大类AnyVal(值类型),AnyRef(引用类型),他们都是Any的子类;
3. Null类型是Scala的特别类型,它只有一个值null,它是bottom class,是所有AnyRef类型的子类;
4. Nothing类型也是bottom class,它是所有类的子类,在开发中通常可以将Nothing类型的值返回给任意
变量或者函数,这里抛出异常使用很多;
5. 在Scala中依然遵循低精度的值向高精度的值自动转换(implicit conversion:隐式转换)。

Data Type list
Here Insert Picture Description

V. integer type

1, integer type

Here Insert Picture Description

2, using integer details

1. Scala各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保证Scala程序的可移植性;
2. Scala的整型“常量/字面量”默认为Int型,声明Long型“常量/字面量”须后加‘l’’或‘L’;
3. Scala程序中变量常声明为Int型,除非不足以表示大数,才使用Long。

Sixth, the floating-point type

1, the floating-point type classification

Here Insert Picture Description

2, float Details

1. 与整数类型类似,Scala 浮点类型也有固定的表数范围和字段长度,不受具体OS的影响;
2. Scala的浮点型常量默认为Double型,声明Float型常量,须后加‘f’或‘F’;
3. 浮点型常量有两种表示形式:
	十进制数形式:5.12       512.0f        .512   (必须有小数点)
	科学计数法形式:5.12e2  = 5.12乘以10的2次方     5.12E-2  = 5.12除以10的2次方
4. 通常情况下,应该使用Double型,因为它比Float型更精确(小数点后大致7位)
	//测试数据 :2.2345678912f  , 2.2345678912

Seven, the character type

1 Introduction

	字符类型可以表示单个字符,字符类型是Char, 16位无符号Unicode字符(2个字节), 区间
值为U+0000到 U+FFFF

2, character type Details

1. 字符常量是用单引号(‘ ’)括起来的单个字符。例如:var c1 = 'a‘   var c2 = '中‘  var c3 =  '9' ;
2. Scala 也允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。
	例如:var c3 = ‘\n’  // '\n'表示换行符;
3. 可以直接给Char赋一个整数,然后输出时,会按照对应的unicode 字符输出 ['\u0061' 97];
4. Char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码。

Eight, Boolean type: Boolean

1. 布尔类型也叫Boolean类型,Booolean类型数据只允许取值true和false;
2. boolean类型占1个字节;
3. boolean 类型适于逻辑运算,一般用于程序流程控制。

Nine, Unit type, Null type and type Nothing

1, the basic description

Here Insert Picture Description

2, details and Notes

1. Null类只有一个实例对象,null,类似于Java中的null引用。null可以赋值给任意引用类型(AnyRef),
但是不能赋值给值类型(AnyVal: 比如 Int, Float, Char, Boolean, Long, Double, Byte, Short);
2. Unit类型用来标识过程,也就是没有明确返回值的函数。由此可见,Unit类似于Java里的void。
Unit只有一个实例,(),这个实例也没有实质的意义;
3. Nothing,可以作为没有正常返回值的方法的返回类型,非常直观的告诉你这个方法不会正常返回,
而且由于Nothing是其他任意类型的子类,他还能跟要求返回值的方法兼容。

X. value type conversion

1, implicit conversion value type

	当Scala程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是
自动类型转换(隐式转换)。

Press precision data type (capacity) of the order of magnitude
Here Insert Picture Description
automatic conversion details Description

1. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后
再进行计算,例如: 5.6 + 10 => double;
2. 当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自
动类型转换;
3. (byte, short) 和 char之间不会相互自动转换;
4. byte,short,char  他们三者可以计算,在计算时首先转换为int类型;
5. 自动提升原则: 表达式结果的类型自动提升为操作数中最大的类型

Cast

	自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型, 使用时要加上强制转换
函数,但可能造成精度降低或溢出,格外要注意。

Description details cast

1. 当进行数据的从大—>小,就需要使用到强制转换;
2. 强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级;
3. Char类型可以保存Int的常量值,但不能保存Int的变量值,需要强转;
4. Byte和Short类型在进行运算时,当做Int类型处理。

Eleven, the value of type String and the type of conversion

Basic types of transfer of type String

语法: 将基本类型的值+"" 即可

String transfer basic data types Type

语法:通过基本类型的String的toXxx方法即可

Precautions

	在将String 类型转成 基本数据类型时,要确保String类型能够转成有效的数据,比如
可以把"123", 转成一个整数,但是不能把"hello"转成一个整数。

XII identifier naming convention

The concept identifier

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

Naming identifiers (remember)

Scala中的标识符声明,基本和Java是一致的,但是细节上会有所变化;
1. 首字符为字母,后续字符任意字母和数字,美元符号,可后接下划线_;
2. 数字不可以开头;
3. 首字符为操作符(比如+ - * / ),后续字符也需跟操作符,至少一个(反编译);
4. 操作符(比如+-*/)不能在标识符中间和最后;
5. 用反引号`....`包括的任意字符串,即使是关键字(39个)也可以 [true]

Identifier naming convention

1. 包名:尽量采取有意义的包名,简短,有意义;
2. 变量名、函数名 、方法名 采用驼峰法。

Learning From: Beijing Shangxue Tang Han Shunping teacher - Scala big data technologies in Silicon Valley is still
a little progress every day, maybe one day you will become so small! ! !

Published 20 original articles · won praise 6 · views 20000 +

Guess you like

Origin blog.csdn.net/XuanAlex/article/details/104713575