Chapter01 자바 시작하기
01-1 프로그래밍 언어와 자바
- 기계어 - 0과 1로 이루어진 이진 코드로 기계가 이해하는 언어
- 프로그래밍 언어 - 기계를 다루기 위해 사용되는 사람의 언어
- 소스파일 - 프로그래밍 언어로 작성한 파일
- 컴파일 - 소스파일을 기계어로 번역한 파일
- 프로그래밍 순서 :
프로그래밍 언어로 소스파일 작성 → 소스파일 → 기계어로 번역 → 컴파일 → 실행
자바 소개
- 1995년 마이크로시스템즈(SUn MicroSystems)에서 발표
- 현재 웹사이트 및 다양한 애플리케이션 개발의 핵심 언어
- 자바는 마이크로시스템즈에서 라이선스를 가지고 있었지만 현재는 오라클에서 가지고 있고 자바 개발 도구의 배포 또한 오라클에서 하고 있다
- 특징 :
모든 운영체제에서 실행 가능(개발 → 윈도우, 실행 → 리눅스인 경우 다수)
객체 지향 프로그래밍(OPP:Object-Oriented Programming)C++과 C#도 객체지향
메모리 자동 정리 기능이 있다(C++, C#은 메모리에 대한 관리 내용을 코드로 작성해야함 반면 자바는 JVM(자바실행환경)에서 메모리 관리를 해줌)
풍부한 무료 라이브러리
자바 개발 도구 설치
자바 개발 도구(JDK : Java Development Kit)
- JDK역할 :
자바 언어로 소프트웨어를 개발 할 때 필요한 환경 및 도구를 제공하는 역할
- JDK 종류 :
Open JDK : 개발, 학습용 및 상업용 모두 무료로 사용
Oracle JDK : 개발, 학습용은 무료로 사용. 상업용 목적으로 사용할 경우 연간 사용료 지불. 장기 기술지원(LTS:Long Term Suppoert) 및 업데이트 제공으로 안정적
- 학습용 JDK 선택 :
학습용은 모두 무료이므로 안정적인 Oracle JDK를 사용하는 것이 좋음
- JDK 버전 체계
JDK 21.0.x
주버전 : 21, 변화가 많이 있을 경우 증가
개선버전 : 0, 주버전에서 일부사항 개선되었을때 증가
업데이트 버전 : x, 버그가 수정될 때마다 증가
LTS : 장기 지원 서비스
일반적으로 Java SE(Standard Edition) = Java = JDK(Java Development Kit)은 동일한 의미로 사용된다
환경 변수 설정
JAVA_HOME 환경 변수 등록
- JAVA_HOME : JDK가 설치된 폴더
- 설정 방법
검색 -> 시스템 환경 검색 -> 환경변수 클릭 -> JAVA_HOME 없을 경우 새로만들기/ 있을 경우 편집 -> 확인
- Path 환경 변수 명령라인(cmdline)에서 javac및 java 명령어를 사용하기 위해서
- bin폴더의 위치 등록(절대경로 또는 %JAVA_HOME%\bin)
- 환경변수 설정 확인 :
검색 -> cmd -> javac -version 입력
01-2 이클립스 개발 환경 구축
- 이클립스(eclipse) : 무료 오픈소스 통합 개봘환경
- 통합개발환경(Integrated Development Environment : IDE)
- 퍼스펙티브 : 프로젝트를 개발할 때 유용하게 사용할 수 있는 뷰를 미리 묶어놓은것
- 뷰 : 퍼스펙티브를 이루는 작은 창들
01-3 자바 프로그램 개발 과정
바이트 코드 파일과 자바 가상 기계
- 바이트 코드(.class)
- 자바 가상 기계(JVM) : 다야안 운영체제에서 수정하지 않고 바이트 코드 파일을 사용하기 위함
프로젝트 생성부터 실행까지
1단계 프로젝트 생성
2단계 소스 파일 생성과 작성
3단계 바이트 코드 실행
- 결과 eclipse화면

- cmd 화면

프로그램 소스 분석
- 클래스 선언부 :
public class Hello{}에서 public class 공개된 클래스 라는 의미
Hello는 클래스 이름, 클래스명은 파일명과 동일(대소문자도 동일)
- 메인 메소드 :
public static void main(String[] args){}
public static void main(String[] args) -> 메소드 선언부
main -> 메소드 이름, 바이트 코드 파일을 실행하면 main()부터 찾아 블록 내부를 실행(프로그램 실행 진입점이라고 부름)
주석 사용하기
- 주석 : 프로그램 실행과 상관없이 코드에 설명을 붙인것 복잡한 프로그램일수록 주석을 잘 작성해야 나중에 알기 쉬움(라인마다 달 필요는 없고 클래스나 메소드 정도의 단위에만 달아놔도 나중에 큰 도움이 됨)
라인 주석 -> // .... 슬래시 2개로 표시하고 그 라인만 주석처리
범위 주석 -> /*
... */
/*
와 */
사이에 있는 모든 내용 주석
도큐먼트 주석 -> /** ... */
/**
와 */
사이에 있는 모든 내용 주석(주로 클래스, 메소드 단위에 주석을 달때 많이 사용했음)
실행문과 세미콜론(;)
- 실행문 : 변수 선언, 값 저장, 메소드 호출 등
- ;(세미콜론) -> 실행문이 끝났음을 알려주는 표시, 없으면 에러
02 변수와 타입
02-1 변수
- 변수 : 메모리의 특정 위치에 값을 저장할수 있게 붙이는 이름
변수 선언
int x;
int y;
int z;
int x, y, z;
위 세 줄과 아래 한줄은 같음(하지만 초기화 해줘야 하기 때문에 위의 세 줄과 같은 형식을 주로 사용)
변수 이름(명명 규칙)
작성 규칙 |
예 |
첫 번째 글자는 문자, '$', '_'이어야 하고 숫자로 시작 불가 |
가능 : price, $price, _companyName 불가능 : 1v, @speed, $#value |
영어 대소문자 구분 |
firstname과 firstName은 다른 변수 |
첫 문자는 영어 소문자로 시작, 다른 단어가 붙을 경우 첫 문자를 대문자로(관례, 대체로 이렇게 함, 카멜케이스) |
maxSpeed, firstName, carBodyCorlor |
문자 수(길이)의 제한 없음 |
자바 예약어는 사용 불가(필수) |
- 예약어 : 해당 프로그래밍 언어에서 특정한 의미가 부여되어 사용되고 있는것(if, class, ...)
값 저장
- 변수에 값을 저장할 때는 대입 연산자(=) 사용, 오른쪽 값을 왼쪽에 저장한다는 의미
int score;
-> 변수 선언
score = 90;
-> 값 저장, 변수 초기화, 초기값은 90
int score = 90;
위 두 줄을 합친것이 아래 한줄
- 초기화 하지 않고 변수를 사용하면 값이 없는 상태이므로 에러가 발생한다
변수 사용
- 변수는 출력문, 연산식 내에서 값을 출력 혹은 연산할때 사용
변수 사용 범위
- 자바에서 모든 변수는 선언된 블록 내에서 사용된다
- 로컬 변수 : 메소드 블록 내에서 선언된 변수, 블록이 끝나면 사용 못함
- 변수 선언 주의사항 :
변수 사용범위 생각하고 선언위치 결정
메소드 블록 전체에서 사용할거라면 첫머리에 선언
특정 블록 내에서만 사용할거라면 해당 블록 내에 선언
02-2 기본 타입
정수 타입
- byte, short, char, int, long
- 각각 메모리 사용 크기와 저장되는 범위가 다르다
- 정수타입
기본적으로 컴파일러는 정수리터럴을 int 타입으로 간주
정수 리터럴이 into 허용범위를 넘어설경우 long 타입임을 알려주어야 한다.
char
하나의 문자를 작은 따옹표로 감싼것. 문자리터럴
String
큰 따옴표로 감싼 문자 또는 여러개의 문자들
문자열 내부에 역슬래시가 붙은 문자를 이스케이프 문자라한다
문자열 데이터로 큰 따옴표를 사용하고 싶을 때 사용
실수타입
- Float. Double
- Float은 소수점 아래 7자리. Double은 15자리. Double이 정밀로가높음
논리타입
- Boolean → true, false 를 리터럴로 사용
02 -3 타입변환
자동타입변환
- 자동타입변환: 작은 허용범위 → 큰허용 범위 일때 발생
강제타입 변환(캐스팅)
- 큰허용 범위 타입을 작은 허용범위 타입으로 강제로 나눠서 저장하는 것
정수 연산에 서의 자동 타입변환
- Int 보다 작은 byte, short 타입 변수는 int로 자동 타입 변환 되어 연산 수행
- 정수연산식에서 두피연산자 중 허용범위가 큰 타입으로 변환되어 연산수행
실수 연산에서의 자동타입변환
- 두 피연산자가 동일한타입 → 해당타입으로 연산
- 피연산자중 하나가 double 이연 double로 연산(허용범위가 더큰것
+ 연산에서의 문자열 자동 타입변환
- 피연산자 모두 숫자 → 덧셈연산
- 피연산자중 하나가 문자열 → 나머지 피연산자도 문자열로자동변환
- 숫자+숫자+문자열 → 더하기연산결과 + 문자열
- 알파벳, 특수문자, 한글 등을 포항하는 문자열을 숫자타입으로 변환 시도시 에러
02- 4 변수와 시스템 입출력
모 니터로 변수값 출력하기
- Println(“내용”); 괄호란의 내용을 출력하고 행바꿈
- print(“내용“); 괄호안의 내용을 출력만
- printf(“형식문자열”, 값1, 값2, …); 괄호안의 첫번째 문자열 형식대로 내용을 출력해라
키보드에서 입력된 내용을 변수에 저장하기
- System.in.read() 이용
- 이 메서드는 한글 이용 못함-> scanner 클래스 사용
03 연산자
03-1 연산자와 연산식
- 연산자 : 연산에 사용되는 표시나 기호
- 피연산자 : 연산자와 함께 연산되는 데이터
- 연산식 : 연산자와 피연산자를 이용하여 연산의 과정을 기술한것
연산자의 종류
- 산술 : +, -, *, /, %, 사칙연산 및 나머지 계산
- 부호 : +, -, 음수와 양수의 부호
- 문자열 : +, 두 문자열 연결
- 대입 : =, +=, -=, *=, /=, %=, 우변의 값을 좌변의 변수에 대입
- 증감 : ++, —, 1만큼 증가/감소
- 비교 : ==, !=, >, <, >=, <=, instanceof, 값의 비교
- 논리 : !, &, |, &&, ||, 논리 부정, 논리 곱, 논리합
- (조건식)? A:B, 조건식에 따라 A 또는 B 중 하나를 선택
연산의방향 우선순위
- 어떤 연산자를 사용하느냐에 따라 연산의 방향과 우선순위가 결정되기 때문에 여러가지 연산자들이 섞인 연산을 해야한다면 괄호를 이용해 먼저 처리할 연산식을 묶어주는것이 좋다
03-2 연산자의 종류
- 피연산자의 수에 따라 단항, 이항, 삼항 연산자로 구분된다
단항 연산자
부호연산자(+,-)
증감연산자
- ++피연산자 : 다른 연산을 수행하기 전에 피연산자의 값를 1 증가시킴
- —피연산자 : 다른 연산을 수행하기 전에 피연산자의 값을 1 감소시킴
- 피연산자++ : 다른 연산을 수행한 후에 피연산자의 값을 1 증가시킴
- 피연산자 — : 다른 연산을 수행한 후에 피연산자의 값를 1 감소시킴
논리 부정 연산자
- !피연산자 : 피연산자가 true이면 false값을, 피연산자가 false이면 true값을 산출
이항연산자
- 산술연산자(+, -, *, / %) : 사칙연산과 나눈 후 나머지(%)
- 문자열 결합 연산자(+) : 두 피연산자의 문자열을 결합
- 비교연산자 : 두 피연산자의 대소, 동등을 비교, 주로 조건문, 제어문에서사용
- 논리연산자 : 논리곱(&&), 논리합(||), 배타적 논리합(^), 논리부정(!)
- 대입연산자 : 오른쪽 값을 왼쪽에 대입(=), 연산 수행후 대입(+=, -=, *=, /=, %=)
삼항연산자
- 조건식 ? 값 또는 연산식1 : 값 또는 연산식2 : 조건식이 true이면 연산식1, false이면 연산식2
과제
- 이미지 분명 캡쳐했는데 휴가 오느라 마음이 급해서 집에 두고온 노트북에 저장되어있음
휴가 끝나고 집가면 바로 추가하기…..ㅜㅜ
- (필요도 없는 코드 작성한 이미지는 추가하고 왜 과제 이미지는 추가하지 않았을까ㅠ)

- (이전에 자바 공부하려고 자바 버전 17을 설치했다가 이번에 21로 다시 설치)
첫주를 끝내고 느낀점 : 나는 너무 책에 있는 내용을 다 적으려는 경향이 있다 이건 정리가 아니라 그냥 따라쓰기 같다. 필요한것만 집어내는 연습을 하자! 그리고 미리미리 공부하고 약속이 있거나 어딜 가게된다면 그 전에 다 끝내놓자 뒤로 미루고 발등에 불떨어졌을때 하는 습관울 버리자 |