티스토리 뷰
1. 콘솔 창에 "Hello, World" 나타나도록 하기
public class Sample2 {
// JVM이 main 메소드를 "호출(invoke)"(실행)시킨다!!
//main : 메소드(method) --> "실행진입점" (entry point)
// main을 가지고 있는 class를 실행클래스라고 부른다.
// main이 없는 class를 라이브러리 클래스 라고 부른다.
public static void main(String[] args) {
System.out.println("Hello, World2");
// 프린틀린으로 (콘솔에 적히는)로그를 남길 수 있다. 하지만 다소 구식이다.
// 위의 문장은 실행문으로 실행문은 ;으로 구분한다. 모든 실행문은 ;로 마감한다.
} //main : entry point
// 블록이 끝날때마다 이 블록이 어떤 블록인지 알려주는 주석을 달아야 한다.
} //end class
2. 변수 정의하기
public class Sample8 {
public static void main(String[] args) {
// Lvalue(age) 대입(=) Rvalue(23);
int age = 1+2+3+4; // age 이름의 변수를 "정의"한다!
// 변수의 정의 = 변수의 선언 + 초기화(초기값을 넣어주는 것)
// 변수는 "정의"까지 완성되어야만 사용가능하다.!!!!(******)
// --> 즉 초기값을 빼고 같은 타입의 값을 넣을 수 있어야 한다는 것이다.
age = 23;
// age라는 변수 안에 23이라는 값을 넣었다.
// 변수 age에서 1+2+3+4라는 초기값을 빼고 같은 타입인 23이라는 값을 넣었다.
String name = "Yoseph";
// string : 문자열 = 여러개의 문자들을 엮어놓은 것을 의미
name = "김동희";
// name이라는 변수에서 Yoseph이라는 초기값을 빼고 김동희라는 같은 타입의 값을 넣었다.
// 변수이름은 한글로 해도 괜찮다. name 대신 이름으로 age 대신 나이로 해도 가능하다. 대신 자바에 한해서만 가능하다.
// 1: 남성 2: 여성
final int gender = 1;
// final이 붙게 된다면 이 값이 마지막이다라는 의미가 되기에 변경이 불가능하다.
System.out.println(name); // 로그를 출력해주는 명령어!(중요)
// int[= integer](정수만 입력가능) : 변수에 저장가능한 값의 유형(타입)을 의미 (정수만 넣고 빼고가 가능하다.)
// 타입 : 변수값의 유형
// =은 =오른쪽에 있는 값을 왼쪽의 그릇에 넣는다는 의미이다. (중요)
// =은 '대입연산자'라고 불린다.
// = 오른쪽에는 값을 넣어야 하는데 23처럼 값을 넣을 수도, 1+2+3+4 처럼 값을 연산하는 연산식을 넣을 수도 있다. 단 값은 1개이어야 한다.
// = 오른쪽에는 변수를 넣을 수도 있다. int number = 10; , int age = number도 가능
// 간단히 생각하면 = 오른쪽에서는 값을 생성하고, 왼쪽에서는 그릇을 준비하면 된다.
// Lvalue(그릇) 대입(=) Rvalue(값)
// Lvalue(변수선언) = Rvalue(변수의 초기값)
// 참고로 변수는 변하는 값을 보관가능하지만 상수는 동일한 타입이라고 하더라도 다른것을 넣을 수 없다.
// 실행문 끝에 ; 꼭 붙여야 한다.
//
} // main
}// end class
3. 변수를 활용해보기
public class Sample9 {
public static void main(String[] args) {
// 10을 변수 value의 초기값으로 저장
int value = 10;
// 변수 value 값을 읽고 10을 더하는 산술 연산을 수행
// 연산의 결과값을 변수 result의 초기값으로 저장
int result = value + 10;
// 변수 result 값을 읽고 콘솔에 출력
System.out.println(result);
} // main
} // end class
4. 8진수, 16진수로 변환하는 변수 정의하기
public class Sample10 {
public static void main(String[] args) {
int var1 = 10;
System.out.println(var1); // 10진수로 초기화
int var2 = 010; // 숫자 앞에 0이 들어가게 되면 뒷 숫자를 8진수로 표시된다.
System.out.println(var2); // 8진수로 초기화
int var3 = 0x10; // 숫자 앞에 0x가 들어가게 되면 뒤의 숫자가 16진수로 표시된다.
System.out.println(var3); // 16진수로 초기화
// 16진수는 보완관련 프로젝트에서 사용하기도 한다.
} // main
} // end class
5. 변수의 선언과 초기화를 별도로 설정해 보기
public class Sample11 {
public static void main(String[] args) {
int age;
age = 23;
System.out.println(age); // 변수의 선언과 변수의 초기화는 별도의 실행문으로 해도 괜찮다.
int var1;
if(true) { // 참이라면 if 블록을 실행시켜라
int var2;
var1 = 10;
var2 = 20;
} // if
System.out.println(var1);
// System.out.println(var2); <--- var2는 유효범위가 if 블록안에 제한되어 있기에 메소드 블록 내에서는 사용이 불가능 하다.
} // main
} // end class
6. 변수의 유효범위
public class Sample12 {
{
;; // pass( ;; ) : 아직 실행문장을 완성하지 못하거나, 준비가 안되었다.
}
{
;;
} // 사용자 정의 블록의 위치는 어디에서나 허용되지만 class 블록 밖에서만은 생성이 불가능하다.
public static void main (String[] args) {
// 변수 : 정의 + "유효범위(****)"
// 변수의 유효범위 : 정의된 변수를 사용가능한 범위
{
int age = 23;
System.out.println(age);
} // 사용자 정의 블록1 ( User-defined block )
// 블록을 생성함으로써 age라는 변수의 유효범위를 제한시켰다.
// 변수는 하나의 중가로{}안에서만 사용이 가능하다.
// 변수는 선언된 블록 내에서만 사용이 가능하다!!! 초기화가 아니라 선언!!!(*****)
// 사용자 정의 블록 내의 age 변수가 사용자 정의 블록 내에서만 유효범위가 제한된다 하더라도 메소드 블록이나 클래스 블록에서 새로 age 변수를 정의하는 것은 불가능하다.
// --> 클래스 블록이나 메소드블록의 범위는 사용자 정의 블록의 범위를 포함하기 때문이다.
{
int age = 26;
System.out.println(age);
} // 사용자 정의 블록2
// 하지만 이렇게 새로 사용자 정의블록을 생성하여 age 변수를 정의하는 것은 범위가 겹치지 않기에 가능하다!!
// 일반화 요약 :
// 1. 변수의 유효범위는, 자신이 선언된 블록 내부에서만 유효한다!!
// 2. 변수는 자신의 유효범위가 끝나는 순간, 메모리에서 '파괴'된다.
// 변수의 구분 : (1) 지역변수 (2) 전역변수
// (1) 지역변수 : 특정 블록 내에서만 사용이 가능한 변수
// (2) 전역변수 : 모든 class에서 사용이 가능한 변수 <---- 자바에서는 지역변수만이 존재한다.
} // main ( 메소드 블록 )
} // end class (클래스 블록)
7. 변수의 유효범위 확인
public class Sample13 {
public static void main(String[] args) {
int v1 = 15;
if(v1>10) {
int v2;
v2 = v1 - 10;
} // if 사용자 정의 블록
int v3 = v1 + v2 + 5; // v2 변수를 사용할 수 없기 때문에 컴파일러 에러가 생김
// ---> v2 변수의 경우 if 사용자정의블록이 끝나는 순간 파괴되어버리기 때문에 컴파일러 에러가 생긴다.
// 에러가 생기는 경우 붉은 줄이 그어져있는 부분에 마우스를 대서 이유를 파악해 보자!
// 해석이 불가능한 경우에는 구글 번역기를 사용해 보자.
} // main 메소드 블록
} // end class 클래스 블록
'KH 정보교육원 [ Java ]' 카테고리의 다른 글
KH 07일차 - 참조타입 (0) | 2022.03.04 |
---|---|
KH 06일차 - 조건문과 반복문 (0) | 2022.03.03 |
KH 05일차 - 연산자 및 조건문과 반복문 (0) | 2022.03.02 |
KH 04일차 - 타입변환 및 연산 (0) | 2022.02.28 |
KH 01 - 02 일차 (0) | 2022.02.24 |