Spark の基本的な学習ノート: Scala 変数とデータ型

1. 変数宣言

(1) 簡単な説明

変数は、キーワード val および var を使用して Scala で宣言されます。val は、Java の final 変数に似ています。つまり、一度初期化すると変更できない定数です。var は、Java の非 final 変数に似ており、複数回割り当てて変更できます。
val - 値 - 値
var - 変数 - 変数

(2) val を使用して変数を宣言する

1.申告方法

val <変数名>[: データ型] = 変数値
変数を定義する方が柔軟で、データ型を指定することも、データ型を指定しないこともでき、Scala は割り当てられた値に応じてデータ型を独自に判断できます。変数の宣言において、
Scala は Java と Python の機能の両方を備えています。Java は静的言語であり、変数を宣言する際にデータ型を指定する必要があります。Python は動的言語であり、変数を宣言する際にデータ型を指定する必要はありません。

2. ケースデモンストレーション

ここに画像の説明を挿入
ここに画像の説明を挿入

(3) var を使用して変数を宣言する

1.申告方法

var <変数名>[:データ型] = 変数値

2. ケースデモンストレーション

ここに画像の説明を挿入

ここに画像の説明を挿入

(4)改行入力文(継続行)

ここに画像の説明を挿入
複数行の文字列を入力する場合、二重引用符は使用できません。三重引用符を使用する必要があります

ここに画像の説明を挿入

(5) 複数の変数を同時に宣言する

ここに画像の説明を挿入
Scala は一度に複数の変数に異なる値を割り当てることはできません
ここに画像の説明を挿入

(6) サマリー変数宣言

1.変数を初期化する必要があります

ここに画像の説明を挿入

2. データ型を指定せずに変数を定義する

ここに画像の説明を挿入

3. val(定数)の優先利用を促す

Scala では、変更が本当に必要でない限り、var よりも val (定数) を使用することをお勧めします。

4.ステートメントはターミネータを書く必要はありません

ここに画像の説明を挿入

2. データ型

(1) Scalaの型階層

1. 任意のタイプ

Any は、スーパークラスまたは最上位クラスとも呼ばれる Scala クラス階層のルートです。Scala 実行環境のすべてのクラスは、このクラスから直接的または間接的に継承します。equals()、hashCode()、toString() など、いくつかの一般的なメソッドがこのクラスで定義されています。Any には、AnyVal と AnyRef の 2 つの直接サブクラスがあります。

2. AnyVal 型

AnyVal は値の型を表し、空でない Double、Float、Long、Int、Short、Byte、Char、Unit、および Boolean の 9 つの定義済みの値の型があります。Unit は、Java 言語の void に相当する、何も情報を含まない値型であり、結果を返さないメソッドの結果型として使用されます。Unit には、() として記述されたインスタンス値が 1 つだけあります。

3.AnyRef型

AnyRef は参照型を表します。非値型はすべて参照型として定義されます。Scala のすべてのユーザー定義型は、AnyRef のサブタイプです。AnyRef は Java の java.lang.Object に相当します。

4. ケースデモンストレーション

タイプが List[Any] である変数リストを定義します. リストには文字列, 整数, 文字, ブール値と関数が含まれます. これらの要素はオブジェクト Any のインスタンスに属しているため, リストに追加できます.
ここに画像の説明を挿入
強化された for ループを使用して、リスト要素を走査し、それらのデータ型を表示します

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

リストの最初の 3 つの要素のサブリストを取得する
ここに画像の説明を挿入

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) 基本データ型

1. 基本型式表

ここに画像の説明を挿入

2. 簡単な説明

(1) String は java.lang パッケージ配下、その他の型は scala パッケージ配下 Scala は java.lang および scala パッケージを自動的にインポートするため、これらの型をプログラムで直接使用できます。
(2) 実際、scala には本当の基本型 (Java の基本型など) はなく、上記の 10 個の基本型はすべてクラスです。
(3) Scala では、基本データ型と他のクラスとの違いは、そのオブジェクトが Java と基本的に同じ直接量の形で具現化されていることです。
(4) String 型の """ の使用: """...""" の構文を String リテラルで使用して、コンテンツの一部を直接含めることができるため、エスケープせずにコンテンツに任意の文字を含めることができます。 . このとき、パイプ文字 | を使用して各行の前にインデント形式を制御し、文字列に対して stripMargin を呼び出して | で文字列を揃えることができます.stripMargin と
ここに画像の説明を挿入
パイプ文字 "|" を使用して、文字列の出力形式を調整します

ここに画像の説明を挿入

3.リッチラッパーの基本型

9 つの基本型が提供するメソッドは比較的限られています. 機能を拡張するために, Scala は対応する 9 つのリッチ ラッパーを提供します.これは実際には 9 つのクラスです. これら 9 つのクラスのリテラルは, 必要に応じて対応するリッチ ラッパーに自動的に変換できます.リッチ ラッパー クラスによって提供される追加のメソッドを呼び出すためのラッパー クラス。

(3) データ型変換

1. 値型の変換

Scala の値型は下の図に示すように変換できます.変換は一方向です.Long を
ここに画像の説明を挿入
Float に変換します.この場合,一部の精度が失われることに注意してください.Float を
ここに画像の説明を挿入
Long に変換するとエラーが報告されます. .

ここに画像の説明を挿入
Float型からLong型への自動変換はできないが、メソッド呼び出しで実装可能

ここに画像の説明を挿入

2. 参照型の変換

さらに、Scala は参照型をそのサブタイプに変換できます。
Java の識別インターフェイス (クラスをシリアル化できることを示すために使用されるシリアル化可能など) と同様に、すべての型のサブクラスはありません。たとえば、メソッドが例外をスローした場合、例外の戻り値の型ははNothingです(ただし、戻りません)。
Null はすべての参照型 (AnyRef) のサブクラスであるため、Null はすべての参照型に割り当てることができますが、値型には割り当てることができません。これは Java と同じセマンティクスです。Null には、null の一意の単一列値があります。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/py20010218/article/details/125341417