안녕하세요? 오랜만에 포스팅을 쓰는 Dorothy입니다!
하아,, 그 동안 많은 일이 있었으나,, TMI이기때문에,,, (Feat. 난카이 대지진 ㅂㄷㅂㄷ)
무튼, 지진이 나건 말건 해야 할 공부는 해야하고,
포스팅도 엄청 밀렸으니 다시 공부를 시작해보도록 할게요~
집중해주세요!!
1. Expressions, Statements, and Blocks
이제 변수와 연산자에 대해 이해했으므로, Expression, Statements, 그리고 Block에 대해 배울 시간입니다. 연산자는 값들을 계산하는 Expression을 만드는 데 사용될 수 있습니다; Expression은 Statement의 핵심 구성 요소입니다; Statement 들은 블록으로 그룹화될 수 있습니다.
1) Expressions
Expression는 변수, 연산자, 그리고 메서드 호출로 구성되며, 언어의 문법에 따라 구성됩니다. 이는 단일 값으로 평가됩니다. 이미 Expression의 예를 보았는데, 아래에서 굵은 글씨로 나타낸 부분입니다:
int cadence = 0;
anArray[0] = 100;
System.out.println("Element 1 at index 0: " + anArray[0]);
int result = 1 + 2; // result는 이제 3입니다.
if (value1 == value2)
System.out.println("value1 == value2");
Expression에 사용된 요소에 따라 Expression이 반환하는 값의 데이터 타입이 결정됩니다. Expression, cadence = 0은 int를 반환하는데, 이는 할당 연산자가 왼쪽 피연산자와 동일한 데이터 타입의 값을 반환하기 때문입니다; 이 경우 cadence는 int입니다. 다른 Expression에서 볼 수 있듯이, 표현식은 boolean이나 String과 같은 다른 종류의 값도 반환할 수 있습니다.
자바 프로그래밍 언어는 Expression의 한 부분에 필요한 데이터 타입이 다른 부분의 데이터 타입과 일치하는 한, 다양한 작은 표현식에서 복합 Expression을 구성할 수 있도록 합니다. 다음은 복합 Expression의 예입니다:
1 * 2 * 3
이 특정 예에서는 Expression이 평가되는 순서가 중요하지 않습니다. 왜냐하면 곱셈의 결과는 순서와 독립적이기 때문에, 어떤 순서로 곱셈을 적용하든 결과는 항상 같습니다. 그러나 모든 Expression이 이와 같은 것은 아닙니다. 예를 들어, 다음 Expression은 덧셈이나 나눗셈 연산을 먼저 수행하는지에 따라 결과가 달라집니다:
x + y / 100 // 모호함
Expression이 어떻게 평가될지 정확하게 지정하려면 균형잡힌 괄호[balacned parenthesis]: ( 와 ) - 아래 예제의 (x +y) - 를 사용할 수 있습니다. 예를 들어, 이전 Expression을 모호하지 않게 만들려면 다음과 같이 작성할 수 있습니다:
(x + y) / 100 // 모호하지 않음, 권장
"Balanced parenthesis"란 프로그래밍 또는 수학적 표현에서 괄호가 적절히 열리고 닫히는 것을 의미합니다. 이는 모든 열린 괄호( ( , { , [ )에 대응하는 닫힌 괄호( ) , } , ] )가 있고, 괄호의 순서와 구조가 올바르게 형성되어야 함을 뜻함
명시적으로 연산이 수행될 순서를 지정하지 않으면, 사용되는 연산자에 할당된 우선 순위에 따라 순서가 결정됩니다. 더 높은 우선 순위를 가진 연산자가 먼저 평가됩니다. 예를 들어, 나눗셈 연산자는 덧셈 연산자보다 더 높은 우선 순위를 가집니다. 따라서 다음 두 문장은 동등합니다:
x + y / 100
x + (y / 100) // 모호하지 않음, 권장
복합 Expression을 작성할 때는 괄호를 사용하여 어떤 연산자가 먼저 평가되어야 하는지 명확히 지시하는 것이 좋습니다. 이러한 관행은 코드를 읽고 유지하기 쉽게 만듭니다.
표현식은 변수(variables), 연산자(operators), 메소드 호출(method invocations) 등을 포함할 수 있는 구조로, 특정 프로그래밍 언어의 문법에 따라 구성됩니다. 표현식의 주요 목적은 이러한 구성 요소들이 결합되어 단일 값(single value)으로 평가(evaluates)되도록 하는 것입니다.
변수(Variables)
프로그래밍에서 변수는 데이터 값을 저장하는 데 사용되는 식별자입니다. 변수는 표현식의 일부로 사용될 수 있으며, 그 자체로 가장 간단한 형태의 표현식이 될 수 있습니다. 예를 들어, x라는 변수가 있을 때, 이 변수를 사용하는 x + 1은 x의 값에 1을 더한 결과를 나타내는 표현식입니다.
연산자(Operators)
연산자는 수학적 연산을 수행하는 기호 또는 키워드입니다. 예를 들어 +, -, *, /는 기본적인 산술 연산자입니다. 연산자는 하나 이상의 피연산자(operand)와 함께 사용되어 표현식을 형성하며, 이 결과는 새로운 값을 생성합니다.
메소드 호출(Method Invocations)
메소드 호출은 함수나 메소드의 실행을 요청하는 표현식입니다. 메소드는 특정 작업을 수행하고 결과를 반환하는 코드의 블록입니다. 예를 들어, Math.sqrt(x)는 Math 클래스의 sqrt 메소드를 호출하여 x의 제곱근을 계산하고 그 결과를 반환합니다.
expression의 평가(Evaluation)
표현식은 최종적으로 단일 값으로 평가됩니다. 이 값은 숫자, 문자열, 논리값 등이 될 수 있으며, 표현식의 구성 요소와 연산에 따라 달라집니다. 예를 들어, 표현식 2 + 3 * 4는 먼저 3 * 4를 계산하여 12가 되고, 이후 2 + 12를 계산하여 최종적으로 14라는 값으로 평가됩니다.
이러한 표현식은 프로그래밍에서 데이터를 처리하고 조건을 평가하는 데 매우 중요한 역할을 합니다.
프로그래밍에서 표현식이 "단일 값으로 평가된다(evaluates to a single value)"는 것은 표현식이 계산되거나 실행된 후에 하나의 구체적인 값으로 결과가 나온다는 의미입니다. 즉, 표현식을 구성하는 변수, 연산자, 함수 호출 등이 결합된 모든 작업이 완료된 후, 최종적으로 하나의 값이 도출되어야 합니다.
예를 들어:
⦁ 수학 표현식 3 + 5는 8로 평가됩니다.
⦁ 문자열 연결 표현식 "Hello, " + "World!"는 "Hello, World!"로 평가됩니다.
⦁ 논리 표현식 5 > 3은 true로 평가됩니다.
이렇게 각 표현식은 처리 과정을 거쳐 하나의 값으로 축약되며, 이 결과 값은 다른 연산의 입력으로 사용될 수 있거나, 변수에 저장되거나, 조건문에서의 판단 기준 등으로 활용될 수 있습니다. 이렇게 단일 값으로 평가되는 특성 때문에 프로그래밍에서 표현식은 다양한 컨텍스트에서 유용하게 사용됩니다.
다양한 종류의 표현식 예시들:
1. 산술 표현식(Arithmetic Expressions)
산술 표현식은 숫자를 계산하기 위해 사용됩니다.
5 + 3 // (덧셈)
4 * 7 //(곱셈)
(a + b) / 2 // (평균 계산)
2. 문자열 표현식(String Expressions)
문자열을 조작하거나 결합하기 위해 사용됩니다.
"Hello, " + "World!" //(문자열 결합)
userInput.trim() // (공백 제거)
3. 논리 표현식(Logical Expressions)
논리적 조건을 평가하기 위해 사용됩니다.
x > 0 && x < 10 // (x가 0과 10 사이인지 확인)
isLoggedIn || isGuest // (로그인했거나 게스트인지 확인)
4. 비교 표현식(Comparison Expressions)
두 값이나 변수를 비교하기 위해 사용됩니다.
a == b // (a와 b가 같은지 비교)
score >= passMark // (점수가 합격 점수 이상인지 확인)
5. 조건 표현식(Conditional Expressions)
조건에 따라 다른 값을 반환합니다 (삼항 연산자를 사용할 수 있습니다).
x > 0 ? "Positive" : "Non-positive"
isEligible ? sendInvitation() : showErrorMessage()
6. 함수/메서드 호출 표현식(Function/Method Call Expressions)
함수나 메서드를 호출하고 그 반환 값을 사용합니다.
Math.sqrt(16) // (16의 제곱근 계산)
list.add(item) // (목록에 아이템 추가)
7. 할당 표현식(Assignment Expressions)
값을 변수에 할당하는 데 사용됩니다.
x = 5
total = subtotal + tax
8. 인스턴스 생성 표현식(Instance Creation Expressions)
새 객체를 생성하기 위해 사용됩니다.
new Date()
new ArrayList<>()
이러한 표현식들은 프로그래밍의 다양한 상황에서 데이터를 처리하고 조건을 평가하며 로직을 구성하는 데 중요한 역할을 합니다. 각각의 사용 사례는 프로그램의 요구사항과 문맥에 따라 다를 수 있습니다.
2) Statements
Statements은 자연 언어의 문장[Sentence]과 대략적으로 동등합니다. Statements은 실행의 완전한 단위를 형성합니다. 다음 유형의 expressions은 expressions을 세미콜론(;)으로 종료함으로써 Statements으로 만들 수 있습니다.
- Assignment expressions
- Any use of ++ or --
- Method invocations
- Object creation expressions
이러한 Statements을 expressions Statements라고 합니다. 다음은 expressions Statements의 예입니다.
// assignment statement
aValue = 8933.234;
// increment statement
aValue++;
// method invocation statement
System.out.println("Hello World!");
// object creation statement
Bicycle myBike = new Bicycle();
expressions Statements 외에도, 선언 Statements과 제어 흐름 Statements이라는 두 가지 다른 종류의 Statements이 있습니다. 선언 Statements은 변수를 선언합니다. 이미 많은 선언 Statements의 예를 보았습니다:
// 선언 Statements
double aValue = 8933.234;
마지막으로, 제어 흐름 Statements은 Statements이 실행되는 순서를 조절합니다. 다음 섹션인 Control Flow Statements에서 제어 흐름 Statements에 대해 배울 것입니다.
3) Blocks
블록은 균형 잡힌 중괄호[Balanced Braces] 사이에 있는 하나 이상의 Statements의 그룹으로, 단일 Statement가 허용되는 어느 곳에서나 사용될 수 있습니다. 다음 예제인 BlockDemo는 블록 사용법을 보여줍니다:
class BlockDemo {
public static void main(String[] args) {
boolean condition = true;
if (condition) { // 블록 1 시작
System.out.println("Condition is true.");
} // 블록 1 종료
else { // 블록 2 시작
System.out.println("Condition is false.");
} // 블록 2 종료
}
}
갈수록 조금씩 어려워지는것 같긴 하지만,
반복해서 공부하고 암기하다시피하려고 합니다.
왜냐하면 이 내용은 Java의 기본중의 기본이기 때문인데요,
마치 학창시절 수학공식 암기하는 것과 비슷한 느낌도 드네요.
그럼 저는 다시 좋은 포스팅으로 돌아오도록 하겠습니다!
그럼 굿바이,,, 다들 지진조심 하시고,, 당분간은 일본 여행 조심하세요....
이상, 일본 어딘가 시골 호텔방에서,,,
최저가로 항공권 줍고 급 일본여행간다고 동네방네 자랑하다가
일본 입국과 동시에 7.1진도의 지진을 경험하고 동공지진된 Dorothy 였습니다....
(무사히 한국 들어가고 싶어요,,, 살려줘요 썸바디헲미 ㅠㅠㅠㅠㅠㅠㅠㅠㅋㅋㅋㅋ)
'2. Java Tutorials' 카테고리의 다른 글
[JAVA Tutorials] #6 Lesson: Classes and Objects 1 (88) | 2024.08.19 |
---|---|
[JAVA Tutorials] #5 Lesson: Control Flow Statements (106) | 2024.08.15 |
[JAVA Tutorials] #3 Lesson: Language Basics - Operators (109) | 2024.08.06 |
[JAVA Tutorials] #2 Lesson: Language Basics - Variables (102) | 2024.07.30 |
[JAVA Tutorials] #1 Lesson: Object-Oriented Programming Concepts (141) | 2024.07.23 |