티스토리 뷰

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 클래스 블록

728x90
댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
최근에 올라온 글
Total
Today
Yesterday
공지사항