결과적으로 자바는 call by value입니다. C/C++과 같이 주소값을 직접 사용하는 것이 아닌, 복사해서 사용합니다.


반면, C/C++은 call by reference로 값을 전달할 경우 주소 자체가 전달됩니다.


C++
#include 
using namespace std;

class Student{
public:
    int age;
public:
    Student(int age) : age(age){
    }
     ~Student(){
    }
};

void change(Student &st){
    st = Student(50);
}

int main(){
    Student st(14);
    cout << st.age << endl;
    change(st);
    cout << st.age << endl;
    return 0;
}


출력>>

14

50


JAVA


class Student{
    int age;
    Student(int age){
     this.age=age;
 }
}

public class Test {
 public static void change(Student user) {
     user = new Student(50);
 }

 public static void main(String[] args) {
     Student st = new Student(14);
     System.out.println(st.age);
     change(st);
     System.out.println(st.age);
 }
}


출력>>

14

14


http://www.m2sj.info/entry/%EC%9E%90%EB%B0%94-%EC%9E%90%EB%B0%94%EB%8A%94-%ED%95%AD%EC%83%81-Call-By-Value-%EC%9D%B4%EB%8B%A4


http://gall.dcinside.com/board/view/?id=programming&no=891104&page=3&search_pos=&s_type=search_all&s_keyword=si

※Primitive Type


Primitive Type은 JavaVM에서 지원하는 비객체형 타입입니다. 비객체라는 건 자바에서 사용되는 객체형 타입은 아니지만 예외적으로 지원을 해야하는

기본형 타입을 말하는 것입니다. byte, int, shot, long, integer, float, double, 부동소수점 개열과 boolean등을 예로 들 수 있습니다.


Reference Type


Reference Type은 java에서의 최상위 클래스인 java.lang.Object클래스를 상속하는 모든 클래스들을 말합니다. 물론 new로 인하여 생성하는 것들을

메모리 영역 heap영역에 생성을 하게되고, Garbage collecto라는 곳에 등록을 하게되고 버려집니다.


http://inetizenseo.tistory.com/12

※객체와 인스턴스


클래스에 의해서 만들어진 객체를 인스턴스라고 한다. 그렇다면 객체와 인스턴스의 차이는 무엇일까? 이렇게 생각해보자.

Animal cat = new Animal(); 이렇게 만들어진 cat은 객체이다. 그리고 cat이라는 객체는 Animal의 인스턴스(instance)이다. 즉, 인스턴스라는 말은

특정 객체(cat)가 어떤 클래스(Animal)의 객체인지를 관계위주로 설명할 때 사용된다. 즉, "cat은 인스턴스"보다는 "cat은 객체"라는 표현이

"cat은 Animal의 객체"보다는 "cat은 Animal의 인스턴스"라는 표현이 훨씬 잘 어울린다.


https://wikidocs.net/214

1. 멀티 프로세싱


- 여러 개의 CPU가 여러 개의 프로세스를 동시에 처리하는 방법


2. 멀티 프로그래밍


- 한개의 CPU가 여러 개의 프로세스를 동시에 처리하는 방법



'STUDY > OS' 카테고리의 다른 글

[OS]데드락(Dead lock)  (0) 2018.08.27
[OS]프로세서 스케줄링의 종류  (0) 2018.08.26
[OS]컴파일러 & 인터프리터  (0) 2018.08.25
[OS]링커 & 로더  (0) 2018.08.25

리팩토링이란?


리팩토링은 외부동작을 바꾸지 않으면서 내부구조를 개선하는 방법으로, 소프트웨어 시스템을 변경하는 프로세스이다.


*리팩토링시 중요한 점 


- 소프트웨어를 보다 이해하기 쉽고, 수정하기 쉽도록 만드는 것, 겉으로 보이는 소프트웨어의 기능을 변경하지 않는 것이다.

  따라서, 리팩토링을 할 때는 기능을 추가해서는 안되고, 단지 코드의 구조에만 신경 써야한다.


- 리팩토링은 가동중인 프로그램을 취해서, 동작을 바꾸는 것이 아니라 우리가 빠른 속도로 개발할 수 있도록 하는 특성을 좀더 많이 주어,

  프로그램의 가치를 높이는 것이다.



http://codereview.tistory.com/3

+ Recent posts