[혼공자]1주차 정리

박수연·2025년 7월 6일
0

[혼공자]

목록 보기
1/7
post-thumbnail

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

0개의 댓글