자바 공부 10 : 제어문 - while문, for문
while문 - 조건문이 참인 동안 수행할 문장들을 반복하여 수행한다 - 구조 : while (조건문) { ; ; .... } - break; : 반복문을 빠져나감 - continue; : 반복문의 맨 처음(조건문)으로 돌아감 /* 4-3 while 문 : 조건문이 참인 동안 수행할 문장을 반복 수행 while (조건문) { ; ; ..... } */ // 예제1 int treeHit = 0; while (treeHit 0) { System.out.println("돈을 받았으니 커피를 줍니다."); coffee--; System.out.println("남은 커피의 양은" + coffee + "입니다."); if (coffee == 0) { System.out.println("커피가 다 떨어졌습니다. 판매..
2024.01.27
자바 공부 9 : 제어문 - if 문, switch/case문
If문 구조조건 1개 :  If - else 조건 여러 개 :  If - else if - else  If (조건문) {    ;     ;    ....} else if (조건문) {     ;     ;    ....} else if (조건문) {    ;    ;    .... } else {    ;    ;    ....}         /*if문         if (조건문) {             ;             ;             .....         } else if (조건문) {             ;             ;             .....         } else {             ..
2024.01.24
자바 공부 8 : 자료형 - 집합
집합이란 ? 리스트나 배열과 비교했을때 다음과 같은 특징이 있음. - 순서가 없다 - 중복을 허용하지 않는다 - HashSet / LinkedHashSet / TreeSet 등의 종류가 있다. - 해당 특징을 이용해 교집합, 합집합, 차집합을 구할 때 유용하게 쓰인다. HashSet : 가장 대표형태 - HashSet 패키지를 임포트해야한다. >> import java.util.HashSet; ● 교집합 구하기 : retainAll 메서드 이용 // 교집합 구하기 : retainAll() HashSet s1 = new HashSet(Arrays.asList(1, 2, 3, 4, 5, 6)); HashSet s2 = new HashSet(Arrays.asList(4, 5, 6, 7, 8, 9)); Hash..
2024.01.23
자바 공부 7 : 자료형 - 맵
맵이란? - 대응관계를 쉽게 표현할 수 있게 해주는 자료형 다른 말로 associative array 또는 hash라고도 부른다 - 파이썬의 딕셔너리와 같이 key와 value값을 한 쌍으로 가짐 - HashMap, LinkedHashMap, TreeMap 등이 있음 - 제너릭스를 이용해 선언하는 것이 좋다 ex) HashMap map = new HashMap(); key value HashMap : 맵의 가장 기본형태 - HashMap 패키지를 임포트 해야 한다 >> ( import java.util.HashMap; ) ● 주요 사용 메서드 - put : key, value 추가 ex) a.put("people", "사람") - get : key에 해당하는 value를 구함 ex) System.out...
2024.01.22
자바 공부 6 : 자료형 - 리스트
리스트 - 배열과 다르게 크기가 변할 수 있다. 크기가 정해져 있지 않을 때 사용 - 종류 : ArrayList(대표형), Vector, LinkedList 등 * 시작하기 전에 패키지 꺼내기! import java.util.ArrayList; import java.util.Array; import java.util.List; - 주로 사용하는 메서드 add : 값 추가 get : 특정 인덱스의 값 추출 size : 요소의 개수 리턴 contains : 해당 리스트에 특정 값이 존재하는지 판별 (True / False) remove(객체) : 리스트 내 해당 항목을 삭제하고 결과로 True / False 리턴 remove(인덱스) : 해당 인덱스 위치의 항목을 삭제하고, 삭제한 그 항목을 리턴 ※ 제네릭..
2024.01.21
자바 공부 5: 자료형 - 배열
배열 - 크기가 정해져 있다 >> 인덱스 사용 - 배열은 자료형 바로 옆에 대괄호( [ ), 표현할 때에는 중괄호( { ) String[] weeks = {"월", "화", "수", "목", "금", "토", "일"}; - 배열값에 접근하려면, 인덱스를 이용해야 한다. ★1번째가 인덱스 0번이다! weeks[0] >> "월" weeks[6] >> "일" - length : 배열의 길이 구함 >> 배열은 보통 for문과 함께 사용. 이때 length 많이 사용함 /* 03-6 배열 */ String[] weeks = {"월", "화", "수", "목", "금", "토", "일"}; // 문자열의 배열 선언 System.out.println(weeks[3]); // 3번째 인덱스 추출(0번부터 시작 >> 4..
2024.01.20
자바 공부 4 : 자료형 - 문자열, 문자열 내장메서드, 포매팅, StringBuffer
문자열? - 변수 선언 방법 : 변수 앞에 String 자료형을 붙여 선언 String a = "Geun's formula"; String a = new String("Geun's formula"); >> new 키워드는 객체를 만들 때 사용 - 원시 자료형(char, boolean, int ...)은 원래 new 키워드로 값을 생성할 수없음, String은 원시자료형에 포함되지 않아 new 키워드 사용 가능 - Wrapper 클래스 : 각각의 원시자료형을 대신하여 쓸 수 있는 자료형. 객체지향 프로그래밍의 모든 기능을 활용할 수있게 해준다. 원시 자료형 Wrapper 클래스 int Integer long Long double Double float Float boolean Boolean char Cha..
2024.01.18
자바 공부 3 : 자료형 - 숫자, 불, 문자
숫자 - 정수 (int, long) int의 표현범위는 -2147483648 ~ 2147483647이고, long의 표현범위는 -9223372036854775808 ~ 9223372036854775807 이다. long을 사용하기 위해서는 값 뒤에 접미사로 L자를 붙여야 함 예시) long countOfRice = 378239473284034230L; byte와 short도 있으나 표현 범위가 작아 효율적인 메모리 사용이 필요한 경우 제외하고는 거의 사용하지 않음 - 실수 (floag, double) float의 표현범위 : -3.4 * 10^38 ~ 3.4 * 10^38 double의 표현범위 : -1.7 * 10^308 ~ 1.7 * 10^308 double이 기본형으로, float를 사용하려면 f가..
2024.01.16
no image
자바 공부 2 : 코드 구조, 변수, 자료형, 주석, 이름 지을 때 규칙
자바 코드의 구조 가장 바깥에 클래스블록, 그 안에 메서드 블록이 있으며, 메서드 블록 안에는 명령문이 들어가게 된다. * static : 메서드에 static 키워드가 붙으면 객체를 만들지 않아도 '클래스명.메서드명' 형태로 호출 가능하다 ** 클래스명은 자바 파일명과 동일해야함! 변수와 자료형 변수는 값을 넣을 수 있는 빈 상자와 같음 변수 선언 시에는 반드시 자료형을 지정해줘야 한다. 예시 ) int C; >> 정수의 자료형을 가진 변수 C를 지정 String S; >> 문자열의 자료형태를 가진 변수 S를 지정 변수 이름 지을 때 주의사항 1) 숫자로 시작 X 2) _와 $ 이외의 특수문자 X 3) 자바의 키워드(int, class 등)는 변수명으로 X 사용자가 자료형을 직접 만들 수도 있다. Ch..
2024.01.15
no image
자바 공부 1 : 자바 언어 특징, 자바란?
자바 특징 자바는 1995년에 썬마이크로시스템즈에서 개발된 객체지향 프로그래밍언어이다. 오라클 사에서 2010년 썬마이크로시스템즈를 인수하면서 현재는 오라클이 Java의 저작권을 소유하고 있다. 우리나라에서 특히 사용 빈도가 높으며, 특히 백엔드 개발자로 우리나라에서 일하고자 한다면, 거의 필수로 공부해야 할 언어이다. 자바 특징 1) 간단하다 2) 객체지향적이다 3) 인터프리터 언어이다 4) 강력하다 5) 안전하다 6) 플랫폼이 독립적이다 7) 멀티 스레드를 지원한다 8) 동적이다 자바로 하는 일 - 웹 프로그래밍 : 서블릿, JSP, 스프링 프레임워크 활용하여 백엔드 개발에 특히 많이 쓰임. - 안드로이드 애플리케이션 개발 : 안드로이드 스튜디오와 함께 개발 - 데이터베이스 처리 - 빅데이터 및 분산..
2024.01.14

자바 공부 10 : 제어문 - while문, for문

친환경 개발자
|2024. 1. 27. 14:36

while문

- 조건문이 참인 동안 수행할 문장들을 반복하여 수행한다

 

 

- 구조 :

 

while (조건문) {

    <수행할 문장 1>;

    <수행할 문장 2>;

    ....

}

 

 

- break;   : 반복문을 빠져나감

- continue; : 반복문의 맨 처음(조건문)으로 돌아감

 

        /* 4-3 while 문  : 조건문이 참인 동안 수행할 문장을 반복 수행
        while (조건문) {
            <수행할 문장 1>;
            <수행할 문장2>;
            .....
        }
                                                                     */
        // 예제1
        int treeHit = 0;
        while (treeHit < 10) {
            treeHit += 1;   // treeHit++ 로도 표현 가능
            System.out.println(String.format("나무를 %d번 찍었습니다.", treeHit));
        }
        System.out.println("나무 넘어갑니다.");
        System.out.println();

        // 무한루프
        while (true) {
            System.out.println("Ctrl-C를 눌러야 빠져나갈 수 있습니다");
        }

        // break; : while문 강제로 멈춤

        int coffee = 10;
        int money = 300;

        while (money > 0) {
            System.out.println("돈을 받았으니 커피를 줍니다.");
            coffee--;
            System.out.println("남은 커피의 양은" + coffee + "입니다.");
            if (coffee == 0) {
                System.out.println("커피가 다 떨어졌습니다. 판매를 중지합니다.");
                break;
            }
        }
        System.out.println();

        // continue; : 어떤 조건을 검사해서 참이 아닌 경우 while문의 처음(조건문)으로 돌아감

        int a = 0;
        while (a < 10) {
            a++;
            if (a % 2 == 0) {
                continue;     // 짝수인 경우 조건문으로 돌아간다
            }
            System.out.println(a);   // 홀수만 출력된다
        }

 

 

 

 

for문

- 초깃값을 넣고, 조건문이 참일 때까지 값을 증가시키며 문장 반복

 

 

- 구조 :

 

for (초깃값; 조건문; 증갓값;) {

    <수행할 문장 1>;

    <수행할 문장 2>;

    ....

}

 

print와 println 차이 :

     print는 줄바꿈문자(\n) 사용 X   >>  줄 바꿈 없이 한 줄에 출력

     println은 줄바꿈문자(\n) 사용 O  >> 다음 줄로 넘어감

 

 

/*      4-4 for문 : while처럼 반복문에 사용
        for (초깃값; 조건문; 중간값) {
            ...
        }
                                                     */
        // 예제 1
        String[] numbers = {"one", "two", "three"};
        for(int i=0; i<numbers.length; i++) {
            System.out.println(numbers[i]);
        }
        System.out.println();

        // 예제 2
        int[] marks1 = {90, 25, 67, 45, 80};
        for (int i=0; i<marks1.length; i++) {
            if (marks1[i] > 60) {
                System.out.println((i+1)+"번 학생은 합격입니다.");
            } else {
                System.out.println((i+1)+"번 학생은 불합격입니다.");
            }
        }
        System.out.println();

        // continue 활용
        int[] marks2 = {90, 25, 67, 45, 80};
        for (int i=0; i<marks2.length; i++) {
            if (marks2[i] < 60) {
                continue;
            }
            System.out.println((i+1)+"번 학생 축하합니다. 합격입니다.");
        }
        System.out.println();

        // 이중 for문
        for (int i=2; i<10; i++) {
            for (int j=1; j<10; j++) {
                System.out.print(i*j + " "); // print는 줄 바꿈(\n) 포함하지 않고 출력
            }
            System.out.println();   // 줄 바꿔주는 역할
        }

 

 

for each문

- 구조 :

 

for (type 변수명: iterate) {

    body-of-loop

}

 

※ type에는 자료형 입력,

   변수명에는 변수로사용할 변수의이름

    iterate에는 루프를 돌릴 객체 입력

※ 콜론(:)을 기준으로 좌우의 자료형은 일치해야 한다!

 

/*              4-5 for each문
        for (type 변수명: iterate) {
            body-of-loop
        }
        type : 자료형 / iterate : 루프를 돌릴 객체
        변수명에 루프를 돌릴 객체에서 1개씩 순차적으로 대입됨
        ** type 자료형과 iterate 자료형은 일치해야함!
        *** 따로 반복 횟수를 명시적으로 주는 것이 불가능하고, 한 단계씩 순차적으로 반복할 때만 사용 가능
                                                        */

        // 예제 1
        String[] numbers2 = {"one", "two", "three"};
        for(String number: numbers2) {
            System.out.println(number);
        }
        System.out.println();

        // 예제 2
        ArrayList<String> numbers3 = new ArrayList<>(Arrays.asList("one", "two", "three"));
        for (String number: numbers3) {
            System.out.println(number);
        }

 

 

If문 구조

조건 1개 :  If - else

 

조건 여러 개 :  If - else if - else

 

 


If (조건문) {

    <수행할 문장 1>;

    <수행할 문장 2>;

    ....

} else if (조건문) {

    <수행할 문장 1>;

    <수행할 문장 2>;

    ....

} else if (조건문) {

    <수행할 문장 1>;

    <수행할 문장 2>;

    ....

 

} else {

    <수행할 문장 1>;

    <수행할 문장 2>;

    ....

}


 


        /*if문
        if (조건문) {
            <수행할 문장 1>;
            <수행할 문장 2>;
            .....
        } else if (조건문) {
            <수헹할 문장 1>;
            <수행할 문장 2>;
            .....
        } else {
            <수행할 문장 A>;
            <수행할 문장 B>;
            ....
        }
         */

        // 비교연산자
        int x = 3;
        int y = 2;
        System.out.println(x > y);   //
        System.out.println(x < y);
        System.out.println(x == y);
        System.out.println(x != y);   //    !=  같지않다
        System.out.println();

        if (x >= 3000) {
            System.out.println("택시를 타라");
        } else {
            System.out.println("걸어가라");
        }
        System.out.println();


        // and, or, not 연산자 - x && y : and ,  x || y : or, !x : not
        int money = 3000;
        boolean card = false;

        if (money>=3000 || card) {
            System.out.println("택시를 타라");
        } else {
            System.out.println("걸어가라");
        }
        System.out.println();

        // contains 메서드 활용
        ArrayList<String> pocket = new ArrayList<>(Arrays.asList("phone", "pen", "card"));

        if (pocket.contains("money")) {
            System.out.println("택시를 타라");
        } else {
            System.out.println("걸어가라");
        }
        System.out.println();

        //else if
        if (pocket.contains("money")) {
            System.out.println("택시를 타라");
        } else if (pocket.contains("card")){
            System.out.println("택시를 타라");
        } else {
            System.out.println("걸어가라");
        }
        System.out.println();

 

 

switch / case 문 구조

 

입력 변숫값이 해당 case의 입력값과 같으면,

수행할 문장을 수행한 뒤

break;문을 통해 해당 switch문을 빠져나간다.

 

 


 

switch (입력 변수) {

    case 입력값 1: <수행할 문장 1>;

        break;

    case 입력값 2: <수행할 문장 2>;

        break;

 

    ....

 

    default: <수행할 문장 n>;

        break;

}


 

 

 

 

/* 4-2 switch / case문 : 입력값이 입력 변수와 같으면, 해당 case의 문장 실행 후 break로 빠져나감
        switch(입력 변수) {
            case 입력값1: ...
                break;
            case 입력값2: ...
                break;
            ....
            default: ...
                break;
        }
         */
        int month = 9;
        String monthString = "";
        switch (month) {
            case 1: monthString = "January";
                break;
            case 2: monthString = "february";
                break;
            case 3: monthString = "March";
                break;
            case 4: monthString = "April";
                break;
            case 5: monthString = "May";
                break;
            case 6: monthString = "June";
                break;
            case 7: monthString = "July";
                break;
            case 8: monthString = "August";
                break;
            case 9: monthString = "September";
                break;
            case 10: monthString = "October";
                break;
            case 11: monthString = "November";
                break;
            case 12: monthString = "December";
                break;
            default: monthString = "Invalid month";
                break;
        }
        System.out.println(monthString);
    }

자바 공부 8 : 자료형 - 집합

친환경 개발자
|2024. 1. 23. 21:43

집합이란 ? 

 

리스트나 배열과 비교했을때  다음과 같은 특징이 있음.

 

- 순서가 없다

 

- 중복을 허용하지 않는다

 

- HashSet / LinkedHashSet / TreeSet 등의 종류가 있다.

 

- 해당 특징을 이용해 교집합, 합집합, 차집합을 구할 때 유용하게 쓰인다.

 

 

 

HashSet : 가장 대표형태

 

- HashSet 패키지를 임포트해야한다.    >>    import java.util.HashSet;

 

 

 

● 교집합 구하기 : retainAll 메서드 이용

 

 // 교집합 구하기 : retainAll()
        HashSet<Integer> s1 = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5, 6));
        HashSet<Integer> s2 = new HashSet<>(Arrays.asList(4, 5, 6, 7, 8, 9));

        HashSet<Integer> intersection = new HashSet<>(s1); // s1데이터 유지를 위해 임시 변수 생성
        intersection.retainAll(s2); // 교집합 수행
        System.out.println(intersection);  // [4, 5, 6] 출력
        System.out.println(s2);
        System.out.println(s1);

 

 

 

 

 

 

 

● 합집합 구하기 : addAll 메서드 이용

 

//합집합 구하기 : addAll()
        HashSet<Integer> s1 = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5, 6));
        HashSet<Integer> s2 = new HashSet<>(Arrays.asList(4, 5, 6, 7, 8, 9));

        HashSet<Integer> union = new HashSet<>(s1); // s1데이터 유지를 위해 임시 변수 생성
        union.addAll(s2); // 합집합 수행
        System.out.println(union);  // [1, 2, 3, 4, 5, 6, 7, 8, 9] 출력

 

 

 

 

 

 

 

 

● 차집합 구하기 : removeAll 메서드 이용

 

 

  //차집합 구하기: removeAll
        HashSet<Integer> s1 = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5, 6));
        HashSet<Integer> s2 = new HashSet<>(Arrays.asList(4, 5, 6, 7, 8, 9));

        HashSet<Integer> substract = new HashSet<>(s1); // s1데이터 유지를 위해 임시 변수 생성
        substract.removeAll(s2); // 차집합 수행
        System.out.println(substract);  // [1, 2, 3] 출력

 

 

 

 

 

● 주요 사용 메서드

 

- add : 집합자료에 값 추가

 

     ex)     HashSet<String> set2 = new HashSet<>();
              set2.add("jump");
              set2.add(" to");
              set2.add(" java");
             System.out.println(set2);

 

 

- addAll : 한번에 여러개 추가

 

     ex)      HashSet<String> set3 = new HashSet<>();
                set3.add("jump");
                set3.addAll(Arrays.asList("To","Java"));
                System.out.println(set3);

 

 

- remove : 특정 값 제거할 때 사용

 

     ex)       HashSet<String> set3 = new HashSet<>();
                 set3.remove("To");
                 System.out.println(set3);

 

 

 

자바 공부 7 : 자료형 - 맵

친환경 개발자
|2024. 1. 22. 22:35

맵이란?

 

- 대응관계를 쉽게 표현할 수 있게 해주는 자료형

  다른 말로 associative array 또는 hash라고도 부른다

 

- 파이썬의 딕셔너리와 같이 keyvalue값을 한 쌍으로 가짐

 

- HashMap, LinkedHashMap, TreeMap 등이 있음

 

- 제너릭스를 이용해 선언하는 것이 좋다

    ex)   HashMap<String, String> map = new HashMap<>(); 

                                key     value

 

 

HashMap : 맵의 가장 기본형태

 

- HashMap 패키지를 임포트 해야 한다    >> (  import java.util.HashMap; )

 

 

 

● 주요 사용 메서드

 

- put : key,  value 추가

    ex)     a.put("people", "사람")

 

- get : key에 해당하는 value를 구함

    ex)   System.out.println(a.get("people");    >>   "사람" 출력

 

- containsKey : 맵에 해당 key 가 있는지 알려줌(True / False)

    ex)  System.out.println(a.containsKey("people");         >>    True 출력

           System.out.println(a.containsKey("사람");             >>    False 출력    

 

- remove : 맵의 항목을 삭제. 해당 key의 항목을 삭제한 후 value값 리턴

    ex)  System.out.println(a.remove("people");         >>   people 항목 삭제 후 "사람" 출력  

 

- size : 맵 요소의 개수 리턴

    ex)  System.out.println(a.size());         >>   people 항목 1개뿐이면 1 출력

 

- keySet : 맵의 모든 key를 모아 집합 자료형으로 리턴

    ex)  System.out.println(a.keySey());         >>   [people] 출력

 

 

 

         ※ 집합자료형을 리스트 자료형으로 변환하기

              List<String> keyList = new ArrayList<>(a.keySet());

 

 

 

 


import java.util.HashMap;
import java.util.ArrayList;
import java.util.List;
import java.util.HashSet;
import java.util.Arrays;

public class Day5 {
    public static void main(String[] args){
        /* 3-8 맵
            key와 value로 구성, 순차적 X, HashMap/LinkedHashMap/TreeMap
         */

        // HashMap : 가장 기본형, LinkedHashMap: 작성 순서대로, TreeMap: 오름차순으로 순서
        HashMap<String, String> map = new HashMap<>();
        map.put("people", "사람");    //put : 맵에 key와value를 넣을 수 있다 = 요소 생성
        map.put("baseball", "야구");
        map.put("basketball", "농구");
        map.put("football", "축구");

        System.out.println(map.get("people"));      // get : key값 넣으면 value값 얻음
        System.out.println(map.get("사람"));        // value값 넣으면 ? null
        System.out.println(map.getOrDefault("사람", "기본값")); // getOfDfault : null 대신 기본값을 얻고 싶을때 사용

        System.out.println(map.containsKey("people")); // containsKey : 맵에 해당 key가 있는지(True/False)
        System.out.println(map.remove("people")); // remove : 맵의 항목 삭제. 해당 key의 항목 삭제 후 value값 리턴
        System.out.println(map.get("people"));  // null 출력, 삭제됐음을 알 수 있다.
        System.out.println(map.size()); // size : 맵 요소의 개수 리턴 .. 1 출력
        System.out.println(map.keySet()); // keySet: 맵의 모든 key를 모아 집합 자료형으로 리턴
        List<String> keyList = new ArrayList<>(map.keySet()); // 집합 자료형인 keySet을 리스트 자료형으로 변환
        

 

 

 

 

 

 

자바 공부 6 : 자료형 - 리스트

친환경 개발자
|2024. 1. 21. 16:36

리스트

- 배열과 다르게 크기가 변할 수 있다. 크기가 정해져 있지 않을 때 사용

 

- 종류 :  ArrayList(대표형), Vector, LinkedList 등

 

* 시작하기 전에 패키지 꺼내기!

   import java.util.ArrayList;

   import java.util.Array;

   import java.util.List;

 

- 주로 사용하는 메서드

add : 값 추가

get : 특정 인덱스의 값 추출

size : 요소의 개수 리턴

contains : 해당 리스트에 특정 값이 존재하는지 판별 (True / False)

remove(객체) : 리스트 내 해당 항목을 삭제하고 결과로 True / False 리턴

remove(인덱스) : 해당 인덱스 위치의 항목을 삭제하고, 삭제한 그 항목을 리턴

 

 

※ 제네릭스 : 자료형을 안전하게 사용할 수 있도록 만듦, 자료형을 강제로 바꿀 때 생길 수 있는 오류를 줄임

    <사용방식>

  ArrayList<String> ex1 = new ArrayList<>(); 

   :  해당 리스트에는 String 자료형만 담을 수 있다는 뜻으로 이해

 

 

 asList로 바로 리스트에 값 집어넣을 수 있음

    ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "122");

      : 138, 129, 122 값 바로 리스트에 담을 수 있음

 

 

- 리스트 정렬하기

import java.util.Comparator;   // Comparator 패키지 입력

.

.

pitches.sort(Comparator.naturalOrder());  // pitches 리스트를 오름차순으로 정렬

pitches.sort(Comparator.reverseOrder());  // pitches 리스트를 내림차순으로 정렬

 

 

 

 

       /*     03-7 리스트    */

        /* ArrayList */
        ArrayList pitches = new ArrayList();
        pitches.add("138"); // 리스트에 138값 추가
        pitches.add("129"); // 129값 추가
        pitches.add("142");

        // get
        System.out.println(pitches.get(1));  // 1번 인덱스의 값 추출
        System.out.println();

        // size
        System.out.println(pitches.size());  // 리스트에 담긴 인덱스 개수 출력
        System.out.println();

        //contains
        System.out.println(pitches.contains("1"));  // 1값이 포함되어있는지 ? False
        System.out.println(pitches.contains("142"));  // 142값이 포함되어있는지 ?  True
        System.out.println();

        // remove
        System.out.println(pitches.remove("142"));  //remove(객체) : 해당 객체를 지운 후 True/False 출력
        System.out.println(pitches);   // 삭제한 뒤 남은 리스트
        System.out.println(pitches.remove(0));  //remove(인덱스) : 해당 인덱스 위치의 항목을 지운 후 그 항목값을 출력
        System.out.println(pitches);
        System.out.println();

        /*   제네릭스 : 자료형 안전하게 사용할 수 있도록 함. 자료형 변환 시 캐스팅 오류 감소 */

        ArrayList pitches2 = new ArrayList();
        pitches2.add("123");
        pitches2.add("145");

        String one2 = (String) pitches2.get(0);  // (STring) 없으면 형변환 오류 발생
        String two2 = (String) pitches2.get(1);


        ArrayList<String> pitches3 = new ArrayList<>();
        pitches3.add("123");
        pitches3.add("145");

        String one3 = pitches3.get(0);   // 형변환 필요없음
        String two3 = pitches3.get(1);


        /*   ArrayList 만드는 다양한 방법 */
        // import java.util.Arrays; 입력
        String[] data = {"138", "152", "122"};  // data라는 배열 생성
        ArrayList<String> pitches4 = new ArrayList<>(Arrays.asList(data));  // asList 메서드 사용 : pitches4에 data리스트 입히기
        System.out.println(pitches4);

        ArrayList<String> pitches5 = new ArrayList<>(Arrays.asList("111", "112", "113"));  // 자료형값 직접 입력도 가능
        System.out.println(pitches5);
        System.out.println();


        /* String.join("구분자", 리스트 객체) : ArrayList의 각 요소를 콤마(,)로 구분하기 */

        // String.join 없이 콤마 넣기
        ArrayList<String> pitches6 = new ArrayList<>(Arrays.asList("111", "112", "113"));  // 자료형값 직접 입력도 가능
        System.out.println(pitches6);
        String result1 = "";

        for (int i = 0; i < pitches6.size(); i++){
            result1 += pitches6.get(i);
            result1 += ", "; // 콤마와 띄어쓰기를 추가한다
        }
        result1 = result1.substring(0, result1.length() - 2); // 마지막 콤마와 띄어쓰기 제거
        System.out.println(result1); // 111, 112, 113 출력

        // String.join 사용하기!!

        String result2 = String.join(", ", pitches6);
        System.out.println(result2);
        System.out.println();



        /* 리스트 정렬  */

        //import java.util.Comparator; 선언!
        pitches6.sort(Comparator.naturalOrder()); // 오름차순 정렬
        System.out.println("오름차순 = " + pitches6);
        pitches6.sort(Comparator.reverseOrder()); // 오름차순 정렬
        System.out.println("내림차순 = " + pitches6);

자바 공부 5: 자료형 - 배열

친환경 개발자
|2024. 1. 20. 16:24

배열 

- 크기가 정해져 있다 >> 인덱스 사용

 

- 배열은 자료형 바로 옆에 대괄호( [ ), 표현할 때에는 중괄호( { )

  String[] weeks  = {"월", "화", "수", "목", "금", "토", "일"};

 

- 배열값에 접근하려면, 인덱스를 이용해야 한다.

  ★1번째가 인덱스 0번이다! 

      weeks[0] >> "월"

      weeks[6] >> "일"

 

- length  : 배열의 길이 구함

   >> 배열은 보통 for문과 함께 사용. 이때 length 많이 사용함

 

 

        /*   03-6 배열  */
        String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};   // 문자열의 배열 선언
        System.out.println(weeks[3]); // 3번째 인덱스 추출(0번부터 시작 >> 4번째)
        System.out.println();
        for (int i = 0; i < weeks.length; i++) {
            System.out.println(weeks[i]);
        }
        System.out.println();

 

문자열?

 

- 변수 선언 방법 : 변수 앞에 String 자료형을 붙여 선언

  String a = "Geun's formula";

  String a = new String("Geun's formula");   >> new 키워드는 객체를 만들 때 사용

 

 

- 원시 자료형(char, boolean, int ...)은 원래 new 키워드로 값을 생성할 수없음, String은 원시자료형에 포함되지 않아 new       키워드 사용 가능

 

 

- Wrapper 클래스 : 각각의 원시자료형을 대신하여 쓸 수 있는 자료형. 객체지향 프로그래밍의 모든 기능을 활용할 수있게                                 해준다.  

원시 자료형 Wrapper 클래스
int Integer
long Long
double Double
float Float
boolean Boolean
char Char

 

 

 

 

 

 

 

문자열에서 쓰이는 메서드

아래와 같이 문자열 a, b, c를 선언했을 때 기준으로 설명

 

 

String a = "Hello";

String b = "Hello java";

String c = new String("Hello");

 

 

 

- a.equals(c) : a가 b와 같은지 확인 (True or False 출력)

  ※ a == c : False 출력됨 (why? new String으로 선언하여 값은 동일하나 a와 b는 다른 객체로 선언)

- b.indexOf("java") : b에 java라는 문자열이 시작되는 위치값을 출력  (6 나옴)

- b.contains("java") : b에 java라는 문자열이 포함되어있는지 확인 (True)

- b.charAt(6) : 6번 위치의 문자를 리턴 (j 값 나옴)

- b.replaceAll("java", "Geun") : b의 java를 Geun으로 변경 (Hello Geun)

- b.substring(0, 3) : 0번부터 3번위치까지의 문자만 추출(Hell)

- b.toUpperCase() : 모두 대문자로 출력할때 사용

- b.split("#") : 문자열의 각 문자를 #으로 나누어 문자열 배열로 만듦

 

 

 

 

 

 

 

문자열 포매팅

예시 ) 

System.out.println(String.format("Error is %d%%", 99)); 

        결과값>>Error is 99% 

 

.format() 형식에 ( % + 문자형) 넣기. 

 

System.out.println(String.format(" I ate %d apples.", 3));
        System.out.println(String.format(" I ate %s apples.", "five"));

        int number = 3;
        System.out.println(String.format(" I ate %d apples.", number)); // 변수도 대입 가능

        String day = "ten";
        System.out.println(String.format(" I ate %d apples. So I was sick for %s days.", number, number));

//        System.out.println(String.format(" Error is %d%.", 98)); // 에러
        System.out.println(String.format(" Error is %d%%.", 98)); // %를 출력할때엔 %%로 입력

        System.out.println(String.format(" %5s", "hi."));
        System.out.println(String.format(" %-5sjane,", "hi."));

        System.out.println(String.format(" %.4f", 3.4231564));
        System.out.println(String.format(" %10.4f", 3.4231564)); // 전체길이 10, 소수점 넷째자리까지 오른쪽정렬
        System.out.println(String.format(" %-10.4f", 3.4231564)); // 전체길이 10, 소수점 넷째자리까지 왼쪽정렬


        System.out.printf(" %.4f", 3.4231564);  // printf 쓰면 String.format 생략 가능!
        System.out.println();
        System.out.println();
종류 설명
%s 문자열
%c 문자 1개
%d 정수
%f 부동소수
%o 8진수
%x 10진수
%% 특수문자 %

 

 

 

 

 

 

StringBuffer

 

주로 문자열을 추가하거나 변경할 때 용이하게 하기 위해 사용하는 자료형!

 

String 자료형일 때에는 추가할 때마다 새로운 String 객체를 생성하여 비효율적임.

또한 String자료형은 한 번 값이 생성되면 변경이 불가한데, StringBuffer는 자유롭게 값을 변경할 수있다.

 

추가 후에는 다시 String 문자형으로 돌리기 위해 .toString() 메서드 사용!

 

- .append(" ~~~") : 값 추가

- .insert(1, "~~~") : 1번째 위치에 새로운 문자열 값 추가

- .substring(0, 4) : 0부터 4번 위치까지 문자열 추출

 

StringBuffer sb = new StringBuffer();  // StringBuffer 객체 sb 생성
sb.append("hello");
sb.append(" ");
sb.append("jump to java.");
System.out.println(sb);
String result1 = sb.toString(); // toString() : String 자료형으로 변환
System.out.println(result1);   // StringBuffer는 객체 1번만 생성

String result2 = "";
result2 += "hello";
result2 += " jump";
result2 += " to java.";   // String은 객체 4번 생성
System.out.println(result2);

StringBuffer sb2 = new StringBuffer();
sb2.insert(0, "Hi ");  // insert : 특정 위치에 원하는 문자열 삽입 가능
System.out.println(sb2);

System.out.println(sb.substring(0, 4)); // .substring : 추출
System.out.println(sb2);

 

 

 

숫자

- 정수 (int, long)

 

int의 표현범위는 -2147483648  ~  2147483647이고,

 

long의 표현범위는 -9223372036854775808 ~ 9223372036854775807 이다.

 

long을 사용하기 위해서는 값 뒤에 접미사로 L자를 붙여야 함

 

  예시)

    long countOfRice = 378239473284034230L;

 

byte와 short도 있으나 표현 범위가 작아 효율적인 메모리 사용이 필요한 경우 제외하고는

 

거의 사용하지 않음

 

 

 

 

- 실수 (floag, double)

 

float의 표현범위 : -3.4 * 10^38  ~  3.4 * 10^38

 

double의 표현범위 :  -1.7 * 10^308  ~  1.7 * 10^308

 

double이 기본형으로, float를 사용하려면 f가 붙어야 한다.

 

  예시)

    float pi = 3.14F;

 

 

- 증감연산자

 

i ++ : i값에 +1

i --  : i값에 -1

 

예제) 실행결과? 

int i = 0;

System.out.println(i++);

System.out.println(i);

System.out.println(++i);

 

답) 

0

1

2

 

*  i++은 i값 참조 후 +1, ++i는 +1 한 후 참조

 

 

 

 

불(boolean)

boolean으로 선언하며, True 혹은 False 값을 갖는 자료형!

 

boolean isSuccess = true;

 

위의 방식으로 변수 선언

 

예제) 실행결과? 

int a = 145;

int b = 140;

 

boolean isTrue = a > b;

System.out.println(isTrue);

 

답) 

True

 

※ 조건문 활용

int base = 180;
int height = 185;
boolean isTall = height > base;  // True

if (isTall) {
    System.out.println("키가 큽니다.");
}

 

 

 

 

문자

 

char 형태로, 문자열과는 다름!

 

문잣값 앞뒤를 작은따옴표로 감싸줘야 함

char a1 = 'a';   // 문자로 표현
char a2 = 97;    // 아스키코드로 표현
char a3 = '\u0061';   // 유니코드로 표현

 

알파벳 a는 아스키코드로 97, 유니코드로 \u0061 이다.

따라서 위의 실행 결괏값은 모두 a로 나온다.

자바 코드의 구조

가장 바깥에 클래스블록, 그 안에 메서드 블록이 있으며, 메서드 블록 안에는 명령문이 들어가게 된다.

 

 * static : 메서드에 static 키워드가 붙으면 객체를 만들지 않아도 '클래스명.메서드명' 형태로 호출 가능하다

 

 ** 클래스명은 자바 파일명과 동일해야함!

 

변수와 자료형

변수는 값을 넣을 수 있는 빈 상자와 같음

 

변수 선언 시에는 반드시 자료형을 지정해줘야 한다.

 

예시 )

int C;  >> 정수의 자료형을 가진 변수 C를 지정

String S; >> 문자열의 자료형태를 가진 변수 S를 지정

 

 

 

변수 이름 지을 때 주의사항

1) 숫자로 시작 X 

2) _와 $ 이외의 특수문자 X

3) 자바의 키워드(int, class 등)는 변수명으로 X

 

 

 

사용자가 자료형을 직접 만들 수도 있다.

Chapter2라는 클래스를 만들었다면, Chapter2라는 자료형의 변수를 만들 수 있다.

 

예시)

class Chapter2 {

    Chapter2 SG;         // Chapter2라는 자료형을 가진 변수 SG 선언

}

 

 

이름 짓는 규칙

 

● 클래스 이름 지을 때

  - 명사로 할 것

  - 대문자로 시작할 것

  - 파스칼케이스 (각 단어의 첫 글자 대문자)

 

  예시)

  class Star {}

  class ChocoCookie{}

 

 

 

  메서드 이름 지을 때

  - 동사로 할 것

  - 소문자로 시작

  - 카멜케이스 (맨 첫 글자 제외한 각 단어 첫글자 대문자)

 

  예시)

  run();

  runFast();

  getBackground();

 

 

 

 

  변수 이름 지을 때

  - 짧게

  - 누구나 의미 알 수 있게

  - 순서 의미 : i, j, k, m, n

  - 문자 의미 : c, d, e

  - 시작 문자로 _와 $ 사용은 지양

 

  예시)

 String userName;

 float lineWidth;

 int i;   // 주로 반복문에서 씀

 char c;     // 주로 반복문에서 씀

 

 

주석

  블록 주석 :   /*        */

블록 단위로 설명 필요할 때

 

  라인 주석 :   //

코드 한 줄에 대해 설명할 때

 

* 코드를 바꾸면 주석도 함께 바꿔라

 

 

자바 특징

 

자바는 1995년에 썬마이크로시스템즈에서 개발된 객체지향 프로그래밍언어이다.

오라클 사에서 2010년 썬마이크로시스템즈를 인수하면서 현재는 오라클이 Java의 저작권을 소유하고 있다.

 

우리나라에서 특히 사용 빈도가 높으며, 

특히 백엔드 개발자로 우리나라에서 일하고자 한다면, 거의 필수로 공부해야 할 언어이다.

 

 

자바 특징

1) 간단하다 

2) 객체지향적이다

3) 인터프리터 언어이다

4) 강력하다

5) 안전하다

6) 플랫폼이 독립적이다

7) 멀티 스레드를 지원한다

8) 동적이다

 

자바로 하는 일

  - 웹 프로그래밍 : 서블릿, JSP, 스프링 프레임워크 활용하여 백엔드 개발에 특히 많이 쓰임.

  - 안드로이드 애플리케이션 개발 : 안드로이드 스튜디오와 함께 개발

  - 데이터베이스 처리

  - 빅데이터 및 분산처리

 

자바로 하지 않는일

  -  iOS 앱 개발

  - 시스템 프로그래밍에는 C, C++ 등 Low Level 언어가 더 적합

 

 

 

자바 구동 방식

우리가 작성하여 저장하는 자바파일은 .java의 확장자를 가지고 있음

 

이것을 컴퓨터가 알아들을 수 있는 기계어로 바꾸는 컴파일하여 .class파일을 생성하는 단계를 거치고 (1단계)

 

컴파일된 .class 파일을 실행하는 단계를 거침 (2단계)

 

 

 

 

자바 설치 방법

 

JDK 설치

 

자바 코드 작성하고, 소스를 컴파일하기 위한 필수 도구

https://www.oracle.com/kr/java/technologies/downloads/

 

Download the Latest Java LTS Free

Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.

www.oracle.com

 

 

IDE 설치- 인텔리제이

 

IDE : Integrated Development Environment, 통합개발환경

         프로그래밍 언어로 프로그램을 작성할 때 도와주는 도구

 

https://www.jetbrains.com/ko-kr/idea/download

 

최고의 Java 및 Kotlin IDE인 IntelliJ IDEA를 다운로드하세요

 

www.jetbrains.com