1장 프로그래밍이란 무엇인가?
- 용어
- Programming: 컴퓨터에게 할 일을 가르치는 것
- Programming Language: 사람과 컴퓨터 사이의 언어
ex) Java, C, C++, Python - 메소드 Method: 어떤 값을 주고 결과를 넘겨주는 것
접근제어자 리턴타입 메소드이름 (매개변수) { }
public boolean checkPassword (String password) { }
*메소드 이름 앞에 꼭 적어야 하는 것: 리턴 타입 - 클래스 Class: 자바에서 가장 작은 단위, 상태(state) + 행동(behavior)
- 하나의 클래스 안에는 0개 이상의 메소드가 존재
- 상태: 클래스 안, 메소드 밖에 정의하는 변수
- 행동: 메소드
- 예약어: 예약되어 있어 쓰지 못하는 단어
ex) public, class, int, return → 클래스, 메소드, 변수의 이름으로 사용 불가능
2장 Hello God of Java
- 코드 작성 > 컴파일 > 실행
javac java
- 자바 컴파일 및 실행 절차
- 소스 > [컴파일러] > 바이트 코드 > [디스크] > 바이트 코드 > [JVM] > 기계어 > [운영체제]
- .java 소스 파일을 컴파일하면 .class 파일(바이너리 파일)이 생성되어 디스크에 저장됨
- .class 파일은 JVM에서 읽어서 운영체제에서 실행
- main 메소드
- 실행을 목적으로 하는 모든 자바 클래스는 main() 메소드가 반드시 있어야 한다
public static void main(String[] args){ }
- public: 접근 제어자
- static: 메소드를 static으로 선언하면 객체를 생성하지 않아도 호출 가능
- void: 돌려줄 값이 없을 때 void
- main: 메소드 이름
- (String[] args): args라는 배열의 매개변수
- 주석
한줄 주석
//
블록 주석
/*
*/
문서용 주석
/**
*/
- 메소드
public static void main(String[] args){
System.out.println("Calculator class started");
}
// 리턴타입, 메소드 이름, 메소드 내용은 반드시 있어야 한다
3장 자바를 제대로 알려면 객체가 무엇인지를 알아야 해요
자바는 객체지향 언어이다
- 객체
- 각각의 실제 사물을 나타내기 위한 것 <객체: Object, 인스턴스: Instance>
- 각각의 실제 사물을 나타내기 위한 것 <객체: Object, 인스턴스: Instance>
- 생성자
- 객체를 생성하기 위한 도구
- 매개변수가 없는 생성자(기본 생성자)는 클래스를 컴파일할 때 자동으로 생성됨
Car dogCar = new Car(); // new: 객체를 생성하기 위한 예약어
4장 정보를 어디에 넣고 싶은데
변수
- 지역 변수 local variable
- 중괄호 내에 선언된 변수
- 지역 변수를 선언한 중괄호 내에서만 유효
- 매개 변수 parameters
- 메소드에 넘겨주는 변수
- 메소드가 호출될 때 생명이 시작되고, 메소드가 끝나면 소멸
- 인스턴스 변수 instance variables
- 메소드 밖에, 클래스 안에 선언된 변수, 앞에는 static이라는 예약어가 없어야 한다
- 객체가 생성될 때 생명이 시작되고, 그 객체를 참조하고 있는 다른 객체가 없으면 소멸
- 클래스 변수 class variables
- 메소드 밖에, 클래스 안에 선언된 변수 중 타입 선언 앞에 static이라는 예약어가 있는 변수
- 클래스가 처음 호출될 때 생명이 시작되고, 자바 프로그램이 끝날 때 소멸
public class VariableTypes{
int instanceVariable; // 인스턴스 변수
static int classVariable; // 클래스 변수
public void method(int parameter) { // 매개변수
int localVariable; // 지역 변수
}
}
변수 이름
- 길이의 제한은 없다
- 첫 문자는 유니코드 문자, 알파벳, $, _
- camelCase
- 상수(constant value): 모두 대문자로 지정하고 단어와 단어 사이는 _로 구분
절대 변하지 않는 값
자료형
1. 기본 자료형 Primitive data type
- 정수형: byte, short, int, long, char
- byte: 8비트의 signed 타입 [-128 ~ 127]
- byte < short < int < long
- char: ‘a’, ‘\u0000’ (16진수), 0~65,535 사이 숫자(유니코드)
- byte는 왜 만들었을까?
: 데이터를 저장할 때 byte를 조합해서 사용하면 적은 공간에 보다 많은 내용을 저장 가능
- 소수형: float, double
- float: 32비트
- double: 64비트
- 돈 계산과 같이 정확한 계산이 요구될 때는 java.math.BigDecimal 클래스 사용
- 기타: boolean
- boolean: true/false
2. 참조 자료형 Reference data type
new를 사용해 초기화 (String은 예외)
5장 계산을 하고 싶어요
1. 연산자 Operator
- 대부분의 연산자는 기본 자료형을 더하거나 빼는 등의 계산을 하기 위해 사용
- 참조 자료형은 String이라는 클래스만 + 연산이 가능
2. 산술 연산자 Arithmetic Operator
+ 더하기
- 빼기
* 곱하기
/ 나누기
% 나머지
3. 복합 대입 연산자 Compound Assignment Operator
- += 기존 값에 우측 항의 값을 더하기
- -= 기존 값에 우측 항의 값을 빼기
- *= 기존 값에 우측 항의 값을 곱하기
- /= 기존 값을 우측 항의 값으로 나누기
- %= 기존 값을 우측 항의 값으로 나눈 나머지
4. 단항 연산자 Unary Operator
- +
- -
- ++ 증가 연산자
- -- 감소 연산자
- ! 논리 부정 연산자
- intValue++ // 변수를 참조한 후 +1
++intValue // 변수를 참조하기 전에 +1
5. 계산 순서
- 단항 연산자 (++ -- ! - ! ~(틸드))
- 산술 연산자 (* / %)
- 산술 연산자 (+ -)
6. 비교 (결과는 boolean)
- == 같음
- != 같지 않음
- , >=, <, <= (boolean, 참조 자료형은 비교 불가능)
- 기본 자료형은 같은 종류끼리 비교 가능, 참조 자료형은 주소 값이 같은지 확인
7. 논리 연산자
- && 두 개의 조건이 모두 true이면 true
- || 둘 중 하나라도 true이면 true
8. ? : 연산자
변수 = (boolean조건식) ? true일 때 값 : false일 때 값;
형변환 Casting
서로 다른 타입 사이에 변환하는 작업
- boolean은 형 변환이 불가능
- 기본 자료형 → 참조 자료형, 참조 자료형 → 기본 자료형으로는 형 변환 불가능
ex1) byte 타입으로 할당한 변수를 short 타입의 변수로 지정하고 싶을 때 - 1바이트 → 2바이트로 형변환 <별도로 할 것 없음>
- 범위가 작은 타입에서 범위가 큰 타입으로 변환 → 자동 형 변환
ex2) short 타입으로 할당한 변수를 byte 타입으로 지정하고 싶을 때
2바이트 → 1바이트로 형변환
범위가 큰 타입에서 범위가 작은 타입으로 변환 → 타입 명시
*기존 값이 사라지고 엉뚱한 값으로 바뀔 수 있으므로 조심히 사용
byte byteValue = 127;
short shortValue = byteValue; // 자동 형 변환
byteValue = (byte)shortValue; // 타입 명시 필요
타입 별 사용 가능한 연산자 <정수형>
- 결과가 boolean
- <, <=, >, >= 숫자 비교 연산자
- ==, != 숫자 동등 연산자
- 결과가 int, long
- +, - *, /, % 기본 사칙 연산자
- ++, -- 증감 연산자
- &, |, ^, ~ <<, >>, >>> 비트 연산자
- 기타 연산자
- ? : 삼항 연산자
- 형 변환 연산자
- 문자열 더하기 연산자
타입 별 사용 가능한 연산자 <소수형>
정수형과 같지만 비트 연산만 불가능
타입 별 사용 가능한 연산자
- ==, != 동등 연산자
- &&, || 조건적 논리 연산자
- !, &, | ^ 논리 연산자 (*숫자에 사용하면 비트 연산자)
- ? : 삼항 연산자
- 문자열 더하기 연산자
'STUDY > Java' 카테고리의 다른 글
<자바의 신> 11장 매번 만들기 귀찮은데 누가 만들어 놓은 거 쓸 수 없나요? (0) | 2023.12.09 |
---|---|
<자바의 신> 6장 제가 조건을 좀 따져요 (0) | 2023.12.09 |
아파치 톰캣(Apache-Tomcat) 설치 (0) | 2021.11.05 |
[JAVA] Stream 스트림 (0) | 2021.11.05 |
[JAVA] 람다식, Enum (0) | 2021.11.05 |