1. Java
→ 객체 지향 프로그래밍 언어
O
- 웹 프로그래밍
- 안드로이드 애플리케이션 개발
- 게임 개발
- 데이터베이스 처리
- 빅 데이터 및 분산 처리
X
- 시스템 프로그래밍
- 높은 성능 요구 프로젝트
- iOS 애플리케이션 개발
라이브러리
→ 재사용 가능한 코드조작 or 함수들 의 모음
→ 처음부터 다시 작성할 필요없이 해당 기능을 빠르게 구현 가능
프레임워크
→ 목적에 필요한 것을 일괄로 가져다 쓰도록 만든 구조화 된 틀
JAVA에서 클래스란?
클래스
→ 프로그램에서 사용된 객체의 틀을 정의
→ 객체를 생성하기 위한 설계도 역할
→ 여러가지 멤버변수(클래스 내에서 사용되는 변수)와 메서드(클래스 내에서 사용되는 함수)포함
생성자
: 클래스로부터 객체를 생성할 때 호출됨, 객체의 초기화
디렉터리
: 폴더
JAVAC?
→ 자바 컴파일의 줄임말
→ 컴파일 : 프로그래머가 작성한 코드를 기계어로 번역
2. 변수와 자료형
변수
→ 값을 대입해서 사용가능 (빈 상자)
→ 값은 어떤 형태가 정해져야함 형태 = 자료형
변수이름 규칙
1. 숫자 시작 X
2. _ $ 외의 특수문자 X
3. int, class ... 등 자바의 키워드 X
자료형
→ 변수의 형태 정해줌
ex)
int a; // 변수 a의 자료형은 int이다
이때 a라는 변수에는 int 자료형 값으로 1, 10 같은 정수만 가능
변수에 값 대입하기
→ '=' 기호 사용 (= 는 대입연산자)
3. 이름짓기
클래스
→ 명사
→ 대문자로 시작
→ 여러개의 단어 조합 시, 각 단어의 첫번째 글자는 대문자
ex)
class ChocoCookie {}
메서드
→ 동사
→ 소문자로 시작
→ 여러개의 단어 조합 시, 맨 첫 글자 제외 각 단어의 첫번째 글자는 대문자
ex)
run(); getBackground();
변수
→ 이름만 봐도 내용을 알 수 있게
→ 순서를 의미하는 임시 정수 : i j k m n 문자 : c d e
→ 변수명에 _ $ 가능하지만 시작문자로는 지양
ex)
String userName;
int i; //주로 반복문
4. 주석
→ 자바 코드에 프로그래머의 의견이나 코드의 설명
→ 작성한 코드의 특정부분을 잠시 사용하지 않게 할 때도 사용
→ 프로그램 코드에 삽입하더라도 프로그램을 수행하는 데 영향 X (컴파일 할 때 자동으로 제거됨)
→ 누구나 알 만한 내용 주석 X (코드를 지저분하게 만듬)
→ 코드 수정하면 주석도 수정, 코드 바뀌면 주석도 바꾸기
블록주석
/*
블록주석입니다 이예잉
*/
→ 코드에서 블록 단위(클래스, 메서드 등) 설명할 때 사용
라인 주석
// 라인 주석입니다 ^0^
→ 코드 한 줄 설명 할 때 사용
5. 자료형
→ 데이터의 종류, 크기 결정하는 기본 구성 요소
→ 숫자, 문자열처럼 자료형태로 사용하는 모든 것
5-1. 숫자
정수
int : -2147483648 ~ 2147483647
long : - 9223372036854775808 ~ 9223372036854775807
long 자료형 변수의 값이 int 자료형의 최대값보다 크면 끝에 접미사 L자를 붙여줘야함(안하면 오류뜸)
int cake = 10;
long age = 8764827384923849L; // 소문자 l도 가능하지만 1과 헷갈림 하지마셈
실수
float : -3.4*10^38 ~ 3.4*10^38
double : -1.7 * 10^308 ~ 1.7 * 10^308
flaot 변수에 값 대입할 때 접미사 F붙여야함(안하면 오류뜸)
float pi = 3.14F; // 소문자 f 가능
double morePi = 3.14159265358979323846;
double d1 = 123.4;
double d2 = 1.234e2; //e2는 10의 제곱을 의미한다(10^2)
8진수, 16진수
int 사용
8진수 : 숫자 0으로 시작
16진수 : 숫자 0과 알파벳 x로 시작
int octal = 023; // 십진수: 19
int hex = 0xC3; // 십진수: 195
숫자 연산
→ 사칙연산 : + - * /
→ % : 나머지 값 반환
증감연산
→ 증감연산자 사용 ( ++, -- )
int i = 0;
int j = 10;
i++;
j--;
System.out.println(i); // 1 출력 ++는 변수에 저장된 값을 1만큼 증가
System.out.println(j); // 9 출력 --는 변수에 저장된 값을 1만큼 감소
int i = 0;
System.out.println(i++); // 0 출력
System.out.println(i); // 1 출력
→ ++의 위치에 따라 값이 달라짐
++연산자가 변수명 뒤에 붙으면 코드가 실행되는 순간에는 i값이 변경 x 하지만 문장이 실행된 이후에 i값 증가
++연산자를 변수명 앞에 붙여 사용하면 i값이 먼저 증가된 후 해당코드 실행
5-2. 불
→ boolean
→ 참(true), 거짓(false) 값을 가짐
→ 불 연산의 결괏값 대입 가능 (불 연산 : 참 또는 거짓을 판단하는 연산)
→ if문 같은 조건문에도 사용
5-3. 문자
→ char
char a1 = 'a'; //문잣값 앞뒤를 ''로 감싸 줘야함
char a2 = 97; //아스키코드로 표현
char a3 = '\u0061' //유니코드로 표현
System.out.println(a1); // a 출력
System.out.println(a2); // a 출력
System.out.println(a3); // a 출력
5-4. 문자열
→ String
→ 문자열 : 문자로 구성된 문장
String a = "Happy Java"; // 문자열은 ""로 감싸야함
new 키워드
→ 객체 만들 때 사용
String a = "Happy Java";
String b = new String("Happy Java");
변수 a,b 는 같은 문자열 값 but 완전히 동일 x
첫 번째 코드(literal 표기방식)
→ 고정된 값을 그대로 대입
두 번째 코드
→ 항상 새로운 String 객체를 만듬
원시 자료형
→ int, long, double, float, boolean, char 자료형 = 원시자료형(primitive)
→ new 키워드로 값 생성 x
→ 리터럴 표기 방식으로만 값 세팅
→ String 리터럴 표기 방식 가능 but 원시자료형 x (특별대우임 부럽다)
문자열 내장 메서드
→ 문자열 객체에 속한 함수
→ 문자열 합치기, 분할, 대소문자 변환 등 문자열을 다양하게 활용할 수 있도록 도와줌
equals | 문자열 2개가 같은지 비교, 결과값 리턴 |
indexOf | 문자열에서 특정 문자열이 시작되는 위치(인덱스값) 리턴 |
contains | 문자열에서 특정 문자열이 포함되어 있는지 여부 리턴 |
charAt | 문자열에서 특정 위치의 문자 리턴 |
replaceAll | 특정 문자열을 다른 문자열로 바꿀 때 사용 |
substring | 문자열에서 특정 문자열 뽑아낼 때 사용 |
toUpperCase | 모두 대문자로 변경 |
split | 문자열을 특정한 구분자로 나누어 문자열 배열로 리턴 |
문자열 포매팅(formatting)
→ 문자열 안의 특정한 값을 바꿀 수 있게 해주는 것
→ 문자열 안에 어떤 값을 삽입하는 방법
→ Stirng.format 메서드 사용
ex) 숫자 바로 대입하기
System.out.println(String.format("I eat %d orange.", 100)); // "I eat 100 orange." 출력
→ 문자열 안에서 숫자를 넣고 싶은 자리에 %d 입력, 삽입할 숫자를 두 번째 파라미터로 전달
파라미터 : 메소드 선언 시 사용되는 변수
문자열 포맷 코드 종류
코드 | 설명 |
%s | 문자열(String) |
%c | 문자 1개(character) |
%d | 정수(Integer) |
%F | 부동소수(floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal %(문자 % 자체) |
문자열 포맷 코드 응용하기
1. 정렬과 공백 표현
System.out.println(String.format("%10s";,"hi"));
//전체 길이가 10인 문자열 공간에서 대입되는 값을 가장 오른쪽으로 정렬하고 나머지는 공백
//" hi" 출력
System.out.println(String.format("%-10sjane.","hi"));
//"hi jane." 출력
2. 소수점 표현
%.4f
→ 소수점 넷째 자리까지만 나타내고 싶을 때 사용
→ . = 소수점, 4 = 소수점 뒤에 이어질 숫자의 개수
System.out.println(String.format("%10.4f",3.42134234)); //' 3.4213' 출력
System.out.printf
System.out.println(String.format("I eat %d oranges.",100)); //String.format : 문자열 리턴
System.out.printf("I eat %d oranges."100); //String.out.printf : 문자열 출력
5-5. StringBuffer
→ 문자열 추가, 변경 할 때 사용하는 자료형
→ StringBuffer의 메서드 (append, insert, substring)
append
→ 문자열 추가
StringBuffer sb = new StringBuffer(); // StringBuffer 객체 sb 생성
sb.append("hello");
sb.append(" ");
sb.append("java");
String result = sb.toString(); //toString 은 객체가 가지고 있는 정보나 값을 문자열로 만들어 리턴
System.out.println(result); // "hello java" 출력
String result = "";
result += "hello";
result += " ";
result += "java";
System.out.println(result); //"hello java" 출력
첫 번째 : StringBuffer 객체를 한 번만 생성
두 번째 : String 자료형에 + 연산이 있을 때마다 새로운 String 객체 생성 (총 4개의 String 자료형 객체)
→ 결과는 같지만 내부적으로 객체 생성, 메모리 사용하는 과정 다름
String 자료형은 값이 한 번 생성되면 변경 X
StringBuffer 자료형은 값 변경 O
→ 상황에 맞게 알아서 쓰셈!
insert
→ 특정 위치에 원하는 문자열 삽입
sustring
→ 특정 문자열 뽑아냄
5-6. 배열
→ 자료형의 집합
(1) 배열의 길이 설정
String[] animals = new String[3]; //배열의 길이 먼저 설정, 배열 변수 생성, 값 나중에 대입
animals[0] = "토끼";
animals[1] = "다람쥐";
animals[2] = "두꺼비";
(2) 배열값에 접근
String[] animals = {"토끼","다람쥐","두꺼비"};
System.out.println(animals[2]); //두꺼비 출력 인덱스 이용!
(3) 배열 길이 구하기
→ length 사용
String[] animals = {"토끼","다람쥐","두꺼비"}
for (int i = 0; i < weeks.lengthl i++) {
System.out.println(weeks[i]);
}
/*출력
토끼
다람쥐
두꺼비
*/
5-7. 리스트
→ 배열과 비슷하지만 배열은 크기 정해짐, 리스트는 크기 안 정해짐
→ 따라서 계속 변하는 상황이라면 리스트 사용
ArrayList
(1) add
→ 요솟값 추가
import java.util.ArrayList;
public class Add {
public static void main(String[] args) {
ArrayList pitches = new ArrayList();
pitches.add("138");
pitches.add("127");
}
}
pitches.add(0,"133"); //첫번째 위치에 133 삽입
(2) get
→ 특정 인덱스 값 추출
(3) size
→ 요소의 개수 리턴
(4) contains
→ 리스트 안에 해당 항목 있는지 판별, 결과를 boolean 리턴
(5) remove
remove (객체)
remove (인덱스)
remove(객체)
→ 리스트에서 객체에 해당하는 항목 삭제, true 또는 false 리턴
remove(인덱스)
→ 인덱스에 해당하는 항목 삭제, 항목 리턴
ArrayList 만들기
1. add 메서드 사용
2. asList 메서드 사용 (이미 존재하는 문자열 배열로 만듬)
3. String 배열 대신 String 자료형을 여러 개 전달하여 생성
String.join
→ 리스트의 각 요소에 구분자를 넣음, 하나의 문자열로 만듬
→ 문자열 배열에도 사용 가능
리스트 정렬
→ sort 메서드 사용
→ 정렬 기준을 파라미터로 전달 (정렬 기준에는 오름차순, 내림차순 존재)
오름차순(순방향)정렬 - Comparator.naturalOrder()
내림차순(역방향)정렬 - Comparator.reverseOrder()
5-8. 맵
→ 대응 관계를 쉽게 표현할 수 있게 해주는 자료형 ex) '이름 = 이서영', '생일 = 12월 9일'
→ 키(key)와 값(balue)을 한 쌍으로 갖는 자료형
키(key) 값(value)
people 사람
orange 오렌지
→ 리스트나 배열처럼 순차적으로 요솟값 x 키를 이용해 값을 얻음
→ 마치 사전과 같다. orange라는 단어의 뜻을 찾을 때 모두 읽지 않고 단어가 있는 곳을 찾아 확인하는 것처럼
HashMap
(1) put
→ key, value 추가
import java.util.HashMap;
public class Sample {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("people", "사람");
map.put("orange", "오렌지");
}
}
→ key, value : String 자료형
(2) get
→ key에 해당하는 value를 얻을 때 사용
System.out.println(map.get("orange")); // "오렌지" 출력
(3) containsKey
→ 맵에 해당 key가 있는지 참, 거짓으로 리턴
(4) remove
→ 맵의 항목을 삭제, key항목 삭제 후 value 리턴
(5) size
→ 맵 요소의 개수 리턴
(6) keySet
→ 맵의 모든 key를 모아서 리턴
(리스트부터 여기까지 쓰다가 날라갔어요..다행히 미리 날라갈 거 같아서 메모장에 복붙하고 한거라 정리는..)
5-9. 집합
집합 자료형
→ 중복 허용 x
→ 순서 x
→ 교집합, 합집합, 차집합을 구할 때 유용
교집합 구하기 → retainAll 메서드
합집합 구하기 → addAll 메서드
차집합 구하기 → removeAll 메서드
집합 자료형과 관련된 메서드
add → 집합 자료형에 값 추가
addAll → 값 한꺼번에 여러 개 추가
remove → 특정 값 제거
5-10. 상수집합
enum 자료형 → 서로 연관 있는 여러 개의 상수집합 정의
ex)
enum PastaType {
Tomato,
Cream,
Oil
};
→ 매직 넘버를 사용할 때보다 코드 명확
→ 오류 막기 가능
5-11. 형 변환, final
형 변환
→ 자료형을 다른 자료형으로 변환 ex) "123" 과 같은 문자열을 123 같은 숫자형으로
문자열 -> 정수
Integer 클래스 사용
public class Sample {
public static void main(String[] args) {
String num = "123";
int n = Integer.parseInt(num);
System.out.println(n); // 123 출력
}
}
정수 -> 문자열
public class Sample {
public static void main(String[] args) {
int n = 123;
String num = "" + n;
System.out.println(num); // 123 출력
}
}
소수점 포함
→ Double.parseDouble / Float.parseFloat 사용
final
→ 값을 한 번 설정하면 그 값을 다시 설정할 수 없다.
→ 상수가 됨!
Quiz
1. int 자료형의 크기
(c) 32비트
2. Java에서 소수점이 있느 실수형 데이터를 저장하기 위해 사용하는 자료형?
(c) float
3. double 자료형과 float 자료형의 차이점?
(b)
4. 다음 중 boolean 자료형이 가질 수 있는 값은?
(a)
5. 다음 중 boolean 값을 반환하는 메서드?
(a) isEmpth()
6. boolean 표현식을 적절히 사용하는 경우는?
(b)
7. 다음 중 문자열을 상수 풀(String Pool)에 저장하는 방법은?
(b)
8. 다음 중 문자열 길이를 반환하느 메서드?
(a) length()
9. 다음 코드의 출력 결과?
(b)
10. Java에서 배열의 길이를 얻기 위해 사용하는 속성은?
(c)
11. 다음 중 Java에서 다차원 배열을 선언하는 올바른 문법?
(b)
12. 배열에 초기값 없이 선언된 int배열의 기본값?
(a)
13. 배열의 인덱스는 몇부터 시작?
(a) 0
14. 다음 코드의 출력 결과는?
(c) 3
15. Java에서 List 인터페이스를 구현한 클래스가 아닌 것은?
(c) HashSet
16. 다음 중 ArrayList의 기본적인 특징은?(c) 임의 접근이 가능하다.
17. List 에서 요소를 추가할 때 사용하는 메서드?(c) add()
18. 다음 코드의 출력 결과(b)
19. List 의 요소를 반복하기 위해 사용할 수 있는 방법?(d)
서술형 문제1. Java에서 기본 자료형과 참조 자료형의 차이점에 대해 설명
→ 기본 자료형은 new 키워드로 값 생성할 수 없다.
2. 숫자형 자료형 간의 형 변환이 발생할 때의 주의사항을 설명
→ 정수를 실수로 바꿀 때에는 캐스팅이 필요없지만 실수를 정수로 바꿀 때에는 반드시 정수형으로 캐스팅 해줘야한다.
3. Java에서 String 객체를 생성하는 두 가지 방법의 차이점을 설명하시오.
→ 리터럴 방식은 고정된 값을 그대로 대입하는 방법이지만 new키워드는 새로운 String 객체를 만든다.
4. Java에서 문자열을 연결하는 방법을 설명하고 어떤 방법이 성능 면에서 더 유리한 지 서술하시오.
→ String은 += 으로 문자열을 연결하고 StringBuilder append()메소드를 사용하여 연결한다
StringBuilder이 성능면에서 더 유리하다. String은 +연산이 있을 때마다 객체를 생성하기 때문이다.
5. Java에서 문자열 비교 시 == 연산자와 equals() 메서드의 차이점을 설명
equals 메서드는 문자열 2개가 같은지를 비교하여 결과값을 리턴하는 것이고, ==은 2개의 자료형이 같은 객체인지를 판별 할 때 사용하는 연산자이다.
6. 배열 선언 방법 2가지 작성1. int 타입의 배열 선언2. 배열 길이 먼저 설정 후 배열 변수 생성한 뒤 값 나중에 대입
7. 배열의 크기를 변경할 수 없다는 특성을 설명하고, 이 문제를 해결하기 위해 사용할 수 있는 대안에 대해 설명하시오.배열은 크기가 정해져 있어 변경할 수 없지만 리스트는 변할 수 있으니 리스트를 사용하면 된다.
코딩테스트
https://school.programmers.co.kr/learn/courses/30/lessons/120807
https://school.programmers.co.kr/learn/courses/30/lessons/12916
으악어려워!
'WINK-(Web & App) > JAVA 스터디' 카테고리의 다른 글
[2024-2 Java 스터디] 김재승 #1주차 (0) | 2024.10.10 |
---|---|
[2024-2 Java 스터디] 김규현 #1주차 (0) | 2024.10.09 |
[2024-2 Java 스터디] 김지나 #1주차 "~List" (2) | 2024.10.09 |
[2024-2 Java 스터디] #1주차 김태일 "나야.. 자바.." (13) | 2024.10.09 |
[2024-2 Java 스터디] 김민서 #1주차 (5) | 2024.10.09 |