기억저장소

기억저장소

Programming Language/JAVA

Java에서 system.out / data type / method / scope rule 특징

roaminpixel 2013. 3. 12. 11:17
728x90

자바에서의 기본적인 출력 방법과 데이터 타입의 특징에 대해 정리해본다.

자바 초보도 이해할 수 있는 문장으로 구성해보자.

 

1. System.out.println 이해하기

자바에서는 System.out.println을 통해 다양한 데이터를 화면에 출력할 수 있다.

기본 데이터 타입부터 문자열까지, 여러 방법으로 출력하는 것이 가능하다.

class SystemOutPrintln {
    public static void main(String[] args) {
        System.out.println(7);
        System.out.println(3.15);
        System.out.println("3+5=" + 8);
        System.out.println(3.15 + "는 실수입니다.");
        System.out.println("3+5" + " 의 연산결과는 8입니다.");
        System.out.println(3+5);
        System.out.println(3+5 + " = " + 5+3); 
        // 문자열과 숫자가 겹칠 때의 특징! 숫자 먼저 나오면 덧셈 연산, 문자가 나오면 문자열 결합!
    }
}

주요 포인트:

  • 숫자, 실수, 문자열 등 다양한 데이터 타입을 출력할 수 있다.
  • 문자열과 숫자가 함께 사용될 때, 숫자가 먼저 나오면 덧셈 연산이 이루어지고, 문자열이 먼저 나오면 문자열로 인식하여 결합된다.

* 데이터타입

class UseVariable { 	public static void main(String[] args) 	{ 		int num1; 		num1 = 1000000000; 		 		int num2 = 2000000000; 		int num3 = num1 + num2; 		System.out.println(num1 + "+" + num2 +"=" + num3);  // int형 오버플로우 발생!  ( -2147483648 ~ 2147483647) 	}  } 

 

자료형 크기 기본값 표현범위
boolean 1bit FALSE TRUE  or FALSE
char 2byte \u0000  0 ~ 65,535
byte 1byte 0 -128 ~ 127
short 2byte 0 -32,768 ~ 32,767
int 4byte  0 -2,147,483,648 ~  2,147,483,647
long 8byte 0 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
float 4byte  0.0 -3.4E38 ~ +3.4E38
double 8byte 0.0 -1.7E308 ~ +1.7E308

* boolean - true, false 는 상수다! 문자열이 아님
* 부동소수점


* method

* 과제 (20130312)
함수 = 메소드
메인 메소드가 없으면 프로그램이 안 돌아간다.
그래서... 새로운 메소드를 첨가해보기~!
[ 다른 이름의 메소드 만들기 ]
public static void hiEveryone(int age) <-- 매개변수
{
    System.........("좋은 아침입니다.");
    System.out.println("제 나이는 " + age + "입니다.");
}

결과 -
프로그램시작 <= 메인메소드
좋은아침입니다. <= 서브메소드
제 나이는 12세 입니다,
좋은 아침입니다.
제 나이는 13세 입니다.
프로그램 끝 <= 메인메소드

1. [ 매개변수가 두 개인 형태의 메소드 ]
class Method2Param

    public static void main(String[] args)
    {
        double myHeight = 175.9;
        hiEveryone(12, 12.5);
        hiEveryone(13, myHeight);
        byEveryone();
    }


    안에 내용 적어서 레폿으로 제출

}

결과
제 나이는 12세 입니다.
저의 키는 12.5cm 입니다.
제 나이는 13세세 입니다.
저의 키는 175.9cm 입니다.
다음에 뵙겠습니다.

***********************************************************************************

class Method2Param { 	public static void main(String[] args) 	{ 		double myHeight = 175.9; 		hiEveryone(12, 12.5);		// 서브 메서드 호출 		hiEveryone(13, myHeight); 	// 서브 메서드 호출 		byEveryone();		 		System.exit(0); 		// 프로그램 종료 	}  	public static void hiEveryone(int age, double height) 	{ 		System.out.println("제 나이는 "+age+"입니다."); 		System.out.println("저의 키는 "+height+"cm 입니다. "); 	}  	public static void byEveryone() 	{ 		System.out.println("다음에 뵙겠습니다."); 	} } 
* scope rule

2. 변수의 Scope rule에 대해서... 1~2page 해서 자기것으로 알려오라! 다른 사람에게 알려줄 수 있을 정도로!

 

scope rule 이란?
1. 네이버 사전 지식 
- scope rule : 프로그램 언어에서 이름(변수나 함수의)의 가시성(존재)을 결정하는 한 조의 규칙.
2. 간단하게 설명하자면?
- 변수는 가까운 것부터 사용한다.
- 중괄호로 묶인 변수는 중괄호가 끝날 때 사라진다.
- 동일한 변수가 2개일 때에는 먼저 선언한 것은 바탕에 묻혀 있고, 중괄호가 끝나 사라지고 난 후 다시 부활한다.
- 같은 중괄호 안에 동일한 변수를 2번 이상 선언 할 수 없다.
- 변수나 상수는 그들이 선언되고 나서 문장을 포함하는 최소의 블록 안쪽으로 정해진다.
- 모든 변수나 상수는 그것이 선언된 모듈에서만 사용된다.
- 정적/동적 영역 규칙으로 나뉜다.
3. 간단 설명의 예제

 int a = 1; // 전역변수

 void main()

 {

     int a = 2; // 지역변수

     printf("%d", a);

  }

// 결과 2

 

 

 void main()

 {

     int a = 0;

     {

          int a = 3; 

          printf("%d", a);

      }

 }

// 결과 3

 

 

 void main()

 {

     int a = 0;

     {

          int a = 3; 

      }

      printf("%d", a);

 }

// 결과 0

 

4. 정적 영역 규칙

- 블록 구조 언어 : 하향식 설계 ( 알골, 파스칼, PL/1, C, 에이다 등 )

 

5. 동적 영역 규칙

- 해석형 언어 : 각 변수들의 범위를 결정할 때, 호출 관계를 통해서 결정하는 규칙 ( 리스프, 스노볼 등 )

- 자바 동적 영역 규칙

 

 

public class Main{ static int p = 100;    // 멤버변수 p 정적 선언 static int q = 200;    // 멤버변수 q 정적 선언  public static void func(int a, int b) {    // func 메소드 변수 a, b를 받는다. int p =3;    // func 메소드 상수 p = q + a - b;    // 변수 p 값 재선언 (메소드 내부의 값 변화 (멤버변수에 영향 x) q = p - b; // 변수 q는 함수내에 선언되어 있진 않다 -> 동적할당에 따라 멤버변수 값을 변화 (여기서 p는 메소드 내의 변수) }  public static void main(String [] arcs) throws java.lang.Exception { func(5,6);     // func 메소드 변수 a, b System.out.println( p + " " + q); // 멤버변수 p와 q } }  // 결과 : p 100 q 193 (동적할당됨..)  

 

728x90
반응형

'Programming Language > JAVA' 카테고리의 다른 글

[JAVA] java.util.arrays  (0) 2013.05.15