Notas básicas de estudo do Spark: variáveis Scala e tipos de dados

1. Declaração de variável

(1) Breve descrição

As variáveis ​​são declaradas em Scala usando as palavras-chave val e var. val é semelhante a uma variável final em Java, ou seja, uma constante, que não pode ser modificada depois de inicializada; var é semelhante a uma variável não final em Java, que pode ser atribuída e modificada várias vezes.
val - valor - valor
var - variável - variável

(2) Use val para declarar variáveis

1. Método de declaração

val <nome da variável>[: tipo de dados] = valor da variável É
mais flexível definir variáveis, você pode especificar o tipo de dados ou não pode especificar o tipo de dados, e Scala pode julgar o tipo de dados por si só de acordo com o atribuído value.Na declaração de variáveis,
Scala tem Java e Recursos de Python. Java é uma linguagem estática, declarando variáveis ​​deve especificar o tipo de dados, Python é uma linguagem dinâmica, declarando variáveis ​​não precisa especificar o tipo de dados.

2. Demonstração de caso

insira a descrição da imagem aqui
insira a descrição da imagem aqui

(3) Use var para declarar variáveis

1. Método de declaração

var <nome da variável>[:tipo de dados] = valor da variável

2. Demonstração de caso

insira a descrição da imagem aqui

insira a descrição da imagem aqui

(4) Instrução de entrada de nova linha (linha contínua)

insira a descrição da imagem aqui
Se você deseja inserir uma string de várias linhas, é impossível usar aspas duplas, você deve usar aspas triplas

insira a descrição da imagem aqui

(5) Declarar várias variáveis ​​ao mesmo tempo

insira a descrição da imagem aqui
Scala não pode atribuir valores diferentes para várias variáveis ​​ao mesmo tempo
insira a descrição da imagem aqui

(6) Declaração de variável resumida

1. Variáveis ​​devem ser inicializadas

insira a descrição da imagem aqui

2. Defina variáveis ​​sem especificar o tipo de dados

insira a descrição da imagem aqui

3. Incentive o uso prioritário de val (constante)

Scala incentiva o uso de val (constante) em vez de var, a menos que seja realmente necessário modificá-lo.

4. A instrução não precisa escrever o terminador

insira a descrição da imagem aqui

2. Tipo de dados

(1) Hierarquia de tipo Scala

1. Qualquer tipo

Any é a raiz da hierarquia de classes do Scala, também conhecida como superclasse ou classe de nível superior. Cada classe no ambiente de execução Scala herda desta classe, direta ou indiretamente. Alguns métodos comuns são definidos nesta classe, como equals(), hashCode() e toString(). Any tem duas subclasses diretas: AnyVal e AnyRef

2. Tipo AnyVal

AnyVal representa um tipo de valor e há 9 tipos de valor predefinidos, que são não vazios Double, Float, Long, Int, Short, Byte, Char, Unit e Boolean. Unit é um tipo de valor que não contém nenhuma informação, equivalente a void na linguagem Java, e é usado como o tipo de resultado de um método que não retorna nenhum resultado. Unit tem apenas um valor de instância, escrito como ().

3. Tipo AnyRef

AnyRef representa um tipo de referência. Todos os tipos sem valor são definidos como tipos de referência. Cada tipo definido pelo usuário em Scala é um subtipo de AnyRef. AnyRef corresponde a java.lang.Object em Java.

4. Demonstração de caso

Defina uma lista de variáveis ​​cujo tipo seja List[Any]. A lista inclui strings, inteiros, caracteres, valores booleanos e funções. Como esses elementos pertencem à instância do objeto Any, eles podem ser adicionados à lista.
insira a descrição da imagem aqui
Através do loop for aprimorado para percorrer os elementos da lista e exibir seus tipos de dados

scala> list.foreach(x => println(x + ": " x.getClass.getSimpleName))
love:String
100:Integer
66.6:Double
c:Charater
true: Bootlean
<function0>: anonfun$1

Obtenha a sublista dos três primeiros elementos da lista
insira a descrição da imagem aqui

scala> list.reverse
res6:List[Any] = List(<function0>, true, c, 66.6, 100, love)

scala>List
res7: List[Any] = List(love, 100, 66.6, c, true, <function0>)

(2) Tipos de dados básicos

1. Tabela de tipo básico

insira a descrição da imagem aqui

2. Breve descrição

(1) String está no pacote java.lang, e outros tipos estão no pacote scala. Como o Scala importará automaticamente os pacotes java.lang e scala, esses tipos podem ser usados ​​diretamente no programa.
(2) Na verdade, não existe um tipo básico real em scala (como o tipo básico de Java), e os dez tipos básicos acima são todos classes.
(3) Em Scala, a diferença entre o tipo de dados básico e outras classes é que seus objetos são incorporados na forma de quantidade direta, que é basicamente a mesma que em Java.
(4) Uso de """ do tipo String: a sintaxe de """...""" pode ser usada no literal String para incluir diretamente uma parte do conteúdo, de modo que o conteúdo possa conter qualquer caractere sem escape Neste momento, você pode usar a barra vertical | para controlar o formato de indentação antes de cada linha e chamar stripMargin na string para alinhar a string em |.Use .stripMargin
insira a descrição da imagem aqui
e a barra vertical "|" para ajustar o formato de saída da string

insira a descrição da imagem aqui

3. Tipos básicos de wrappers avançados

Os métodos fornecidos pelos nove tipos básicos são relativamente limitados. Para expandir suas funções, Scala fornece nove wrappers ricos correspondentes, que na verdade são nove classes. Os literais dessas nove classes podem ser convertidos automaticamente em seus wrappers ricos correspondentes quando necessário. Classes wrapper para chamar métodos extras fornecidos por classes wrapper avançadas.

(3) Conversão de tipo de dados

1. Conversão de tipos de valor

Os tipos de valor em Scala podem ser convertidos conforme mostrado na figura abaixo, e a conversão é unidirecional.
insira a descrição da imagem aqui
Converta Longo para Float. Observe que alguma precisão será perdida neste caso.
insira a descrição da imagem aqui
Se você converter Float para Long, um erro será relatado .

insira a descrição da imagem aqui
Não pode ser convertido automaticamente do tipo Float para o tipo Long, mas pode ser implementado chamando um método

insira a descrição da imagem aqui

2. Conversão de tipos de referência

Além disso, Scala pode converter tipos de referência em seus subtipos.
Nothing é uma subclasse de todos os tipos, semelhante à interface de identificação em Java (como serializable, que é usada para indicar que a classe pode ser serializada). Por exemplo, se um método lança uma exceção, o tipo de valor de retorno da exceção é Nothing (embora não volte).
Null é uma subclasse de todos os tipos de referência (AnyRef), portanto Null pode ser atribuído a todos os tipos de referência, mas não a tipos de valor.Essa é a mesma semântica de Java. Nulo tem um valor de coluna única único de nulo.
insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/py20010218/article/details/125341417
Recomendado
Clasificación