01. 자바란 무엇인가?
01-1 자바란?
- 객체 지향 프로그래밍 언어
- 웹과 모바일 앱 개발에서 가장 많이 사용하는 언어
01-2 자바로 무엇을 할 수 있을까?
- 웹 프로그래밍
- 안드로이드 애플리케이션 개발
- 게임 개발
- 데이터베이스 처리
- 빅 데이터 및 분산 처리
※ 실행 속도가 다소 느리므로 고성능이 중요한 분야에서는 불리
02. 자바 시작하기
02-1 자바 코드의 구조 살펴보기
- 클래스 블록 안에 여러개의 메서드 블록 존재
- 메서드 블록 안에 컴퓨터에 일을 시키는 명령문 존재
※ 클래스명과 소스파일의 이름이 똑같아야함
02-2 변수와 자료형
- 자료형을 변수명 앞에 표시
- class를 통해 자료형을 직접 만드는 것도 가능
02-3 이름 짓는 규칙
- 클래스명은 대문자로 시작
- 메서드명은 소문자로 시작
- 변수명은 의미를 알 수 있도록 짓는 것이 좋음
02-4 주석
1. 블록 주석 (/* */)
/*
여러줄 주석
*/
2. 라인 주석 (//)
//한줄 주석
03. 자바의 기초 - 자료형
- 자료형 : 데이터의 종류와 크기를 결정하는 기본 구성 요소
03-1 숫자
1. 정수
자료형 | 표현범위 |
byte (1바이트) | -128 ~ 127 |
short (2바이트) | -32768 ~ 32767 |
int (4바이트) | -2147483648 ~ 2147483647 |
long (8바이트) | -9223372036854775808 ~ 9223372036854775807 |
※ byte와 short는 표현범위가 너무 좁아 잘 사용하지 않음
- 만약 long자료형 변수에 값을 대입할때 int 자료형의 최댓값인 2147483647보다 크다면 끝에 L자를 붙여주어야 함
int age = 23;
long countOfStar = 8764827384923849L;
2. 실수
자료형 | 표현범위 |
float (4바이트) | -3.4 * 10**38 ~ 3.4 * 10**38 |
double (8바이트) | −1.7 ∗ 10**308 ~ 1.7 ∗ 10**308 |
- 실수형의 기본값은 double --> float변수에 값을 대입할 때에는 끝에 F자를 붙여주어야 함 (소문자도 가능)
float pi = 3.14F; // F 누락 시 컴파일 오류 발생
double morePi = 3.141592;
- e2는 10의 제곱을 의미
double d1 = 1.234e2; //123.4
3. 8진수와 16진수
- 8진수와 16진수는 int 자료형 사용
- 8진수 : 숫자 0으로 시작
int octal = 023; // 십진수: 19
- 16진수 : 알파벳 x로 시작
int hex = 0xC3; // 십진수: 195
4. 숫자 연산 & 증감 연산
- 숫자 연산 : 사칙연산을 수행하는 연산
- 증감 연산자 : 값을 증가 또는 감소시키는 연산자
※ 이 책의 3장에서는 두가지 연산자가 나오지만 자바 연산자의 종류가 많으므로 아래 티스토리를 통해 연산자를 확인!!
03-2 불(boolean)
- 불(boolean) 자료형 : 참 또는 거짓의 값을 갖는 자료형
boolean isTrue = true;
boolean isFalse = false;
03-3 문자
- 문자 자료형은 char를 이용
- 문자보다 문자열을 작성하는 경우가 많으므로 활용성이 적음
- 문잣값 앞뒤를 큰따옴표(" ")가 아닌 작은따옴표(' ')로 감싸주어야 함
char a1 = 'a';
char a1 = 'a'; // 문자로 표현
char a2 = 97; // 아스키코드로 표현
char a3 = '\u0061'; // 유니코드로 표현
※ 다음과 같이 문잣값을 표현하는 방식이 다양하므로 사용할 때 주의 필요 (세가지 모두 'a'라는 문자를 표현)
03-4 문자열
- 문자열을 나타내는 자료형은 String
- 파이썬과는 다르게 큰따옴표로만 감싸주어야 함 (큰따옴표, 작은따옴표 구분됨)
- 문자열을 아래와 같이 new 키워드를 사용하여 표현하는 것도 가능
String a = "Happy Java";
String b = "a";
String c = "123";
String a = new String("Happy Java");
String b = new String("a");
String c = new String("123");
※ 두 표현 방식의 차이점은 아래 티스토리를 통해 확인!!
1. 문자열 내장 메서드
문자열 내장 메서드 | 설명 | 예제 코드 | 출력코드 |
equals | 문자열 2개가 같은지를 비교하여 결괏값 리턴 | String a = "hello"; String b = "java"; String c = "hello"; a.equals(b); a.equals(c); |
false true |
indexOf | 특정 문자여링 시작되는 위치 리턴 | String a = "My name is WINK"; a.indexOf("is"); |
8 // is가 8번째 인덱스에 위치하기 때문 |
contains | 문자열에서 특정 문자열이 포함되어 있는지 여부 리턴 | String a = "Hello Java"; a.contains("Java"); |
true // 문자열안에 Java 포함되어 있다면 true 리턴 |
charAt | 특정 위치의 문자를 리턴 | String a = "Spanish"; a.charAt(6); |
h // 6번째 인덱스인 h 반환 |
replaceAll | 특정 문자열을 다른 문자열로 바꿀 때 사용 | String a = "My name is Tim"; a.replaceAll("Tim", "Mickey"); |
"My name is Mickey" // Tim이 Mickey로 변환 |
substring | 문자열에서 특정 문자열을 뽑아낼 때 사용 | String a = "Hello Mickey"; a.substring(0, 4); |
Hell // 0~3번째 문자열 출력, 인덱스 4의 문자는 포함하지 않음 |
toUpperCase | 문자열을 모두 대문자로 변경할 때 사용 | String a = "Hello Mickey"; a.toUpperCase(); |
// HELLO MICKEY |
split | 문자열을 특정한 구분자로 나누어 문자열 배열로 리턴 | String a = "a:b:c:d"; String[] result = a.split(":"); |
{"a", "b", "c", "d"} |
2. 문자열 포매팅
- 문자열 안에 특정한 값을 바꾸도록 해주는 기법
- String.format 메서드 사용
String.format("I eat %d apples.", 3); // "I eat 3 apples." %d를 이용해 숫자 대입
String.format("I eat %s apples.", "five"); // "I eat five apples." %s를 이용해 문자열 대입
코드 | 설명 |
%s | 문자열 (String) |
%c | 문자 1개 (Character) |
%d | 정수 (Integer) |
%f | 부동소수 (Floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | 문자 % 자체 |
※ %s 는 자동으로 전달되는 파라미터 값을 문자열로 바꾸어 사용 --> 어떤 값이 와도 상관 X
03-5 StringBuffer
- 문자열을 추가하거나 변경할 때 사용하는 자료형
- 문자열을 추가하거나 변경하는 작업이 많으면 StringBuffer 를 사용하는 것을 추천!
메서드 | 설명 | 예제 코드 | 결과 코드 |
append | 문자열을 추가하는 메서드 | StringBuffer sb = new StringBuffer(); sb.append("Hi "); sb.append("Mickey"); String result = sb.toString(); |
//StringBuffer 객체 생성 // "Hi " 추가 // "Mickey" 추가 // result = "Hi Mickey" |
insert | 특정 위치에 원하는 문자열을 삽입 | StringBuffer sb = new StringBuffer(); sb.append("Mickey"); sb.insert(0, "Hi"); String result = sb.toString(); |
//StringBuffer 객체 생성 // "Mickey" 추가 // 0번째 위치에 "Hi" 삽입 // result = "Hi Mickey" |
substring | 원하는 위치의 문자를 뽑아낼때 사용 | StringBuffer sb = new StringBuffer(); sb.append("Mickey"); sb.insert(0, "Hi"); sb.substring(0,4); |
//StringBuffer 객체 생성 // "Mickey" 추가 // 0번째 위치에 "Hi" 삽입 // 0~3번째 문자 반환 "Hi M" |
※ 빈 문자열에 append 를 사용하는 대신 += 을 사용해 추가를 한다면 4개의 객체를 만들어야 함 --> 비효율적임
03-6 배열 (array)
- 자료형 바로 옆에 [] 기호를 붙여 표현
- 자료형의 집합 (자료형의 종류가 X)
int[] odds = {1, 3, 5, 7, 9};
String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};
1. 배열의 길이 설정하기
- new String [] 를 통해 길이 설정
String[] winks = new String[7]; // 배열의 길이를 7로 설정
String[] connect = new String[]; // 숫자를 넣어주지 않으면 컴파일오류 발생
2. 배열값에 접근하기
- []를 통해 배열값에 접근
String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};
weeks[3]; //3번째 인덱스인 "목"에 접근
3. 배열의 길이 구하기
- length를 사용하여 길이 확인
String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};
for (int i = 0; i < weeks.length; i++) { //weeks.length = 7
System.out.println(weeks[i]);
}
03-7 리스트
- 리스트는 배열과 달리 크기가 정해져 있지 않음
- 리스트 자료형로는 ArrayList를 일반적으로 사용
1. 메서드
메서드 | 설명 | 예제 코드 | 츨력 코드 |
add | 요솟값을 추가하는 메서드 | ArrayList pitches = new ArrayList(); pitches.add("138"); pitches.add("129"); pitches.add("142"); |
{"138", "129", "142"} |
get | 특정 인덱스 값을 추출 | ArrayList pitches = new ArrayList(); pitches.add("138"); pitches.add("129"); pitches.add("142"); System.out.println(pitches.get(1)); |
129 |
size | 요소의 개수를 리턴 | ArrayList pitches = new ArrayList(); pitches.add("138"); pitches.add("129"); pitches.add("142"); System.out.println(pitches.size()); |
3 |
contains | 리스트 안에 해당 항목이 있는지 판별해 그 결과를 boolean으로 리턴 | ArrayList pitches = new ArrayList(); pitches.add("138"); pitches.add("129"); pitches.add("142"); System.out.println(pitches.contains("142")); |
true |
remove(객체) | 리스트에서 객체에 해당하는 항목을 삭제한 뒤, 그 결과로 true 또는 false를 리턴 | ArrayList pitches = new ArrayList(); pitches.add("138"); pitches.add("129"); pitches.add("142"); System.out.println(pitches.remove("129")); |
true |
revmove(인데스) | 인덱스에 해당하는 항목을 삭제한 뒤, 그 항목을 리턴 | ArrayList pitches = new ArrayList(); pitches.add("138"); pitches.add("129"); pitches.add("142"); System.out.println(pitches.remove(0)); |
138 |
2. 제네릭스
- 리스트를 만들때 자료형을 선언함 --> 형 변환하는 과정 생략 가능
ArrayList<String> pitches = new ArrayList<>(); //제네릭스 선언법
3. 다양한 방법으로 ArrayList 만들기
- java.util.Arrays 클래스의 asList 메서드를 사용
String[] data = {"138", "129", "142"}; // 이미 투구수 데이터 배열이 있다.
ArrayList<String> pitches = new ArrayList<>(Arrays.asList(data));
System.out.println(pitches); // [138, 129, 142] 출력
4. String.join
- 각 요소에 구분자를 넣어주어야 하는 경우 사용
ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
String result = String.join(",", pitches);
System.out.println(result); // 138,129,142 출력
}
}
5. 리스트 정렬하기
- java.util.Comparator 클래스의 sort 메서드를 사용하여 순서대로 정렬
rrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
pitches.sort(Comparator.naturalOrder()); // 오름차순으로 정렬
System.out.println(pitches); // [129, 138, 142] 출력
}
}
- 오름차순(순방향) 정렬 - Comparator.naturalOrder()
- 내림차순(역방향) 정렬 - Comparator.reverseOrder()
'Java' 카테고리의 다른 글
2주차 퀴즈(1) (0) | 2024.10.15 |
---|---|
[2024-2 Java 스터디] #2주차 (6) | 2024.10.15 |
[2024-2 Java 스터디] #1주차 퀴즈 (0) | 2024.10.09 |
[Java] String = " " VS new String(" ") (0) | 2024.10.07 |
[Java] 자바 연산자 (0) | 2024.10.07 |