자바 공부 13 : 클래스
클래스란? 클래스는 객체를 생성하기 위한 틀 혹은 설계도이다. Animal이라는 클래스를 만든다고 하면, 동물의 종, 색상, 성별, 나이 등의 다양한 속성들을 가지고 있다. 이러한 속성들은 클래스 내에서 변수와 메서드로 정의된다. 이 Animal 클래스를 기반으로 만들어진 '동물'이 바로 객체이자 인스턴스라고 한다. 클래스와 객체 Animal 클래스를 기반으로 cat이라는 새로운 변수를 생성한다. >> Animal cat = new Animal(); 이때 cat이 바로 "객체"가 된다. 그리고 "Animal이라는 클래스의 인스턴스"라고도 부른다. cat, dog, horse 등 다양한 객체들을 Animal 클래스로 만들 수 있다. 객체 변수 Animal 클래스 영역에 선언하는 변수를 객체 변수라고 한다...
2024.01.31
자바 공부 12 : 객체지향 프로그래밍이란
객체 지향(Object Oriented) 프로그래밍이란 현실 세계의 사물을 모델로 하여 문제를 해결하는 개념 중 하나이다. 현실 세계의 모델을 프로그램으로 옮겨와서, 그 모델들 간 상호 작용을 통해 문제를 해결하려는 프로그래밍 방식이다. (1) 객체 현실 세계의 사물이나 개념을 프로그램 안에서 모델링한 것 ex) 자동차, 사람, 동물 등... (2) 클래스 객체를 정의하기 위한 틀로, 설계도 역할을 함. 객체들의 속성과 동작을 정의한다. 클래스를 통해 생성된 객체를 "인스턴스"라고 한다. (3) 캡슐화(Encapsulation) 데이터와 메서드를 하나의 단위로 묶고, 외부에서의 직접적 접근을 제한하는 것 데이터 보호 및 코드 모듈화 가능 (4) 상속(Inheritance) 이미 존재하는 클래스를 기반으로..
2024.01.29
자바 공부 11: 자료형 정리
1. 원시 자료형(Primitive type): 변수에 실제 값을 가지는 자료형 2. 참조 자료형(Reference type): 실제 값을 갖는 것이 아닌 데이터가 저장된 메모리의 주소 값을 가지는 자료형 원시 자료형 int 정수형 -2147483648 ~ 2147483647 int a = 0 long 정수형 -9223372036854 775808 ~ 9223372036854 775807 long a = 123 float 실수형 -3.4 *10^38 ~ 3.4*10^38 float a = 1.234 double 실수형 -1.7*10^308 ~ 1.7*10^308 double a = 1.234 boolean 불 True, False boolean a = true char 문자형 문자, 아스키코드, 유니코드..
2024.01.28
자바 공부 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

자바 공부 13 : 클래스

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

 

클래스란?

 

클래스는 객체를 생성하기 위한 틀 혹은 설계도이다.

 

Animal이라는 클래스를 만든다고 하면, 

 

동물의 종, 색상, 성별, 나이 등의 다양한 속성들을 가지고 있다.

 

이러한 속성들은 클래스 내에서 변수와 메서드로 정의된다.

 

이 Animal 클래스를 기반으로 만들어진 '동물'이 바로 객체이자 인스턴스라고 한다.

 

 

 

 

클래스와 객체

Animal 클래스를 기반으로 cat이라는 새로운 변수를 생성한다.  >>  Animal cat = new Animal();

 

이때 cat이 바로 "객체"가 된다.

 

그리고 "Animal이라는 클래스의 인스턴스"라고도 부른다.

 

cat, dog, horse 등 다양한 객체들을 Animal 클래스로 만들 수 있다.

 

 

 

 

객체 변수

Animal 클래스 영역에 선언하는 변수를 객체 변수라고 한다.

 

같은 말로 인스턴스 변수, 멤버 변수, 속성 이라고도 한다. 

 

객체변수를 호출하거나 접근하려면  도트 연산자(.)를 이용해야 한다.

 

< 객체. 객체변수

   ex) System.out.println(cat.name);

 

 

 

 

메서드

메서드란 클래스 내에 구현된 함수를 말한다.

 

클래스에 쓰일 속성을 만드는 방법 중 메서드를 이용하는 방법이 있다.

 

생성한 Animal 클래스 내에 특정 기능을 하는 메서드(함수)를 추가해 두면,

 

추후 객체와 속성을 지정할 때 해당 메서드를 호출하여 간편하게 이용할 수 있다.

 

이름을 지정하는 메서드를 만들 때

 

public void setName(String name) {

    this.name = name;

}

 

이렇게 만들어 두면,

 

추후 cat이라는 객체를 생성하고 이름을 지을 때

 

cat.setName("geun"); 

 

이렇게 메서드를 호출해 주면 바로 이름을 부여해 줄 수 있다.

 

이때 this는 Animal 클래스에 의해 생성된 객체를 지칭한다.

 

 

객체 변수는 공유되지 않는다

클래스의 존재 이유, 클래스에서 가장 중요한 부분!

 

객체마다 고유의 객체변숫값을 부여할 수 있다!

 

 

 

 

 

 

 

 

/* 5-2 클래스
 클래스는 과자틀, 객체는 과자!
 */
class Animal {          // 클래스 생성
    String name;    // 클래스에 선언된 변수 : "객체변수 = 인스턴스변수 = 멤버변수 = 속성"

    public void setName(String name) {    // 메서드 생성
        this.name = name;   // this : 해당 클래스의 객체(cat) 의미함
    }
}

public class Day12 {
    public static void main(String[] args) {
        Animal cat = new Animal();    // cat은 객체이자 Animal 클래스의 인스턴스다.
        System.out.println(cat.name);   // 객체.객체변수 형태로 접근 ; null 출력

        cat.setName("boby"); // 객체.메서드명 : 메서드 호출
        System.out.println(cat.name);

        Animal dog = new Animal();

        dog.setName("happy");
        System.out.println(cat.name);
        System.out.println(dog.name);
    }
}

 

객체 지향(Object Oriented) 프로그래밍이란

 

현실 세계의 사물을 모델로 하여 문제를 해결하는 개념 중 하나이다.

현실 세계의 모델을 프로그램으로 옮겨와서,

그 모델들 간 상호 작용을 통해 문제를 해결하려는 프로그래밍 방식이다.

 

 

 

(1) 객체

현실 세계의 사물이나 개념을 프로그램 안에서 모델링한 것

ex) 자동차, 사람, 동물 등...

 

 

(2) 클래스

객체를 정의하기 위한 틀로, 설계도 역할을 함. 객체들의 속성과 동작을 정의한다.

클래스를 통해 생성된 객체를 "인스턴스"라고 한다.

 

 

(3) 캡슐화(Encapsulation)

데이터와 메서드를 하나의 단위로 묶고, 외부에서의 직접적 접근을 제한하는 것

데이터 보호 및 코드 모듈화 가능

 

 

(4) 상속(Inheritance)

이미 존재하는 클래스를 기반으로 새로운 클래스를 만들어 확장하는 것

기존 클래스 특성을 물려받아 새로운 클래스에서 재사용 가능하게 함

 

 

(5) 다형성(Polymorphism)

하나의 인터페이스나 기본 클래스를 사용해 여러 형태로 구현할 수 있는 능력

 

 

 

계산기를 프로그램 구현 시,  하나의 계산기 클래스를 생성하고

한 클래스에서 여러 개의 계산기 객체를 생성할 수 있다.

 

 

 

 

 

/* 5-1 객체지향 프로그래밍이란?

 */
//더하기 계산기
class Calculator1 {
    static int result = 0;

    static int add(int num) {
        result += num;
        return result;
    }
}

class Calculator2 {
    static int result = 0;
    static int add(int num) {
        result += num;
        return result;
    }
}
// 객체지향프로그램
class Calculator3 {
    int result = 0;   // static 빠짐

    int add(int num) {
        result += num;
        return result;
    }
    int sub(int num) {
        result -= num;
        return result;
    }
}

public class Day11 {

    public static void main(String[] args) {
        System.out.println(Calculator1.add(3));
        System.out.println(Calculator1.add(4));

        System.out.println(Calculator2.add(3));
        System.out.println(Calculator2.add(7));
        System.out.println();


        Calculator3 cal1 = new Calculator3();   //계산기 1 객체를 생성한다
        Calculator3 cal2 = new Calculator3();   //계산기 2 객체를 생성한다

        System.out.println(cal1.add(3));    // 기존 static result값인 7부터 시작
        System.out.println(cal1.add(4));

        System.out.println(cal2.add(3));
        System.out.println(cal2.sub(2));
    }
}



자바 공부 11: 자료형 정리

친환경 개발자
|2024. 1. 28. 18:29

1. 원시 자료형(Primitive type): 

변수에 실제 값을 가지는 자료형

 

2. 참조 자료형(Reference type):

실제 값을 갖는 것이 아닌 데이터가 저장된 메모리의 주소 값을 가지는 자료형

 

 

         
원시
자료형
int 정수형 -2147483648 ~   2147483647 int a = 0
long 정수형 -9223372036854
 775808 ~
 9223372036854
 775807
long a = 123
float 실수형 -3.4 *10^38 ~
 3.4*10^38
float a = 1.234
double 실수형 -1.7*10^308 ~
 1.7*10^308
double a = 1.234
boolean True, False boolean a = true
char 문자형 문자, 아스키코드, 유니코드 
(문자로 출력함)
char a = "d"
참조
자료형
String 문자열 원시자료형에
포함되지 않으나, 리터럴표기 가능
String a = "Geun"
type [] 배열 - 크기, 순서 O  String[], int[], float[]  ...
ArrayList 리스트 - 크기, 순서 X 
- 새로운 값 추가
  가능
 ArrayList<Integer> a = new ArrayList<>()
HashMap key - value 쌍  HashMap<string, integer=""> a = new HashMap<>()</string,>
HashSet 집합 중복 X, 순서 X  HashSet a = new HashSet<>()

 

 

 

 

 

3-1. 리터럴 표기란?

객체를 생성하지 않고 고정된 값을 그대로 대입하는 방식. 원시자료형에서 사용

    ex) String a = "Geun's blog"

          >> a라는 변수에 "Geun's blog"라는 문자열 값을 그대로 대입

 

3-2. 참조자료형에서는?

 new키워드를 사용하여 객체 만들어 사용. 객체 중심으로 코드 작성에 유리

    ex) String a = new String("Geun's blog")

          >> 항상 새로운 String 객체를 만든다.

 

3-3. Wrapper 클래스

  원시자료형을 객체로 다루기 위해 객체화 시키는 클래스. 객체 지향 프로그래밍의 모든 기능을 활용할 수 있게 한다.

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

 

 

4. 형 변환

 (1) 문자열 → 정수 

       int n = Integer.parseInt(문자열)               

                 *정수 형태로 이루어진 문자열이어야 한다. (실수형태의 문자열은 정수형태로 변환 불가)

 

 (2) 정수 → 문자열

       String num = "" + (정수)                           *정수 앞에 빈 문자열("") 더하기

       String num = String.valueOf(정수)  

       String num = Integer.toString(정수)   

 

 (3) 실수 → 정수

       int n = (int) (실수)                                     *실수 앞에 (int) 붙임

자바 공부 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);