★접근 제한자

 

 

입력1:10을 쓰면 바로 입력2: 에서 10이 작성된다.

 

nextInt() 메소드를 사용하고 바로 nextLine()을 사용했을때... 그때 문제가 발생한다
nextInt()만 연속으로 사용하거나
nextLine()만 연속으로 사용할때는 문제가 생기지 않는다.

 

 

레벨은 처음부터 1이므로 20회사냥을하면 2+1을해서 3레벨을 가진다. 최고레벨을 도달했으므로 경험치는 0이 된다.

  

★접근 제한자가 필요한 이유
- 외부에서 변수에 접근을 직접 해서 변수에 값이 잘 못 변경되면 안되는데, 개발자가 실수로 값을 잘못변경했을때
프로그램에 문제가 생길수 있는데 이런 상황에서 접근 제한자를 통해 변수에 접근을 외부에서 못하게 차단한다면
개발자의 실수를 예방할수 있을것이다. 그래서 접근 제한자를 사용하게 됨..

 

변수를 선언한 클래스 말고 다른 클래스 들은 전부 외부
변수를 선언한 클래스 중괄호 안이 내부

 

 

변수를 선언할때 자료형 왼쪽에 private 키워드를 붙이면 그변수는 해당 클래스 안에서만 사용가능 하게설정됨

 

메소드도 외부에서 호출되면 안되는 상황이 존재함. 메소드를 외부에서 호출해서 프로그램에 결과가 원하지 않는
이상한 결과가 만들어질수 있음. 해서 메소드도 접근 제한자를 통해 외부에서의 접근을 차단하게됨.

 

메소드에 리턴타입 왼쪽에 private 키워드를 작성하면 해당 메소드가 외부에서 사용할수 없게된다.

즉 메소드 정의 된 그 클래스 내부에서만 사용할수 있게됨
그럼으로써 외부 호출시 문제가 될수 있는 상황을 예방 할수 있게 됨.

 

 

//# 전화번호부 프로그램을 아래 요구조건을 충족하여
//만드시오.
//
//@ Phone 클래스
//1. 이름(name), 전화번호(phoneNum) 필드를 가짐.
//    (모두 문자열로 저장)
//2. 객체 생성시 이름은 반드시 지정하게 끔 강제화 하시오.
//3. getter 및 전화번호 변경을 위한 setter를 추가하시오.
//4. A라는 패키지에 소속시키시오.
//
//@ PhoneBookManager 클래스
//1. 해당 객체에서 Phone 객체를 사용하여 최대 3명의
//전화번호를 저장할 수 있게 구현하시오.
//2. 사용자에게 이름을 입력받을 때 exit라고 입력 받으면 입력을 중단하게
//구현하시오.
//3. 사용자가 입력한 전화번호부의 개수 만큼 Phone 객체를 생성하시오.
//    (사용자가 이름과 연락처를 2개 입력하면 Phone 객체 2개 생성하고,
//     사용자가 이름과 연락처를 3개 입력하면 Phone 객체 3개 생성....)
//4. B라는 패키지에 소속시키시오.

 

 

 

★접근제한자 종류
-private :동일한 클래스에서만 접근 가능
-public :어디서든지 접근 가능
-default :동일한 패키지 내에서만 접근 가능 //아무것도 안적는거 설정
-protected :동일한 패키지 내에서만 접근 가능한데 예외적으로 해당 클래스를 상속받은 클래스는
다른 패키지여도 접근 가능 (거의 안씀)

 

default 접근 제한자는 변수를 선언할때 또는 메소드를 선언할때 접근 제한자를 지정하지 않고 생략했을때 설정됨

 

★클래스 접근 제한자
-public : 어디서든지 접근 가능
-default : 동일한 패키지 접근 가능

 

소스파일에 이름과 동일한 이름에 클래스가 기본 클래스임
기본 클래스가 접근 제한자가 이클립스가 자동으로 public 접근 제한자를 붙이지만 꼭 기본 클래스의 접근 제한자가
public이여야 하는것은 아니다.

 


 

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ 생성자,오버로딩,오버라이드  (0) 2017.07.11
JAVA/ random,Array  (0) 2017.07.08
JAVA/ Class  (0) 2017.07.05
JAVA/ 메소드,return,함수  (0) 2017.07.02
JAVA/ 반복문(while,for)  (0) 2017.06.28

 

new키워드로 클래스를 인스턴스화 시켰을때 무조건 생성자를 호출
만약 생성자가 없다면 인스턴스화 못함

 

근데 개발자가 클래스를 정의할때 생성자를 정의하지 않으면 자동으로 생성자가 만들어진다.

 

개발자가 생성자를 정의하지 않았을때 자동으로 만들어지는 생성자를 기본 생성자라고함

 

기본 생성자는 아무 매개변수도 받지 않고 아무 로직도 수행하지 않음

 

this?- 객체 자기 자신을 지칭

 

 

결과는 출력! 이렇게 나온다.인스턴스화

 

 

생성자 실행

출력!

 

 

문자열을 받아서 동현님 환영해요.

출력!

 

 

전역변수를 주석처리하면 this로 선언된 a,b 에러 표시.

합: 57

 

 

- super(a,b);대신에 this.a=a; this.b=b;가 들어가도 무방하지만 중복되는거 해결.

 

기본 생성자는 아래와 같은 형태로 만들어 진다
public calc(){}

 

생성자를 개발자가 직접 정의하지 않았을때 기본 생성자를 만들지만 개발자가 직접 생성자를 정의 했으면
기본 생성자는 안만들게 됨.

 

상속을 받으면 자식 클래스가 부모 클래스의 기본 생성자를 호출하게 됨. 근데 부모 클래스에 기본 생성자가 없으면 에러가 발생
이를 해결하기 위해서는 부모클래스에 안만들어진 기본생성자를 개발자가 직접 정의하면 에러를 해결할수 있음.

 

인스턴스화를 시킬때 그 클래스가 상속을 받고 있다고 해서 인스턴스화 시킬때 실행하는 생성자가 부모 클래스의 생성자를 호출하는 것이 아니라 인스턴스화를 하는 그 클래스의 생성자를 호출하는 것.

 

부모 클래스의 생성자의 코드와 자식 클래스의 생성자의 코드가 중복되는 것을 쉽게 해결할수 있음.
super(a,b);
-매소드는 부모 클래스의 생성자를 호출하는 메소드
-a,b에 있는 값을 부모 클래스의 생성자한테 전달해서 호출

 

★문제 로또

 

 

배열 6개를 담는다. 1~45개 랜덤 표현. 같은거 중복 제거 표현

 

 

 

★오버라이딩: 부모 클래스에 정의 되있는 메소드를 자식 클래스에서 코드를 다시 작성하는것
 - 메소드를 재 정의 한다고 표현


부모 클래스에 생성자를 직접 정의해서 기본 생성자가 안만들어졌을 경우 에러가 발생하기 때문에 기본 생성자를 개발자가직접 정의 해야하는데 만약 자식 클래스에 생성자에서 super()메소드를 사용해서 부모 클래스의 생성자를 호출한다면 부모 클래스에서 기본 생성자가 없어도 에러가 안남.

super???- 상위 클래스의 생성자를 호출 할 때 사용 (= 부모 클래스의 생성자 호출)


오버 라이딩을 진행하는 첫번째 이유 다른 사람이 만든 클래스를 내가 가져다가 쓰는데 그클래스에 정의 된
메소드가 마음에 안들어서 수정을 하고 싶은때 그 클래스를 직접 수정하면 실수로 잘못건들여서 클래스가 엉망이 되지만. 아무 클래스를 하나 만들어서 상속을 받은 다음에 마음에 안드는 클래스를 다시 만들기 위해서 오버라이딩 진행함
 
자식 클래스가 여러개 만들어져 운영 되는데 그 여러 자식클래스 중에 하나의 클래스가 부모가 가지고 있는 메소드를 약간 변형해서 사용해야 하는 경우에 오버라이딩을 통해 재정의 해서 이해하게 됨
 
오버라이딩을 해서 다른 자식 클래스한테 영향이 생기지 않는다
 - 내클래스에서만 변형해서 쓰인다.

오버라이딩의 제약조건
public int sum(){ 에러
리턴 타입이 바뀌면 안된다.
매개 변수의 개수가 다르면 안됨.
매개 변수의 자료형이 다르면 안됨.

 

 

 

 

@Override <- 오버라이드 어노테이션이라 칭
오버라이드 어노테이션은 아래에 메소드가 오버라이드를 하는것임을 나타낼때 사용
 
어노테이션을 안붙여도 오버라이드를 할수 있음.
어노테이션을 붙이면 가독성이 향상. 딱보면 이메소드를 오버라이드하는거 구나라고 분석하기 용이

 

오버라이드 어노테이션을 붙이면 아래 메소드가 오버라이드 제약조건이 충족이 되는지 확인함 그리고
충족 안되면 에러를 발생시켜줌

 

어노테이션을 붙여서 에러를 잡아 줌으로써 문제가 생기는 것을 감지 할수 있게 됨.
 
★오버로딩
- 동일한 이름에 메소드를 만드는것

 

오버로딩의 제약조건
-매개변수의 개수가 다르다
-매개변수의 개수가 똑같다고 하더라도 매개변수의 자료형이 다르면 오버로딩 조건이 충족됨.

 

매개변수의 개수가 똑같고 대신 매개변수의 자료형도 똑같은데 매개변수의 이름이 다르다고 오버로딩 조건이 충족되지 않음

 

매개변수의 개수나 자료형이 다르다면 오버로딩할때 리턴타입이 다른걸로 바꿔 사용할수 있음.

 

 

메소드 2개를 만들어 두수의 합과 세수의 합을 알수 있다.

 

 

초기값을 지정해주고 메소드를 같게 오버로딩을 만들고 sum메소드 통틀어 수의 합으로 간결하게 바꾼다.

 

this.val1=val1 과 this.val2=val2가 같으므로

 

 

setter로 묶어서 표현해준다.

 

 

 

3번 4번이 출력된다. 4번 int 0으로 해줘서 4번이 출력

 

오버로딩을 통해 매개변수에 따라서 다른 처리가 진행될 수 있게 구현

 

setter() 메소드를 오버로딩 해서 매개 변수 2개 넘어왔을 때와 3개 넘어왔을때를 다른 로직을 수행하게 처리 했음.

 

부모 클래스에서 오버로딩 된 메소드를 자식에서 오버라이딩시킬수 있음. . 즉 재정의 가능.

 

자식 클래스에 만든 메소드의 이름과 동일한 메소드가 부모 클래스에 매개변수의 개수와 자료형이 동일한게 있다면 그건 오버라이딩 즉 재정의하는것이고 없다면 오버로딩을 하는것

 

★패키지?
- 여러 소스파일을 묶음화 하는 용도로 사용되게 됨
- 여러 클래스를 묶음화 하는 용도로 사용됨.

 

소스파일이 패키지에 그룹화를 하기 위해서는 소스파일에  package korea1; <-해당소스파일이 어느 패키지
소속인지를 지정해 놓어야함
package korea1; 이파일은 korea1이라는 패키지에 소속됬음을 뜻

 

이클립스에서 소스파일을 만들면 자동으로 소스파일에 내용에 해당 파일이 어느패키지에 소속됐는지를
자동으로 삽입해 놓습니다. package korea1;이런키워드(자동)

 

1. 패키지를 사용하는 첫 번째 목적은  이름 중복을 해결하기 위함.
소스파일에 이름은 절대 똑같을수 없음. 하지만 패키지가 다르다면 소스파일에 이름이 동일해도됨
해서 패키지를 사용함으로써 이름중복에 문제를 해결  <-장점

 

ex)A B회사가 공동으로 프로그램 제작 A회사 에서 만든 소스파일에 이름과 B회사에서 만든 소스파일에 이름이 똑같아질
가능성이 충분히 있음
하지만 패키지에 이름이 다르게 만들면 A회사에서 만든 소스파일에 이름과 B회사에서 만든 소스파일에 이름이 똑같아도 충돌
나지 않음

 

2. 의미가 비슷한 소스파일,기능이 비슷한 소스파일을 한대 묶음화를 해서 관리하기 위해 패키지를 쓰게됨
패키지를 통해 비슷한 소스파일들을 묶어서 관리함으로써 관리 효율성이 증대.

동일 패키지에 존재하는 클래스는 접근 가능하지만, 기본적으로 다른 패키지에 있는 클래스는 접근이 안됨
하지만 접근할수 있게 만드는 방법이 존재.

다른 패키지에 있는 클래스를 사용하기 위해서는 그 사용할 클래스를 내 소스파일로 가지고 와야함..
import 키워드를 통해 다른 패키지에 있는 클래스를 내소스파일로 가지고 올수 있음.

패키지 안에 그 패키지를 만들고 계속 안에 패키지를 하위로 만들수 있음.
import korea2.*; 모든 클래스를 import
 

 

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ 접근 제한자  (0) 2017.07.23
JAVA/ random,Array  (0) 2017.07.08
JAVA/ Class  (0) 2017.07.05
JAVA/ 메소드,return,함수  (0) 2017.07.02
JAVA/ 반복문(while,for)  (0) 2017.06.28

 

static 키워드에 this는 에러가 난다.

어떤 메소드가 만들어져 있는 전역변수를 가져다가 사용할때 그 전역변수가 setter메소드를
통해 값이 초기화가 진행이 된 후에 메소드가 호출되어야 되는데 실수로 세터 메소드를 통해 변수에 값을 초기화하지
않고 전역변수를 가져다가 쓰는 메소드를 호출해 버릴수가 있다. 실수가 발생될수 있다.

 

 

setter메소드를 만들어 놨을때 setter메소드를 호출하는 것을 개발자가 깜빡하고 잊어버리는 일을 예방하기 위해서
생성자라는 것을 사용할수 있다.

 

생성자는 클래스를 new 키워드를 통해서 인스턴스화 시켰을때 자동으로 실행되는 메소드를 생성자라고 한다.

 

생성자의 실행은 강제다. 자동으로 실행되고 무조건 실행

 

void 리턴x 생성자를 정의할때는 리턴타입을 지정할수 없다.
즉, public void <-에러
public int <-에러

 

생성자를 만들때는 클래스 이름과 반드시 같게 만들어야한다.

 

클래스를 인스턴스화를 진행할때
즉 new할때 만들어져 있는 생성자를 호출


Calc c1 = new Calc(); <-에러
생성자가 매개변수를 받겠다고 했는데 매개 변수를 안넘겨 주면 에러가 발생

 

생성자를 setter 용도로 사용

 

생성자를 변수의 값을 초기화하는 setter용으로만 사용해야하는 것은 아니다

 

생성자는 인스턴스화가 되자마자 실행할 로직이 있을때 사용하면 됨

 

 

int re = (int) Math.random() <- (int) 캐스팅 자료형을 int로 바꾸겠다
Math.random() 메소드는 0부터 1사이에 있는 실수를 리턴해주는 메소드
즉 0.000000~0.999999 리턴  자료형은 double

 

int re = (int) Math.random()
실수인 값을 정수형 자료형인 int로 형 변환을 시키면 소숫점 이하가 전부 짤림.
해서 Math.random()메소드의 리턴값을 int 형변환 하면 소숫점이하 짤림 그래서0만나옴

 

 

Math.random() 메소드를 통해 랜덤으로 뽑을 숫자를 0.0~0.9가아니라 0.0~9.9가 되게 만들기 위해선 어떻게?
곱하기 10 double형
0~9를 만들고 싶으면 int 자료형으로 진행

 

 

0~9 +40을 하니까 40~49 까지 출력

 

 

코드가 맞는코드인지 if로 40미만 50초과 있는지 확인해보기

 

 

 0~2 랜덤 출력

 

 

배열에 있는 정수를 정렬 시킬수 있다.
Arrays.sort(arr); 이메소드는 매개변수로 배열을 넘길수 있음 반드시 넘겨야함
그 배열에 있는 모든 값을 정렬시켜준다.

 

 

 

★클래스 상속
클래스끼리 부모와 자식관계를 맺을수 있음
자식 클래스는 부모 클래스에 정의 되 있는 멤버를 사용할수 있게 됨
멤버? 변수나 메소드

 

상속이라는 것은 다른 클래스에 만들어져 있는 멤버를 사용할수 있게 만드는 기술

 

★문제 실습

 

1. //# 가위바위보 게임을 만드시오. 아래 요구사항이 충족되게 진행하시오.
    //1. 사용자와 컴퓨터가 가위바위보 게임을 할 수 있다.
    //2. 가위, 바위, 보는 각 각 정수 1, 2, 3으로 처리
    //3. 난수를 발생시켜 컴퓨터가 낸 것을 결정하고 사용자 입력 값과 비교하요 승패를 출력
    //4. 컴퓨터와 사용자가 가위, 바위, 보 중에 무엇을 냈는 지 출력
    //5. 게임은 무한으로 계속 진행되게 구현하는데
    //사용자가 -1을 입력하면 게임이 종료되게 구현

 

2. 합,평균,차,합 출력해보기

 

 

extends Calc <- Calc 클래스 한테 상속 받겠다 라는 뜻
즉,Calc 클래스에 정의 돼 있는 멤버를 사용할수 있게 만들라는 의미.

 

기본적으로 상속을 안받았을 때는 다른 클래스에 있는 멤버를 사용할수 없음.

 

extends Calc <- 부모 클래스로 Calc클래스가 지정됨
extends Calc <- 이키워드를 작성한 클래스는 자식 클래스가됨

 

 

상속을 진행했을때 자식 클래스를 인스턴스화 해서 쓸때 그인스턴스로 자식과 부모에 있는 모든 멤버를

전부 사용할수 있음 그런데 거꾸로는 안됨 부모클래스를 인스턴스화해서 쓸때 그인스턴스로

자식에 있는 멤버를 사용할수 없다..

 

부모가 자식꺼 사용할수 없음
자식이 부모꺼는 사용할수 있음
자식이 자른 자식꺼 사용할 수 없음

 

★클래스 상속의 필요성??
첫번째 이유 - 여러 클래스에서 중복되는 코드가 있을때 그중복되는 코드를 다른 클래스로 분리시킨 후에 그클래스를 상속받게 만들어서 중복 코드를 제거하기 위함.

 

두번째 - 다른 사람이 만든 클래스를 내가 가져다가 사용할때 나는 그 클래스에 대해 정확하게 이해하고 있지 않을때
그 다른 사람이 만든 클래스를 내가 약간 수정해서 쓰고 싶을때가 생김 원하는 변수를 더 추가하고 원하는 메소드를 더추가
해서 사용하고 싶을때 그다른 사람이 만든 클래스를 직접 수정하다가 클래스를 잘못 수정해서 잘 되던것도 안되는경우가
생긴다. 클래스를 하나 만들어서 그 클래스를 다른 사람이 만든 클래스한테 상속 받게 구현한 후에 내가 원하는 코드를
추가하여 사용하게 됨 그럼으로써 다른 사람이 구현한 로직을 잘못 건드는 일을 예방할수 있게됨.

 

부모 클래스의 부모클래스의 부모클래스가 존재할수 있음
부모 클래스는 여러개가 지정될수 없다
자식 클래스는 여러개가 지정될수 있음

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ 접근 제한자  (0) 2017.07.23
JAVA/ 생성자,오버로딩,오버라이드  (0) 2017.07.11
JAVA/ Class  (0) 2017.07.05
JAVA/ 메소드,return,함수  (0) 2017.07.02
JAVA/ 반복문(while,for)  (0) 2017.06.28

★클래스 - 여러 메소드를 묶음화 할때 사용
클래스가 다르다면 메소드의 이름이 중복되도 문제가 발생하지 않는다.

 

클래스를 사용하는 목적은 기능이 유사하거나 의미가 유사한 메소드들을 클래스로
묶음화를 해 둠으로써 메소드의 관리의 효율성이 증대될수 있다.

ex) 로그인을 처리하는데 필요한 메소드들을 하나의 클래스로 묶고
로그아웃을 처리하는데 필요한 메소드들을 하나의 클래스로 묶고
회원가입을 처리하는데 필요한 메소드들을 하나의 클래스로 묶고

 

클래스를 사용함으로써 메소드의 이름이 중복되는 문제를 해결할수 있다.
ex) A,B라는 회사에서 공동 프로젝트를 진행해서 두회사가 하나의 프로그램을 만들때 나중에 A회사가 만든
소스코드랑 B회사가 만든 소스코드를 하나로 합치는데 그때 메소드의 이름이

중복되더라도 클래스로 묶음화를 해놨기 때문에 이름중복이 문제가 되지 않게 됨.

 

 

결과

korea의 A메소드 입니다.

korea의 B메소드 입니다.

korea2의 A메소드 입니다.

korea2의 B메소드 입니다.

 

 

전역변수인 num2=20으로하고 메소드안에 num2=40으로 해도 에러가 안뜬다.

 

★변수는 지역변수와 전역변수가 존재
지역 변수 - 만든 메소드 안에서만 접근이 가능
전역 변수 -  만든 클래스에 있는 어떤 메소드에서도 접근이 가능

 

 

결과는 이름: 지연 나이: 34 이렇게 나온다 A.setter_name과 A.setter_age를 주석처리하면 결과는

이름: 동동 나이: 12 가 나온다.

 

setter - 변수의 값을 초기화해주는 메소드
변수의 값을 지정해주는 역할을 하는 메소드

 

getter - 변수의 값을 리턴해주는 메소드
변수의 값을 알려주는 역할을 하는 메소드

 

 

결과는 이름:동동 나이:28이나온다 23+5를 해서 28이다.

 

 

B pr1 = new B(); B pr2 = new B();  가 주석처리 되면 밑에 코드들이 다 에러표시가 난다.

 

현재 클래스는 한 사람의 이름과 나이 정보를 저장하고 있을 수 있음.
여러 사람의 이름과 나이를 저장할 수가 없음.
그래서 인스턴스가 필요하게됨.
인스턴스(instance)- 같은 클래스에 속하는 개개의 객체 ,적재시킨 메모리 공간

 

클래스를 new키워드를 통해 메모리에 적재시킬수 있음
ex) new A();

 

그 인스턴스에 접근할수 있게 이름을 달아놔야함.
ex) A pr1 = new A();

 

지정한 이름으로 해당 인스턴스에 접근할수 있게됨.

 

클래스를 정의할때 변수나 메소드에 static키워드를 안붙여서 정의하면 그 클래스에 있는

메소드나 변수를 쓸때 인스턴스화 를 해서 사용해야함

 

인스턴스화를 해서 쓰기위해 static 키워드를 안붙여서 정의.
인스턴스화- 인스터스를 만든것

 

클래스에 있는 변수와 메소드를 통칭해서 멤버라고함.

 

클래스에 멤버 변수의 값을 메소드로 초기화를 안 하고 직접 변수 값을 초기화 해도됨.
근데 setter 메소드를 만들어서 변수의 값을 초기화하는 이유는 실수로 변수의 값을 잘 못 초기화할수 있기 때문에
실수를 방지하기 위해서 setter 메소드를 사용하는 것.

 

변수의 값을 직접 초기화하지 못하게 막을수 있음.

 

setter로 변수의 값을 초기화 할수 있는 메소드를 구현하고 변수의 값을 직접 초기화할수 없게 막아두는게 일반적.

 

static 키워드를 붙여서 선언한 변수는 클래스 변수(static변수)

 

static 키워드를 안붙여서 선언한 변수는 인스턴스 변수

 

클래스 변수는 모든 인스턴스가 공유해서 같이쓴는 변수다. 어느 인스턴스에서 값을 바꾸건 모든
인스턴스가 다똑같이 값이 변경.
인스턴스 변수는 인스턴스 마다 서로 다르게 쓰는 변수.
A라는 인스턴스에서 값을 바꿔도 다른 인스턴스에는 전혀 아무 영향이 생기지 않음.

 

그래서 인스턴스 마다 다르게 값이 유지되야 하면 인스턴스 변수를 쓰게 되고 모든

인스턴스가 값을 똑같이 사용해야 하면 클래스 변수를 쓰게됨.

 

 

 

이런 결과 출력을 나오게 할려면 pirn() 메소드를 만들어 출력할수 있게 만들어준다.

moblie이 int자료형이 안되는 이유는 010-  <- 짝대기는 문자열 취급한다.

 

 

korea.a="동동";//error
클래스 변수는 인스턴스화를 하지 않아도 사용할수 있음.

인스턴스 변수는 인스턴스화를 하지 않으면 못씀.

 

클래스 변수 인스턴스화를 해도 안해도 사용할수 있음.

 

클래스 메소드는 인스턴스화를 하지 않아도 사용할수 있음.
클래스 메소드는 인스턴스화를 해도 않해도 사용할수 있음.

 

 

클래스 메소드이며 결과는 합: 30 이렇게 나오게 된다.

 

메소드를 정의할때 static키워드를 붙이면 클래스 메소드로 정의되고, static키워드를 안붙이면
인스턴스 메소드로 정의.

 

인스턴스 메소드는 인스턴스화를 안하면 사용할수 없다.

 

메소드로 구현 하면됨.하지만 인스턴스가 여러개 만들어져야 한다면 클래스를 설계할때 static 키워드를 안 붙여서 인스턴스 변수와 인스턴스 를 여러개 만들지 않을거면 클래스를 설계할때 static키워드를 붙여서 클래스 변수와 클래스 메소드로 구현하면됨

 

 

static이 없는 인스턴스 메소드다. 인스턴스화 로해줘야 된다.


//calc.sum(); error

 

인스턴스화를 해야 쓸수 있는 변수인 인스턴스 변수에 인스턴스화를 안해도 쓸수 있는
메소드인 클래스 메소드가 접근할수 없음.


 

D.class_instance_instance(); //error
인스턴스 메소드는 인스턴스화를 안하면 사용할수 없음

 

함수 내부에 선언하면 지역변수
함수 외부에 선언하면 전역변수

 

변수의 유효범위 - 만든 변수를 어디서 가져다가 쓸 수 있는지 뜻한다.

 

전역변수는 모든 메소드에서 즉 어디서든지 접근 가능
지역변수는 선언한 그메소드에서만 접근 가능

 

파일의이름과 동일한 클래스를 기본 클래스라고 함. 기본클래스는 반드시 정의. 없으면 에러.

 

 

 

System.out.println(a);//error
for의 소괄호에다가 선언한 변수는 for문이 종료됨과 동시에 변수가 소멸
해서 그변수를 for문이 종료된 후에는 사용할수 없게 됨.그렇게 변수가 for문이 종료됨과 동시에 소멸하기
때문에 소괄호에 선언한 변수는 그 for문 안에서만 사용할수 있음.

 

블럭문: 중괄호를 사용하는 코드를 블럭문이라함
 for,for_each,while,if,else.....
블럭문의 바디에서 정의 한 변수는 그 바디에서만 사용할수 있음.

 

블럭문 바디에서 정의된 변수는 해당 바디의 코드가 전부 실행되고 나면 변수가 소멸.

 

 

다섯개의 배열을 만든다. arr[i]는 5섯개 입력이 만들어진다.

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ 생성자,오버로딩,오버라이드  (0) 2017.07.11
JAVA/ random,Array  (0) 2017.07.08
JAVA/ 메소드,return,함수  (0) 2017.07.02
JAVA/ 반복문(while,for)  (0) 2017.06.28
JAVA/ (비교,논리)연산자, 조건문 case  (0) 2017.06.24

 

반복문 : For-Each
for(변수선언:배열이름){
 반복할 코드
}

주석 친 코드와 같은효과.


소괄호에 지정한 배열에 있는 모든 값을 한개 한개 뽑아다가 변수에 넣어가면서 중괄호 코드를 실행시켜주는 반복문

 

★메소드

여러 코드를 한대 묶음화를 해 놓을 수가 있음.

- 멤버 함수.

- 데이터와 멤버 변수에 대한 접근 권한

 


메소드를 묶음화한 코드를 언제든지 실행시킬 수 있음.
public calss test{
public static void korea(){
korea-메소드 이름

 

프로그램을 실행하는 것은 main메소드를 실행하는거다.
프로그램에서 반복적으로 실행하는 로직이 있을 경우에 그 코드를 메소드로 묶음화를 해놓고
필요할 때 마다 호출해서 사용.

 

나중에 코드를 수정할 일이 발생했을때 메소드를 정의한 부분만
수정하면 메소드를 가져다가 호출하는 모든 부분이 수정된 효과가 나오게 됨 해서 유지보수성이 향상

 

메소드를 사용함으로써 코드의 재사용성이 높아진다.
메소드를 사용함으로써 소스 코드의 분량이 줄어든다.

 

System.out.println(); <- 메소드

 

★라이브러리: 여러 메소드를 묶음화한 코드.
라이브러리 종류
- 표준 라이브러리 : 자바에서 기본적으로 제공
- 외부 라이브러리 : 다른 개발자가 만들어서 제공

 

- 사용자 정의 메소드 : 내가 직접 만든 메소드 (korea)

 

 

 

System.out.println(a);
- test 메소드를 호출할때 넘어오는 값을 변수 a에 값으로 초기화

 

test(); //error
메소드를 정의할때 넘어오는 값을 변수에 넣겠다고 정의하면 반드시 그 메소드를 호출할때
값을 넘겨야만 호출가능.

 

test("동동"); <- 에러 안난다.
test 메소드를 호출할때 동동이라는 문자열을 넘겨서 호출하겠다.

 

메소드를 호출할때 넘겨주는 값을 매개변수라 한다.
메소드가 매개변수를 받을 자료형을 자바에서 제공하는 모든 자료형을 전부 사용할 수 있음.
메소드가 매개변수를 안받아도되고 받았을때는 1개를 받건 100개를 받건 개수에 제한이 없음

 

 

sum(10,20,30); //error
메소드를 정의할때 2개를 받으라고 했으면 호출할때 반드시2개를 넘겨야함 매개변수가 모자르거나
많아지면 에러발생

 

 

메소드를 정의할때 지정한 자료형과 호출할때 넘기는 값의 자료형이 바뀌면 에러발생

 

 

메소드가 매개변수를 넘겨 받아서 메소드 중괄호 안에 코드를 수행하게 구현할수 있음.
넘겨 받는 이유는 넘어온 값에 따라 결과가 달려져야 하는 로직을 구현해야 하기 때문에.

 

 

return문은 우항에 지정한 값을 메소드를 호출했던 곳으로 넘겨 주라는 것

 

return num1+num2; <-변수 num1의 값과 num2의 값을 더하기를 한 값을 메소드를 호출했던 곳으로 넘겨주겠다.

 

리턴하는 값의 자료형을 리턴타입이라 불림
리턴 타입이 void인 것은 리턴을 안함.
리턴을 하기 위해서는 리턴하는 겂의 자료형이 무엇인지 지정.

리턴타입으로 지정한 자료형과 실제로 리턴하라고 지정한 값의 자료형이 불일치하다면 에러가 발생

 

리턴 타입으로 지정한 자료형과 리턴 값을 받을 변수의 자료형과 일치

 

 

System.out.println("hi"); //error
return문은 우항의 값을 메소드 호출했던 곳으로 전달함과 동시에 메소드를 종료하라
return이 있는데 밑에 뭘실행을 하느냐라는 말.
리턴문이 작성되면 그아래에 어떤 코드가 있든 작성될수 없다.

 

리턴 타입은 자바에서 제공하는 그어떤 자료형으로 사용가능

 

리턴타입이 void이때 return문을 사용하는것은 메소드를 종료시키라

 

 

 

입력을해서 양수 음수를 표현하는것을 만들어 보았다.

korea(a); <- 이코드가 없으면 결과값이 안나오게 된다.

 

만약 return문을 조건에 만족했을때 가동하게 구현했을 때는 return문 아래에 다른 코드를 작성해서 실행하라고
구현할수 있음.
왜냐면 조건에 만족하지 않았을때는 return문을 실행하지 않게 되기 때문에 조건에 만족하지 않으면
다른 코드를 실행할 수 있게 됨. 해서 조건에 만족했을 때만 리턴을 시키면 다른 코드를 리턴문 아래에 작성가능

 

 

결과 값은 둘리 또치 이렇게 나온다.

 

리턴을 시킬때는 하나의 값만 리턴할수 있음
메소드가 배열을 리턴할수 있고 그렇게 배열을 메소드가 리턴한다면 리턴 값을 배열로 받아야함

 

메소드==함수
c 계열 언어에서는 함수라고 많이 표현// java에는 메소드라 표현//

 

 

조건이 참이여서 결과 값은 10이 나온다.

 

삼항 연산자: 조건식이 참일 경우에 : 좌항의 값을 리턴하고 조건식이 거짓일 경우에는 : 우항의 값을 리턴

 

★문제

 

1. 3개의 정수를 입력받아 가장큰수와 가장작은수 출력

 

 

클래스 메소드 를 MaxNum과MinNum 두개를 만든다. 입력값3개를 만들어준다.

 

 

2. 섭씨 온도를 입력하면 화씨 온도로, 화씨 온도를 입력하면 섭씨 온도로

섭씨=(화씨-32)/1.8 화씨=1.8*섭씨+32

 

 

클래스 메소드를 2개 공식을 만들어준다. 입력받는 코드를 만들어주고 case로 선택사항을 만들어준다.

마지막 선택오류사항을 만들어준다.

 

 

3. 매개변수로 3을 전달하면 3의 계승의 값을 리턴(양수) 재귀함수

 

 

 

위 코드를 입력받는걸로 만들고싶어서 만들어 보았다.

 

 

코리아!!가 3번 출력된다.

 

매개변수 : 함수나 방정식을 일반적으로 나타내기 위하여 사용된 변수

 

재귀함수 : 메소드 안에서 자기 자신을 호출하는 형태

재귀함수는 반드시 탈출할수 있는 조건이 존재해야 한다. 그렇지 않다면 메소드가 메소드를 계속호출하다가 프로그램이 에러나서 중단됨.
수학적 알고리즘을 프로그램으로 구현할때 재귀함수의 형태로 구현해야 쉽게 구현할수 있는 알고리즘이 많음.

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ random,Array  (0) 2017.07.08
JAVA/ Class  (0) 2017.07.05
JAVA/ 반복문(while,for)  (0) 2017.06.28
JAVA/ (비교,논리)연산자, 조건문 case  (0) 2017.06.24
JAVA/ 자료형,변수,입출력  (0) 2017.06.18

 

★반복문
- 특정 코드들을 반복적으로 실행해 주는 코드
while()
- 중괄호안에 코드를 반복적실행
소괄호안에 true작성하면 무한루프

 

while 소괄호에 boolean 자료형의 변수를 작성할 수도 있는데
그렇게 로직을 구현했을 때 변수의 값이 true일때 무한 반복

 

변수의 값이 true가 아니면 반복을 안시켜줌
while 소괄호에 조건식을 직접 작성해도됨

 

 

num1<num2 가 참이 되므로 결과를 출력하면 무한루프가 되버린다.

 

 

변수 num의 값: 0 ~ 변수 num의 값: 10 10개가 출력된다.

num++을 빼버리면 무한루프가 발생한다.

 

★while 실행 순서
1. 소괄호의 조건식이 참인지 거짓인지(0<=10)
2. 중괄호 안에 코드를 실행(num:1)
3. 소괄호 안에 조건식 비교(1<=10)
4. 중괄호 안에 코드를 실행 (num:2)

 

 

num+=2 는 짝수만 출력해준다.

 

중괄호 코드를 실행하고 나서 조건식이 참인지를 계속 확인.
특정 횟수만큼 반복가능

 

 

int cur=2 2단부터 실행 2단~9단 실행

 

while문 안에 while문이 존재하는것은 중첩이라고함
2개가 중첩되면 2중 while문이라함

 

반복문을 중첩하는 목적은 여러 변수의 값을 바꿔가면서 무엇인가를 반복하기 위함.
2중 while문을 구현한 이유는 변수 2개의 값을 바꿔가면서 코드를 돌리기 위함.

 

 

★문제 실습

 

1.양의정수를 입력받아 3을 입력하면 5 10 15 3개 출력하기.

 

 

 

System.out.print //println을 안쓰는거에 주의

count++ 쓰는거에 주의

 

2. 0을 입력받으면 중단하고 총합 구하기

 

 

int num=1  1말고 0을해주면 결과값이 안나오게 된다.

 

 

3. 입력받은 정수는 1이상, 1미만의 경우는 재입력요구 5번 입력후 총합출력

 

 

 

 

★do~while문도 while문 처럼 소괄호가 참이 되면 중활호의 코드를 반복적으로 실행시켜줌
do~while문은 소괄호가 거짓이면 딱 한번만 중괄호안의 코드를 실행.
while문은 소괄호가 거짓이면 한번도 중괄호 코드를 실행하지 않음

 

 

hi 3개 출력

 

 

 

10개 출력확인

 

 

위 코드랑 같은 결과 확인

 

 

LG-000-0-0 ~ LG-999-9-9 까지 출력

 

★반복문 for
for을 이용해서 중괄호 안에 코드를 반복적으로 실행시킴
for는 특정코드를 특정 횟수만큼 지정해서 반복에 사용

 

for의 소괄호 작성할수 있는 변수 선언하는 부분 생략가능
for의 소괄호 증감연산자 생략가능
for의 소괄호안에 모든부분 생략가능하지만 세미콜론은 생략하지 못함.
------------------------------------------------------------------

 

 

String[] 배열 만들어주기

new String[2]로 해줘도 성공 그대신 [1]로 해주면 오류

 

★변수에는 하나의 값만 저장 가능
배열에는 여러개의 값을 저장할수 있음.
배열을 사용하는 목적중 하나가 이름을 작명하기가 수월
배열을 사용하는 목적 중에 하나가 여러개의 값을 저장하고 접근해서 사용할 때 보다 효율적으로
사용하기 위해 배열을 씀

 

 

코드 5줄이 간략해서 주석인 한줄로 표현 가능

 

★배열을 선언할때 지정한 사이즈 그이상의 데이터를 저장할수는 없음.
사이즈를3이라고 지정하면 값을 3개만 저장할 수 있음. 0번인덱스부터 2번인덱스
String[] name1= {"aa","bb","cc","dd"};
- 배열을 선언과 동시에 초기화 할수 있는데 선언과 동시에 초기화를 할때는 배열의 사이즈를 지정하지 않아도됨.
- 지정한 값의 개수에 맞게 사이즈가 자동으로 지정

 

 

val[2] 가 30 -> 300으로 바뀌게 된다. 인덱스의 효과이다.

 

 

int[] 에서 []를 빼면 에러 발생.

 

배열의 값은 언제든지 재초기화 가능
모든 인덱스의 값을 동시에 재 초기화 하는 것은 불가능

 

Ctrl+shift 방향키  블럭씌우기 단축키

 

 

 


 

 

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ Class  (0) 2017.07.05
JAVA/ 메소드,return,함수  (0) 2017.07.02
JAVA/ (비교,논리)연산자, 조건문 case  (0) 2017.06.24
JAVA/ 자료형,변수,입출력  (0) 2017.06.18
JAVA/ 환경 및 개발구축준비  (0) 2017.06.17

★비교 연산자
- 두개의 값을 비교할때 사용
>,<,<=,>=,=,!=
!=  <- 좌항의값과 우항의 값이 같지 않다.

 

true 참
false 거짓

 

★boolean
- 참또는 거짓을 뜻하는 true false외에는 값으로 담을수 없다.
- 참 거짓중 한가지 표현

 

 

num1이 20보다 크다라고 비교했으므로 결과는 false로 나온다.

 

 

이 소스도 false가 출력된다 위 사진과 동일한 코드다.

 

정수 실수 변수 모두 비교 가능하다.
일반적으로 변수와 변수를 비교하거나 변수와 정수 or 실수를 비교하는게 일반적
문자를 비교할수 있다.

 

변수를 만든다는 것이 메모리 공간을 할당하는 것인데, 불필요하게 필요 없는 변수는 굳이 만들필요가
없다. 굳이 만들면 공간이 낭비한다.

 

 

va13!=val4로 설정하면 true가 출력된다.

 

 

변수의 값으로 문자를 저장하면 실제로는 숫자가 저장된다.
물론 눈에는 보이지 않는다.

결론은 문자를 비교하면 내부 적으로 숫자가 비교.

 

★String 즉 문자열을 비교 했을 때 해당 변수의 값이 일치하는 지 비교하는게 아니다
문자열을 비교하면 객체의 주소가 같은 지를 비교하게 됨.
String 자료형의 변수를 = , !=연산자를 사용하면 주소가 같은지를 비교

 

 

 

equals 값 비교 <- 두 변수의 값이 같으면 true 다르면 false

 

-----------------------------------------------------------------------

 

★논리 연산자 - 조건식 여러개를 비교하기 위해서 논리 연산자를 사용

 

 

하나라도 거짓이면 거짓이므로 이 코드의 결과 값은 false출력


&& : and 연산자
  좌항 값과 우항 값중 하나라도 거짓이면 거짓.
  모두 참이면 참
  둘다 거짓이면 거짓

 

 

하나라도 거짓이면 참이므로 이코드의 결과 값은 true

 

|| : or 연산자
 좌항 값과 우항 값중 하나라도 거짓이면 참.
 둘다 참이면 참 둘다 거짓이면 거짓

 

! : not 연산자
 참 거짓을 뒤집을때 사용
 

 

이코드는 양쪽다 true조건이므로 true출력


★조건식은 무조건 왼쪽에 있는 조건식을 먼저 비교함.
★not 연산자를 사용할때 우항에 조건식을 작성되려면 조건식을 ()소괼호로 묶어 줘야함

 

 

num<num2만 했을때 true조건인데 !부정을 써서 false가 출력


----------------------------------------------------------------------

 

★조건문 - 특정 조건에 만족했을 때 특정 코드를 가동하게 만들때 사용
★if문
- 소괄호의 작성한 변수의 값이 참이면 {}중괄호에 작성한 코드들을 실행해줌.
- 소괄호의 변수의 값이 거짓이면 {}코드를 실행하지 않음

 

if의 소괄호에 조건식을 바로 사용할수 있다.
해서 조건식을 비교한 결과를 프로그램에서 여러번 가져다가 사용해야 하면 비교한 결과를 변수에 담아두는게 효율적
불필요한 메모리공간을 낭비하지 않는 방법

 

 

이 코드는 위사진 코드와 동일하다.  더 간결하다.

 

★else문은 if문과 함께 사용
else의 중괄호 안에 있는 코드는 if의 조건식이 거짓일때 표현

 

조건식을 많이 비교할 수록 프로그램의 성능이 느려짐
프로그래머는 조건식을 최대한 적게쓴다.

 

 

else문 안에 if문이 들어갈수 있다.

 

 

char mathgrade=0을 해줘야 오류가 안난다.

 

★else if를 사용해서 if 문의 조건식을 여러개를 사용했을때 위에 조건식 부터 비교를 진행하고 아래 조건식으로 한개
한개 비교를 진행하게 됨

 

 

 

1을 입력하면 1을 입력하셨습니다 출력.

4 나 문자 입력하면 없는 숫자입니다 출력

 

★조건문 중에 switch문이 존재함.
switch문 변수의 값에 따라 다른 코드를 실행하게 만들 때 사용
default 키워드는 case가 만족하는게 한개도 없을때 실행할 코드 블럭을 만들 때 사용
비교연산자는 사용을 못한다.
메뉴를 만들때 효율적

 

 

 

 

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ Class  (0) 2017.07.05
JAVA/ 메소드,return,함수  (0) 2017.07.02
JAVA/ 반복문(while,for)  (0) 2017.06.28
JAVA/ 자료형,변수,입출력  (0) 2017.06.18
JAVA/ 환경 및 개발구축준비  (0) 2017.06.17

System.out.println( 3+4 )
★산술 연산자
+ <--좌항의 값과 우항의 값을 더하기 (부호 연산자)
- <--좌항의 값과 우항의 값 빼기 (부호 연산자)
* <--좌항의 값과 우항의 값 곱하기
/ <--좌항의 값과 우항의 값 나누기한 몫
% <--좌항의 값에 우항의 값을 나누기한 나머지

 

결과

9

16

15

1

4

 

= <-- 우항에 있는 값을 좌항에 대입

 

문자 기호 : 알파벳, 소문자 특수문자 한글

 

문자열이라고 하는 것은 문자가 2개 이상인 것

 

' <-- 싱글쿼터사이에 있는 문자임
"" <-- 더블쿼터 사이에 있는 것이 문자열.

 

숫자는 ' "" 필요 없음
' 는 한글자만 가능
"" 여러글자 가능

 

' 안쓴다.

 

 

System.out.println("안녕하세요."홍길동"입니다"); 이렇게 하면 오류가 발생한다. 그래서 홍길동에 역슬래시로

오류가 발생하지 않게 해야한다.

 

★메타 문자 : 특수기호(!@$%!@'""~)가 특수한 기능을 부여 받은 문자.
메타 문자를 이스케이프 시퀀스라고 칭함
더블쿼터 안에 더블쿼터 불가능

 

메타문자의 특수 기능을 제거하는 것을 이스케이프 처리한다고 표현
escape: 기능을 제거  -> System.out.println("안녕하세요. \"홍길동\" 입니다");

 

원표시나 역슬래시는 같은 문자.

 

\n (줄 바꿈) 메타 문자.

 

하나의 println으로 출력할 것을 여러개의 println을 사용해서 출력하면 성능 저하
콘솔에 출력할 내용을 한줄을 출력하는 거에 하나의 println을 사용하면 가독성이 뛰어남

 

// 주석, 코드설명
한줄 아무데나 ctrl+/  주석 단축키

 

 

 

블럭 씌운 상태에서 단축키 사용하면 블럭 친 행을 전부 주석처리

 

System.out.println("동동은 "+"동해번쩍 서해번쩍");

+ <-- 산술연산자가 아니라 붙임 연산자

 

 

변수선언과 300값으로 초기화해주면 전체적으로 코딩할때 수월해진다.

 

 

★변수

- 메모리 공간을 분류하는 단위
- 변할수 있는 수를 뜻. 언제든지 바꿔 사용가능

 

★변수의 자료형

- 변수에 저장하는 데이터의 자료의 형태를 뜻
- 이 메모리 공간에 어떤 형태의 데이터를 저장하는지 컴퓨터에게 알려줘야한다.

 

★int - 저장하는 데이터가 정수.

 

자바에서 변수선언은 여러개를 한줄에 진행할수 있자만, 여러 변수 초기화는 한줄에 할수 없다.

 

 

println 으로 사용하게 되면

 

 

입력: 옆에 써지지 않고 다음줄에 쓰여져서 보기 흉하다.

 

입력 대기 상태 : 입력을 기다리고 있는 상태
nextInt() 라는 함수가 실행되면 입력 대기 상태를 만들어서 사용자의 입력을 기다리게됨.

 

 

이 예제는 정수 두값을 더하는 코드다.

nextInt()대신에 nextLine()을 쓰면 오류.

 

★자료형중에 double 실수를 저장.
nextDouble();

 

 

 

 

String 은 nextLine을 사용해야한다.

nextLine() 함수를 통해 사용자한테 문자열을 입력 받을수 있다.
- 사용자가 입력한 값을 String 자료형의 변수에 값으로 넣을수 있음.

 

 

 

자료형 중에 char 자료형은 문자를 저장하는 자료형
' 한글자만

 

 

결과가 20이 출력된다.

 

 

결과 6 9 출력

 

 

결과 10 11 출력

 

 

 

 

★복합 연산자
+= : 좌항의 값과 우항의 값을 더하기 연산을 해서 좌항의 값으로 초기화하라는 의미
-= :
좌항의 값과 우항의 값을 빼기 연산을 해서 좌항의 값으로 초기화하라는 의미
*= : 좌항의 값과 우항의 값을 곱하기 연산을 해서 좌항의 값으로 초기화하라는 의미
/= : 좌항의 값과 우항의 값을 나누기 연산을 해서 좌항의 값으로 초기화하라는 의미
%= : 좌항의 값과 우항의 값을 나머지 연산을 해서 좌항의 값으로 초기화하라는 의미

 

이항 연산자 : 좌항과 우항을 모두 갖는 연산자 (10+20)
단항 연산자 : 좌항이면 좌항 우항이면 우항으로 하나의 항만을 갖는 연산자 (+7)

 

★증감 연산자
-전위 연산자 : ++변수이름 , 우선순위가 가장 높다
-후위 연산자 : 변수이름++ , 우선순위가 가장 낮다

 

★메모리 - 데이터를 저장하는 공간

★RAM - 메모리를 제공해 주는 HW (1회용)
 (휘발성 메모리) 컴퓨터 전원꺼진 순간 데이터가 날라간다.
장점 : 속도가 매우 빠르다.
단점 : 저장할수 있는 공간 사이즈가 작다.

 

★HDD - 메모리를 제공해주는 HW
 (비 휘발성 메모리) 전력공급이 중단되도 저장된걸 기억한다.
장점 : 저장할 수 있는 공간의 사이즈가 큼
단점 : 속도가 매우 느림.

 

★SDD - 비 휘발성 메모리.
HDD보단 속도가 빠르다.

 

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ Class  (0) 2017.07.05
JAVA/ 메소드,return,함수  (0) 2017.07.02
JAVA/ 반복문(while,for)  (0) 2017.06.28
JAVA/ (비교,논리)연산자, 조건문 case  (0) 2017.06.24
JAVA/ 환경 및 개발구축준비  (0) 2017.06.17


하드웨어 : 컴퓨터 노트북 이런 장비에 정착 되 있는 전자 기기
os: 하드웨어를 제어 및 관리하는 프로그래밍

 

운영체제는 32bit , 64bit

bit는 컴퓨터 용량의 단위중 가장 작은 단위

 

32bit면 한번에 처리할수 있는 용량
64bit 한번에 많은 것을 처리할수 있어 성능이 빠르다.

 

★사용자 환경의 종류
GUI (그래픽 유저 인터페이스) : 그래픽 환경에서의 작업하는 환경
CLI(cmd) : 명령어 환경에서의 작업하는 환경

 

cmd = 콘솔 = 커멘드창 = 명령프롬프트

 

cls = clear

 

system.out.println("hi")  hi 출력, println 함수라고 칭함

 

컴파일러 : 사람이 쓰는 프로그래밍 언어를 컴퓨터 언어로 번역

바이트코드는 jvm이 해석할수 있는 코드

jvm = 자바 가상 머신

바이트코드는 jvm을 읽어 들여서 그 코드에 있는 명령대로 작업을 진행 해줌(프로그램 가동)

 

java는 jvm에서 컴파일 작업을 추가로 진행하기 때문에 프로그램을 실행할 때 컴파일 한번 더한다.

다른 언어들에 비해 느리다.
장점- 운영체제에 종속적이지 않다.

 

println(" ")  //""문자열을 나타낸다.

 

이클립스 : 자바 프로그래밍 개발 도구
NetBeans, 이클립스, 아톰 등등    =  IDE
미국 - 아톰
한국 - 이클립스

 

★java SE(standard edition): java의 표준안
★jdk(java development kit): SE 를 기반으로 만들어진 패키지 개발에 필요한 각종 도구들과 있는 패키지
★JRE(Java Runtime Environment): 자바로 만든 프로그램을 실행하기 위해서 필요한것들이 묶여있는 패키지
   jvm과 표준 라이브러리라는 것이 묶여있다.

 

★라이브러리 : 이미 사전에 만들어져 있는 소스코드
- 외부 라이브러리 : 개발자가 만든 라이브러리
- 내장 라이브러리 : java에서 자체적으로 제공하는 라이브러리

 

이클립스에서의 프로젝트란 프로그램을 구분하는 단위

만약 이클립스에서 프로그램 1개를 만들기 위해서는 프로젝트를 만들어야한다.

 

 

public static void main(String args[])

- public : 접근 제한자, 어디서든 참조할수 있는 넓은 범위

- static : 메모리에 제일 먼저 로딩

- void : 리턴 값을 의미

- main : 메소드의 이름

- String[] : String 형 배열

- args : 배열의 이름

 

코드 자동완성  sys 치고 ctrl+spacebar 원하는거 클릭

 

bin 폴더 확장자 class  바이트코드
src 폴더 자바 소스코드

 

급 궁금. c언어

void main() int main()

void는 없다는 개념

그러면

void main() : main이라는 함수이고 리턴값이 없다(void)

int main(): main이라는 함수이고 함수의 리턴값이 int형이다. 그래서 보통 프로그램 종료를 알리는 return 0를 마지막에 넣어준다.

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ Class  (0) 2017.07.05
JAVA/ 메소드,return,함수  (0) 2017.07.02
JAVA/ 반복문(while,for)  (0) 2017.06.28
JAVA/ (비교,논리)연산자, 조건문 case  (0) 2017.06.24
JAVA/ 자료형,변수,입출력  (0) 2017.06.18

+ Recent posts