728x90
Scala의 진입점
- 싱글톤 객체(object)가 main 함수를 구현하는 방법
// main 함수를 생성App 을 상속하여 실행하는 방법
object S01_HelloWorldObject {
def main(args: Array[String]): Unit = {
println("Hello World main")
}
}
- 싱글톤 객체(object)가 App 트레잇을 상속하는 방법
App 트레잇을 상속하는 방법은 extends로 App 트레잇을 상속하고, 실행하고자 하는 코드를 작성하면 순차적으로 실행
object S01_HelloWorld extends App {
println("Hello World")
}
App 트레잇이 내부적으로 main() 함수를 구현해 주기 때문에, 첫번째 방법과 동작 방식의 차이는 없음
객체
- 기본자료형, 함수, 클래스등 모든 것을 객체로 취급
- 객체는 Any를 최상위 클래스로 값(AnyVal) 타입과 참조(AnyRef) 타입을 상속 하여 구현
- Int, Byte, String 같은 기본 자료형은 AnyVal을 상속하고, 클래스는 AnyRef를 상속
객체의 비교
칼라는 모든것을 ==, !=으로 비교
- == (같음)
- != (같지 않음)
자바에서는 문자열(String)의 비교는 equals를 이용
== vs ===(spark)
== boolean을 리턴
=== 컬럼을 리턴 (두개의 컬럼 요소에 대한 비교를 포함하는 결과)
자료형
- 스칼라의 자료형은 자바와 동일
- 자바의 원시 자료형(Primitive Type)이 존재하지 않음
- 모든 것이 클래스
- 자바의 자료형으로 컴파일 시점에 자동으로 변환
- 숫자형, 논리형, 문자형이 존재
- 자료형 선언시에 명시적으로 변수의 타입을 선언할 수도 있고, 선언하지 않을 수도 있음
- 선언하지 않으면 컴파일러가 자동으로 정수형은 Int, 실수형은 Double로 선언
기본 자료형
자료형 | 사이즈 | 설명 |
Byte | 8bit | -128~127 |
Short | 16bit | -32768~32767 |
Int | 32bit | -2147483648~2147483647 |
Long | 64bit | -9223372036854775808~9223372036854775807 |
Float | 32bit | -3.4E38~3.4E38 |
Double | 64bit | -1.7E308~1.7E308 |
Char | 16bit | 문자형 표현 |
Boolean | 1bit | 논리형 참, 거짓 표현 |
참조 자료형
자료형 | 설명 |
String | 문자열 표현 |
Unit | 리턴값이 없음을 표현 |
Null | Null 값 표현 |
Nothing | 모든 객체의 서브 타입 |
Any | 모든 객체의 기본 타입 |
AnyVal | 기본 값 타입의 부모 타입 |
AnyRef | 참조 타입의 부모 타입 |
숫자 자료형
- 정수형
- Byte
- Short
- Int
- Long
- 실수
- Float
- Double
캐스팅
정수형과 실수형 사이
- 업캐스팅 (자동)
- Byte(8bit) 형을 Short(16bit) 형으로의 변환
- 다운캐스팅 (명시적)
- Long(64bit)형을 Int(32bit)형으로 변환
- 데이터의 손실 우려가 있기 때문
// 메소드를 이용하여 명시적으로 변환
scala> i = l.toInt
i: Int = 10
데이터형 선언
// 암시적인 선언
var x = 10
var y = "abc"
// 명시적인 선언
var b: Byte = 10
var s: Short = 10
var i: Int = 10
var l: Long = 10
// 값에 약어를 추가하여 명시적 선언
var f = 10.0f
var d = 20.0d
// 암시적인 선언, 컴파일러가 자동으로 타입을 선택
scala> var ii = 10
ii: Int = 10
scala> var ff = 1.0
ff: Double = 1.0
논리형
논리형 Boolean은 조건문에서 분기를 처리할 때 주로 사용(True, False)
var t = true
if(t)
println("참")
else
println("거짓")
문자형
문자형 Char은 하나의 문자를 표현
var c1:Char = 'a'
var c2 = 'b'
변수
- 가변 변수(variable) → var
- 재할당이 가능
- 불변 변수(value) → val
- 재할당이 불가능
- 한번 값이 정해지면 변경되지 않기(immutable) 때문에 데이터 처리에 있어 단순하게 처리할 수 있는 장점
- 동시처리를 중요하게 생각하기 때문에 변경 불가능한 데이터를 중요하게 생각 (선호함)
var variable = 10
val value = 20
// var 값의 재할당은 처리 가능
scala> variable = 30
variable: Int = 30
/// value 값의 재할당은 오류 발생
scala> value = 40
<console>:12: error: reassignment to val
value = 40
^
참조:
728x90
'language > Scala' 카테고리의 다른 글
[Scala] 스칼라 배우기 6. 스칼라 기본 문법5(collection,배열,리스트,튜플,맵) (2) | 2023.06.11 |
---|---|
[Scala] 스칼라 배우기 5. 스칼라 기본 문법4(trait, singleton object) (0) | 2023.06.11 |
[Scala] 스칼라 배우기 4. 스칼라 기본 문법3(클래스) (0) | 2023.05.23 |
[Scala] 스칼라 배우기 3. 스칼라 기본 문법2(함수) (0) | 2023.05.22 |
[Scala] 스칼라 배우기 1. 스칼라란? 특징 및 스칼라 언어에 관한 통계 (0) | 2023.05.13 |
댓글