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

★ Hello World! 안녕하세요! 신재구입니다! ★

♬ 즐겁게 코딩하고 꿈꾸는 프로그래머가 됩시다! ♬

☞ 불편사항 및 정오표 제보 : worntls94@gmail.com

홈으로


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

◆ 코드하우스 수업 필기 정리본 ◆

▷ 이클립스 사용 ◁



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

※ 자바란? ※

자바개념 총정리


--------------------------------------------------------- ● o ● --------------------------------------------------------

* java 기본구조

ㄴpackage java1205; //

public class hello {
         public static int sum(int n, int m) {return n + m;} // 메소드
         public static void main(String[] args) {}; //
}




* public static void main(String[] args)

ㄴ html body와 비슷하다고 생각하면 된다.
ㄴ public : 공개가 되는. 여러 스타일이 있는데 public은 공개가 되야할때.
ㄴ static : 실행시 상태가 고정된다. 우선
ㄴ void : 그냥 받아 들인다. int 등으로도 기입 가능.
ㄴ main : 실행되는 메인.
ㄴ (String[] args) : []배열에서 args라는 변수명. 변수명은 마음대로 지정가능.
ex)


* 변수 범위를 나타내는 중괄호 {} 블록

ㄴ 조건문과 반복문의 중괄호 {} 블록 내에 선언된 변수는 해당 중괄호 {} 블록 내에서만 사용 가능




* 컴파일 - 실행

ㄴ ctrl + f11
ㄴ 작성하면서 작동 확인
ex)


* 자바에선 변수의 자료형을 지정해줘야 한다.


ex)


* 자바에선 함수를 메소드라고 부른다.

ㄴ C언어 등에서도
ex)



예시.
-----------------------------------------------------------------------------------------------------
package java1205;

public class hello {

        public static int sum(int n, int m) {
                 return n + m;
        }


        public static void main(String[] args) {
                 // TODO Auto-generated method stub
        int i = 20;         // int 정수형 i 변수에 20이라는 값을 대입
        int s;         // int 정수형 s 변수를 선언
        char a;         // char 문자형 a 변수를 선언 - char 한글자

        s = sum(i, 10);         // s = 30
        a = '?';
        System.out.println(a);         // a = ? 문자를 대입
        System.out.println("Hello");
        System.out.println(s);
        };
}

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




* 클래스 만들기

ㄴ Hello 이름의 클래스 선언
ㄴ public class Hello {}
ㄴ class 키워드로 클래스 선언
ㄴ public으로 선언하면 다른 클래스에서 접근 가능
ㄴ 클래스 코드는 { } 내에 모두 작성
ex)


* 주석문

ㄴ // 한 라인 주석
ㄴ /* 여러 행 주석 */
ex)


* main() 메소드

ㄴ자바 프로그램은 main()에서 실행 시작
ㄴpublic static void main(String[] args) {}
ㄴ public static void으로 선언
ㄴ String[] args로 실행 인자를 전달 받음
ex)


* 메소드

ㄴ C/C++에서의 함수를 메소드로 지칭
ㄴ public static int sum(int n, int m) {
...
}
ㄴ 클래스 바깥에 작성할 수 없음
ex)


* 메소드 호출

ㄴ sum() 메소드 호출
ㄴ s = sum(i, 10);
ㄴ sum() 호출 시 변수 i의 값과 정수 10을 전달
ㄴ sum()의 n, m에 각각 20, 10 값 전달
ㄴ sum()은 n과 m 값을 더한 30 리턴
ㄴ 변수 s는 정수 30을 전달받음
ex)


* 변수 선언

ㄴ 변수 타입과 변수 이름 선언
int i=20;
char a;
ㄴ 메소드 내에서 선언된 변수는 지역 변수 // 지역 변수는 메소드 실행이 끝나면 저장 공간 반환
ex)


* 문장

ㄴ ;로 한 문장의 끝을 인식
int i=20;
s = sum(i, 20);
ex)


* 화면 출력

ㄴ 표준 출력 스트림에 메시지 출력
ㄴ System.out.println("Hello"); // "Hello" 화면 출력
ㄴ 표준 출력 스트림 System.out의 println() 메소드 호출
ㄴ println()은 여러 타입의 데이터 출력 가능
ㄴ println()은 출력 후 다음 행으로 커서 이동
ex)


* 식별자란?

ㄴ클래스, 변수, 상수, 메소드 등에 붙이는 이름
ㄴ식별자의 원칙
ㄴ‘@’, ‘#’, ‘!’와 같은 특수 문자, 공백 또는 탭은 식별자로 사용할 수 없으나 ‘_’, ‘$’는 사용 가능
ㄴ유니코드 문자 사용 가능. 한글 사용 가능 // 한글은 될수 있으면 사용 지양
ㄴ자바 언어의 키워드는 식별자로 사용불가
ㄴ식별자의 첫 번째 문자로 숫자는 사용불가
ㄴ‘_’ 또는 ‘$’를 식별자 첫 번째 문자로 사용할 수 있으나 일반적으로 잘 사용하지 않는다.
ㄴ불린 리터럴 (true, false)과 널 리터럴(null)은 식별자로 사용불가
ㄴ길이 제한 없음

** 대소문자 구별
ㄴ int barChart; 와 int barchart;는 서로 다른 식별자 선언



* 자바 예약어

abstract
assert
boolean
break
......

ex)


※ 자바 데이터 타입 ※

ㄴ 자바의 데이터 타입
ㄴ 용도에 따라 메모리 생각하고 타입 선택할 것

ex)


* 자동 타입 변환

ㄴ 데이터 타입을 다른 타입으로 변환하는 것
ㄴ 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 대입될 때 발생



ㄴ 정수 타입이 실수 타입으로 대입되면 무조건 자동 타입 변환이 됨
ㄴ 예외: char 타입보다 허용 범위가 작은 byte 타입은 char 타입으로 자동 변환될 수 없음





* 캐스팅 연산자로 강제 타입 변환하기

ㄴ 큰 허용 범위 타입을 작은 허용 범위 타입으로 쪼개어서 저장하는 것
ㄴ캐스팅 연산자로 괄호( )를 사용하며, 괄호 안에 들어가는 타입은 쪼개는 단위




ㄴ예: int → byte 강제 타입 변환





* 상수 선언

ㄴ final 키워드 사용
ㄴ 선언 시 초깃값 지정
ㄴ 실행 중 값 변경 불가
ㄴ 바뀌면 안되는 것들을 상수로 선언
ㄴ final 데이터 타입 상수명 = 값;
ㄴ final double PI = 3.14; // 원주율을 상수로 선언








* 1byte = 8bit = 28 = 256 // 표현 0~255 or -128 ~ 127




*기본 타입 : 8 개

ㄴ 기본 타입의 크기는 CPU나 운영체제에 따라 변하지 않음

**논리형

boolean // 1bit : True False 구분

**문자형

char // 2byte : 한글자 - 문자형

**정수형 - 소숫점이 없는 숫자

byte // 1byte : -128 ~ 127
short // 2byte : -32768 ~ 32767
int // 4byte : -231 ~ 231 -1
long // 8byte : -269 ~ 263 -1

** 실수형 - 소숫점이 있는 숫자

float // 4byte
double // 8byte




*레퍼런스 타입 : 1 개이며 용도는 다음 3 가지

**클래스(class)에 대한 레퍼런스
**인터페이스(interface)에 대한 레퍼런스
**배열(array)에 대한 레퍼런스
ex)


* 문자열

** 문자열은 기본 타입이 아님

** String 클래스로 문자열 표현
ㄴ 문자열 리터럴 - “JDK”, “한글”, “계속하세요”
-----------------------------------------------
String toolName="JDK";
-----------------------------------------------

** 문자열이 섞인 + 연산 -> 문자열 연결
-----------------------------------------------
toolName + 1.8 -> "JDK1.8"
"(" + 3 + "," + 5 + ")" -> "(3,5)"
System.out.println(toolName + "이 출시됨"); // "JDK1.8이 출시됨" 출력
-----------------------------------------------
ex)


*


ex)


*


ex)

top

※ 변수와 선언 ※



--------------------------------------------------------- ● o ● --------------------------------------------------------

* 변수

ㄴ 프로그램 실행 중에 값을 임시 저장하기 위한 공간 // 변수 값은 프로그램 수행 중 변경될 수 있음
ex)


* 변수 선언

ㄴ 데이터 타입에서 정한 크기의 메모리 할당

-----------------------------------------------
int radius;
double weight = 75.56;
char c1 , c2, c3 = 'c'; // c3 에만 'c'들어가고 c1,c2는 선언만 된 상태
-----------------------------------------------



* 진수 이해하기

10진수 : 0 ~ 9 // 15
8진수 : 0 ~ 7 // 015
16진수 : 0 ~ F // 0x15
           0 ~ 15
           A 11
           B 12
           C 13
           D 14
           E 15
           F 16
2진수 : 0 1 // 0b0101
ex)


* 리터럴과 정수 리터럴


ex)


* 리터럴(literal)

ㄴ 프로그램에서 직접 표현한 값
ㄴ 정수, 실수, 문자, 논리, 문자열 리터럴 있음
ex)


* 정수 리터럴

ㄴ 10진수, 8진수, 16진수, 2진수 리터럴
ex)

15 -> 10진수 15                                                int n = 15;
015 -> 0으로 시작하면 8진수. 십진수로 13              int m = 015;
0x15 -> 0x로 시작하면 16진수. 십진수로 21             int k = 0x15;
0b0101 -> 0b로 시작하면 2진수. 십진수로 5             int b = 0b0101



* 정수 리터럴은 int 형으로 컴파일


ex)


* long 타입 리터럴은 숫자 뒤에 L 또는 l을 붙여 표시


ex) long g = 24L;



* 실수 리터럴

** 소수점 형태나 지수 형태로 표현한 실수

12. 12.0 .1234 0.1234 1234E-4


** 실수 타입 리터럴은 double 타입으로 컴파일

double d = 0.1234;
double e = 1234E-4; // 1234E-4 = 1234x10-4이므로 0.1234와 동일



** 숫자 뒤에 f(float)나 d(double)을 명시적으로 붙이기도 함

ㄴ D를 대문자로 표기 구분
float f = 0.1234f;
double w = .1234D; // .1234D와 .1234는 동일

ex)


* 자바에선 문자와 문자열을 구분한다. // 자바스크립트에선 "", '' 구분안하고 사용하지만.

** 문자 : char

ㄴ 단일 인용부호(' ')로 문자 표현
ㄴ char name = 'A' ;
ㄴ 유니코드로도 표현가능. \u다음에 4자리 16진수로, 2 바이트의 유니코드(Unicode) ex) char c = \uae00; // '글'의 유니코드 값(ae00) 사용

** 특수문자 리터럴은 백슬래시(\)로 시작




** 문자열 : String

ㄴ 인용부호(" ")로 문자 표현
ㄴ String name = "hello"





* 유니코드 표

한글 유니코드 표





* 아스키코드 표





* print()

ㄴ 한줄로 출력
ㄴ 수치 계산은 ()로 묶어야 계산된다. ex) System.out.print("3과 4를 더함" + (3 + 4));
ex)


* println()

ㄴ 한줄씩 출력
ex)


* 변수를 설정하고 계산 할때는 반드시 초기값을 설정해줘야 한다. 그렇지 않으면 null이 되어 수학적으로 계산이 안된다. 초기값을 넣어줘야 대입한 값으로 계산을 한다.


ex)


* 문자와 숫자를 계산하면 문자를 아스키 코드의 숫자로 변환해서 계산해버린다.


ex)


* 논리 타입 리터럴

ㄴ 논리 값 표시
ㄴ true 또는 false 뿐
ㄴ boolean 타입 변수에 치환하거나 조건문에 이용





* 자바 13버전 이후론 """로도 "를 넣을 수 있다


ex)


* 자바의 키 입력과 System.in

ㄴ System.in
ㄴ 키보드와 연결된 자바의 표준 입력 스트림
ㄴ 입력되는 키를 바이트(문자 아님)로 리턴하는 저수준 스트림
ㄴ System.in을 직접 사용하면 바이트를 문자나 숫자로 변환하는 많은 어려움 있음
ex)


* 자바 13버전 이후론 """로도 "를 넣을 수 있다


ex)


* Scanner 클래스

** 읽은 바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 변환하여 리턴
ㄴ java.util.Scanner

** 객체 생성



ㄴ 키보드에 연결된 System.in에게 키를 읽게 하고, 원하는 타입으로 변환하여 리턴


















* 자바 입력문

ㄴ System.in
ㄴ 키보드와 연결된 자바의 표준 입력 스트림
ㄴ 입력되는 키를 바이트(문자 아님)로 리턴하는 저수준 스트림
ㄴ System.in을 직접 사용하면 바이트를 문자나 숫자로 변환하는 많은 어려움 있음



* 자바 입력문

표준 출력 : System.out
표준 입력 : System.in

import java.util.Scanner;

Scanner scan = new Scanner(System.in);

scan.next()              한 문자열로 반환
scan.nextLine()         한 줄을 하나의 문자열로 반환
scan.nextInt()           입력 토큰을 한 정수로 반환
scan.nextDouble()     입력 토큰을 double형 실수로 반환
scan.nextFloat()        입력 토큰을 float형 실수로 반환


경로확인 : C:\Program Files\Java\jdk1.8.0_251\src.zip\java\util




* 비교 연산자



ex)


* 논리 연산자

참 : 1
거짓 : 0
* AND(&&) : 참참 일때 참
* OR(||) : 참참, 참 거짓, 거짓 참 일때 참
* XOR(^) : 참 거짓, 거짓 참 일때 참
ex)


* 비트 연산자

ㄴ 이진수로 만들어서 규칙에 따라 계산
ex)


* 삼항 연산자

ㄴ 조건?항목1:항목2
ex)


* 키워드

ㄴ 예약어를 키워드라고도 부른다
ex)


* 조건문

ㄴ 특정한 조건을 만족/만족안할시 수행하는 작업과 조건을 미리 정해두는것
ex)


* if

ㄴ 가장 기본이 되는 조건문
ㄴ if(조건식){실행부분};
ㄴ if-else
ㄴ if - else if : 다중 if문
ㄴ 중첩 if문 : if문 안에 if문을 사용할 수 있다





* 블럭안에선 {}을 생략해도 되지만 들여쓰기를 잘하고 웬만하면 생략안하는게 낫다.


ex)


* Integer.parseInt();

ㄴ 형전환
ex)


* import java.util.*;

ㄴ java 전체 클래스를 사용 할 수 있다.
ㄴ import java.util.Scanner; // 이런식으로 사용할 클리스를 직접 지정할 수도 있다.
ex)


* 터미널, cmd, 명령프롬프트

ㄴ 다 같은말
ex)


* 편집기는 각자 특성이 있다

ㄴ 비주얼 스튜디오 : 텍스트 편집기
ㄴ 이클립스 : 자바
ex)


* equals()

ㄴ 문자열 비교시 사용
ㄴ 문자열은 == 등으로 비교하면 잘안됨
ex)


* print, println, printf


ex)


* scan.close();

ㄴ 충돌을 일으키지 않게 사용한건 종료시켜야.
ex)


* Scanner

ㄴ 키보드로 부터 입력하는 데이터를 읽기 위한 Scanner 객체
ㄴ Scanner scan = new Scanner(System.in);
ex)


* 변수는 덮어쓰기는 가능하지만 선언한 형이 있다면 다른 형으로 중복 선언 할 수 없다.

----------------------------------------------------------------------------------------------------------
형변환을 하려고 int a, bouble a 두개를 쓰면 컴퓨터는 같은 이름이 두번 정의 되었다고 인식한다.
오류가 나지 않으려면 다른 이름을 써야 한다.

int a;
double a = (bouble) a;
----------------------------------------------------------------------------------------------------------
값을 덮어 씌우는 것은 상관없다.

int a;

a = 9;
a =10;
a = 200;

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








* 조건을 너무 많이 중첩해서 쓰면 오류가 날수 있다.


ex)


* 변수엔 반드시 값이 들어가야한다. 안그럼 오류가 난다.


ex)


* dead code -- 이클립스

ㄴ 이것이 없어도 프로그램이 작동한다.
ㄴ 하지만 필요없는 것이 아닐수도 있다.
ex)


* 클래스 생성시 클래스 명과 내용에서의 클래스 명과 같아야 한다.


ex)


* JDK : 자바 개발자 키트 <- 프로그램 작성

ㄴ 설치 용량 : 크다.
ex)


* JRE : 실행 할 수 있는 라이브러리

ㄴ 설치 용량 : 작다.
ㄴ 최신 JRE를 배포할때 같이 설치하도록 유도
ex)


* switch

ㄴ 논리 연산자 사용없이 쉽게 다양한 경우 사용 가능
ㄴ case 'A', case 'B' : // 나열할 수 있지만 최신 자바에서 가능.
ㄴ break 를 사용해서 벗어나야 한다.


-----------------------
switch{
     case 1:;
         break;
    case 2:;
        break;
    default;
}
-----------------------









* for

ㄴ 루핑에 안빠지게 false가 나오는 조건식을 넣어야 한다.

-------------------
for(초기값; 조건식; 증감식 ){
     실행문;
}

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




* while

ㄴ 초기값 지정해야한다.
ㄴ 무한루프 안빠지게 조건식을 작성해야


-------------------
초기값
while(조건식){
    실행문;
}
-------------------








* do ~ while

ㄴ 초기값 지정해야한다.
ㄴ while 문과 다르게 실행문을 한번은 실행한다.

--------------------
초기값
do{
    실행문
}while(조건식);
--------------------




* Scanner 사용시 씹히는 문제

ㄴ 엔터까지 대기열에 넣어버리기 때문에
ㄴ int, double 등은 엔터 무시하고 값을 취함
ㄴ line등은 안그렇기때문에 scan.nextLine(); 등을 넣어서 처리

------------------------------------------
flag = scan.next();
         scan.nextLine();
     } while (flag.equals("y"));
------------------------------------------




* 변수명.length()

ㄴ 문자열에서 글자 갯수를 센다.
ㄴ 빈칸 ' ', 빈줄 '\n', 탭 '\t' 의 숫자도 센다.
ex)


* 변수명.charAt();

ㄴ 문자열에서 문자를 하나씩 뽑아낸다
ㄴ 뽑아낸 문자는 문자로 인식한다
ㄴ 첫번째 문자는 0이다.
ㄴ 컴퓨터는 0부터 카운터한다.
ex)


* 배열

ㄴ 배열은 같은 타입의 값만 관리한다.
ㄴ 배열의 길이는 늘리거나 줄일 수 없다.
ㄴ 같은 타입의 변수를 하나의 묶음으로 관리합니다.
ㄴ int[] 변수명 = new int[100]; // 변수0, 변수1 ......... 변수99까지 생성됨
ㄴ 인덱스 = 방번호 // 0부터 시작, n을 입력하면 방은 n개지만 마지막 방번호는 n-1 이다
ㄴ int[] a = new int[3] // a[0], a[1], a[2] 생성
ㄴ String[] season = {"문장1", "문장2", "문장3", "문장4"}; // String도 가능



** 배열 쉽게 선언하기
ㄴ 타입 [] 배열이름 = new 타입[] { 요소1, 요소2, 요소3, 요소 4} ;
ㄴ 타입 [] 배열이름 = { 요소1, 요소2, 요소3, 요소 4} ; // new 타입[] 생략가능
ㄴ int[] student = {30, 20, 10};
ㄴ 타입 [] 배열이름;
ㄴ 타입 배열이름[];
-------------------------------------------------------------------
String[] season = { "Spring","Summer","Fall","winter" };

배열 선언시 초기값
byte[]     0
char[]     '\u0000'
short []     0
int[]     0
long[]     0L

float[] 0.0F
double[] 0.0

boolean[] false

클래스[] null
인터페이스[] null

float a = 1.1; // f 생략시 에러
float b =1.2f;

double c = 1.3; // d 생략 가능
double d = 1.4d;

float는 소수점 7자리, double 소수점 16자리 표현
float를 사용할 때 뒤에 f를 붙여주어야 한다.
-------------------------------------------------------------------




* 배열이름.메소드

ㄴ . 뒤에 메소드 호출
ㄴ 배열이름. length


* .length

ㄴ 문자열 길이 카운트







* for에 배열을 사용


// 시험 점수의 평균 구하기
    int[] student = {100, 95, 90, 88, 93};
    int sum =0;

    for (int i=0; i<:student.length; i++) {
    sum += student[i]; //총점 누적
    }

    System.out.println("시험 점수의 평균: " + sum/(float)student.length);



* import java.util.*;

ㄴ Arrays, Scanner, Random 등은 사용하려면 import 필요
ex)


* 다차원 배열

ㄴ 행과 열로 이해하면 된다
ㄴ 타입[][] 배열이름 ; // 선언방법

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

int[][] student = new int[3][3]; 9개     // 생성할때만 1부터 카운터

student[0][0]     // 생성된 배열을 선택할때는 0부터
student[0][1]
student[0][2]
student[1][0]
student[1][1]
student[1][2]
student[2][0]
student[2][1]
student[2][2]


행열이라 생각하면 된다
student[0][0] student[0][1] student[0][2]
student[1][0] student[1][1] student[1][2]
student[2][0] student[2][1] student[2][2]


int[][] student = {
     {배정값0, 배정값1, 배정값2},
     {배정값3, 배정값4, 배정값5},
     {배정값6, 배정값7, 배정값8}
}


int[][] student = new int[3][3][3]; // 27개

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




* 배열 다루기

ㄴ 배열의 데이터를 사용하거나 수정한다
ㄴ System.arraycopy( src, srcPos, dest, destPos, length);
ㄴ System.arraycopy( 복사할 배열 , 복사를 하기 시작할 인덱스, 덮어쓸 배열, 덮어쓰기 시작할 인덱스);







* foreach

ㄴ 자바에서는 배열을 순환할 때 기존의 반복문보다 편리한 작업을 할 수 있도록 foreach문을 제공
ㄴ 이건 무조건 배열에 있는걸 전부 출력한다.
ㄴ i, j 등은 변수 명은 임의로 넣을 수 있다.

-------------------------------------------------------
1차원.
String[] a = {"Java", "Hello", "Programming"};

    for(String i : a) {
         System.out.println(i);
    }

-------------------------------------------------------
2차원.
// foreach 사용
    for(int []i : a) { // []i 행을 통채로 가져온다.
          for(int j : i) { // []i 통채가져온 행에서 하나씩 뽑아서 출력한다.
               System.out.println(i);
          }
    }

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




* insert 켜져 있으면 텍스트 입력 깜빡이가 두껍게 된다. -- 이클립스


ex)


* String을 실수로 변환하는 방법?

ㄴ 자바에선 기본값 double 말고도 Double 클래스를 제공한다.
ㄴ Double 클래스에서 parseDouble을 사용하면 String을 Double로 바꿀수 있다.
ㄴ double studentNumD = Double.parseDouble(studentNum);
ex)


* 밖에서 선언된 변수는 값을 바꿔도 저장되어 있다.


ex)


* 반복문을 마무리 안하면 cup 점유율이 너무 높아져서 다운된다.


ex)


*


ex)


*


ex)


*


ex)


*


ex)


*


ex)


*


ex)


*


ex)


*


ex)


*


ex)


*


ex)

top

※ 메소드 ※

--------------------------------------------------------- ● o ● --------------------------------------------------------

* 메소드(기능)


자바 프로그램 <- 클래스의 모음 : 하나 이상의 클래스들로 구성
클래스 <- 데이터 선언들과 메소드 저의 들로 이루어 진다.
메소드는 클래스의 주요 구성요소이다.
메소드 <- 특정 작업을 수행하는 자바 문들의 모음이다.

표준 클래스 라이브러리에 있는 메소드

System.out.println : println 메소드를 호출

메소드 종류(2가지)
- 특정 작업을 수행하고 결과 값을 반환하는 메소드
- 특정 작업을 수행하고 결과 값을 반환하지 않는 메소드


String 클래스의 length 메소드 : 문자 길이를 반환
System.out 객체의 println 메소드 : 주어진 문자열을 출력하고 어떤 값도 반환하지 않는다.

ex)


* 메소드 정의

ㄴ 메소드는 값을 반환하느냐 반환하지 않는냐에 따라 다르게 정의
ㄴ 모든 메소드는 클래스내에 포함된다.

** 메소드는 머리부와 몸체로 이루어진다.

--------------------------------------------------------------------------------------------
Public 반환유형 메소드이름(형식매개변수 목록)     <- 머리부
{                                                                 <- 몸체
    문 1;
    문 2;
    문 n;
    return <연산식>      <- - 반환값 정의


}
--------------------------------------------------------------------------------------------

예시)

public double computerAverage(int number1, int number2, int number3)
{
     return (number1 + number2 + number3) / 3.0;
} 반환값O
--------------------------------------------------------------------------------------------
Public void dutchPay(int totalAmount, int count)
{
     int dutchpayAmount;

     if (count == 0) {
          System.out.println("사람의 수가 0이다");
          return;
     } else {
          dutchpayAmount = totalAmount / count;
          System.out.println(":"+dutchpayAmount);
     }
}                반환값X




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




* 메소드 작성

ㄴ 모든 메소드는 특정 작업을 수행한다.
ㄴ 한 메소드가 특정 작업을 어떻게 수행하는지는 보통 알고리즘에 의해 기술된다.
ㄴ 알고리즘은 특정 문제를 풀기 위한 과정을 단계별로 기술한 것이다.
ㄴ 알고리즘은 보통 의사코드(pseudocode)와 순서도(flowchart) 중 하나를 사용하여 기술한다.

** 의사코드는 한들 문장들과 자바 문들을 혼합한 것이다.
의사코드는 자바 언어의 구문 규칙들을 그대로 따르지 않고 코드가 어떻게 수행될 지를 보여주기에
충분한 구조를 제공한다. 전문 프로그래머들은 의사코드가 자바로 프로그래밍하는 것에 더 가깝기
때문에 의사코드를 선호한다. 다만 의사 코드는 복잡한 조건들을 다루거나 반복의경우 초보자가
명확하게 기술하기가 쉽지 않다. 이런 경우 자주 사용되는 방법이 순서도이다.
순서도는 어떤 문제를 해결하는 데 필요한 논리적인 단계들을 그림으로 표시한 것이다.

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

예제.
두 정수들을 넘겨받아 그 중 작은 정수를 찾는 메소드를 작성

1. 메소드의 이름 : findMin
2. 두 정수에 대한 변수 이름 : number1, number2
3. 두 정수에 대한 데이터 형 : int
4. 메소드 머리부 : public int findMin(int number1, int number2)
5. 메소드가 수행하여 최소값을 구하는 것




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



* static

ㄴ 메모리에 고정하겠다
ex)


* 메소드 만드는 이유

ㄴ 반복되는 것을 기능으로 만들어 불러내서 사용
ㄴ 클래스로 만들면 다른 곳에서도 사용 가능
ex)


* 재귀 메소드

보통 메소드는 어떤 작업을 수행하기 위해 다른 메소드를 호출한다.
그러나 메소드가 자기 자신을 호출할 수 있다.
이런 메소드는 재귀 메소드(recursive method)라고 부른다.
재귀(recursion)는 한 메소드가 어떤 작업을 수행하기 위해 자기 자신을 호출하는 프로그래밍 기법이다.

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

예제
생일날 큰 선물 상자를 받았다고 가정.
선물 상자를 열어보니 그 안에 테니스 라켓과 또 다른 상자가 있다. 두번째 상자를 열어보니 그 안
에 테니스 운동화와 또 다른 상자가 있다. 세 번째 상자를 열어보니 테니스 공이 들어 있다.

정의
선물 상자는 선물이다.
혹은 선물 상자는 선물과 선물 상자이다.

숫자 목록은 숫자이다.
혹은 숫자 목록은 숫자, 쉽표(,)와 숫자 목록이다.

58
38, 93, 28, 49
--------------------------------------------------------------------------------------------

ex)


* 재귀함수는 자신을 계속 호출하는 수식을 만들어 깔대기 모양으로 수렴한뒤에 1부터 지그재그로 다시 더해온다.


------------------------------------------------------------
예제. 1~N까지의 합을 구하는 문제
     public static int findSum(int N) {
         // 합을 저장하는 변수
         int sum;

         // N이 1 이라면 합은 1

         if (N == 1) {
             sum = 1;
         }
         else { // N이 2 이상이라면
             sum = findSum(N-1) + N;
         }

         // 합을 리턴한다.
         return sum;
    }

     public static void main(String[] args) {

         int number = 100;
         System.out.println("1부터" + number + "사이의 모든 정수들의 합은" + findSum(number) +"이다.");
     }

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



* Math.ceil();

ㄴ 소숫점 올려서 처리
ex)


* 값 두개를 입력 받는법


--------------------------------------------------------------------------------------------
System.out.println("두 개의 점수를 입력해 주세요(10 20)");
num1 = scan.nextInt();
num2 = scan.nextInt();
nPMTD(num1, num2);
--------------------------------------------------------------------------------------------



* 하나의 메소드로 여러가지 대응하게 만드는 방법

ㄴ 같은 이름으로 여러가지 경우를 전부 만들어주면 된다.
ex)
--------------------------------------------------------------------------------------------
public static void nPMTD(double num1, double num2) {

     double nPlu = num1 + num2; // 합
     double nMin = num1 - num2; // 차
     double nTim = num1 * num2; // 곱
     double nDiv = num1 / num2; // 나누기

     System.out.println("두수에 대한 합 : " + nPlu);
     System.out.println("두수에 대한 차 : " + nMin);
     System.out.println("두수에 대한 곱 : " + nTim);
     System.out.println("두수에 대한 나누기 : " + nDiv);

}

public static void nPMTD(double num1, double num2, double num3) {

     double nPlu = num1 + num2 + num3; // 합
     double nMin = num1 - num2 - num3; // 차
     double nTim = num1 * num2 * num3; // 곱
     double nDiv = num1 / num2 / num3; // 나누기

     System.out.println("세수에 대한 합 " + nPlu);
     System.out.println("세수에 대한 차 " + nMin);
     System.out.println("세수에 대한 곱 " + nTim);
     System.out.println("세수에 대한 나누기 " + nDiv);

}
--------------------------------------------------------------------------------------------


* null은 아예 없는 값이다. 블랙홀 같은 것이다. 집어낼수가 없다. String으로 받아서 하나씩 비교할 수밖에 없다.

ㄴ 나중에 is 를 배우면 가능하다고 한다.
ex)


* int를 String으로 변환

ㄴ Integer.toString(변수명);
ㄴ String.valueOf(int값);
ex)


* String을 int로 변환

ㄴ Integer.valueOf(String값);
ex)


*


ex)


*


ex)


*


ex)


*


ex)



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

top

※ ※


--------------------------------------------------------- ● o ● --------------------------------------------------------

*


ex)


*


ex)

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

top

※ ※


--------------------------------------------------------- ● o ● --------------------------------------------------------

*


ex)


*


ex)

top


top