데이터의 처리 방식과 입출력
1.일괄처리 방식
2.대화식처리벙식
단말기
현대의 단말기
입력데이터 편집
1. 입력 데이터 편집의 필요성
package ex02;
public class Start4 {
//main() 메서드가 가진 변수 k와 square() 메서드가 가진 변수 k가 이름만 같지 실제로는 서로 별도의 변수 공간 => Call By Value(값에 의한 호출)
//메서드는 서로를 블랙박스화한다. 입력 값과 반환 값에 의해서만 메서드 사이에서 값이 전달될 뿐 서로 내부의 지역 변수를 볼 수 없다.
//메서드를 호출할 때마다 해당 메서드의 스택 프레임이 생긴다.
public static void main(String[] args) {
int k = 5;
int m;
m = square(k); // 호출되는 메서드의 스택 프레임이 T메모리 스택 영역에 새로 생성
/*
* 해당 줄을 실행할 때는 main 메서드와 square메서드의 지역변수를 서로 접근 할 수 있지 않을까? => 불가능하다
* 1. 이치에 맞지 않음
* 2. 포인터 문제
* => 따라서 메서드 사이에 값을 전달하거나 반환하는 방법은 메서드의 인자와 반환값으로만 가능!
*/
}
private static int square(int k) {
int result;
k = 25;
result = k;
return result;
}
}
두 메서드 사이에 값을 전달하는 방법
1. 인자이용
2. 반환값 이용
3. 전역 변수
package ex02;
public class Start5 {
static int share; //static 영역에 할당됨 , 메서드 밖에서 선언된 변수 share는 메서드들 사이에서 공유해서 사용할 수 있는 전역변수가 된다.
/*
* 지역변수 : 스택프레임이 종송적
* 전역변수 : 스택프레임에 독립적
*/
// 전역변수는 안스는게 좋다 => why) 프로그램이 복잡해지는 경우 전역변수를 추적하는게 힘들어짐
public static void main(String[] args) {
share = 55;
int k = fun(5,7);
System.out.println(share);
}
private static int fun(int m,int p) {
share = m + p;
return m - p;
}
}
멀티 스레드
멀티 프로세스
package ex02;
public class Start6 extends Thread{
static int share;
public static void main(String[] args) {
Start6 t1 = new Start6();
Start6 t2 = new Start6();
t1.start();
t2.start();
}
@Override
public void run() {
for(int count=0;count<10; count++){
System.out.println(share++);
try {
sleep(10000);
} catch (Exception e) {
}
}
}
}