** 주말 java 과정 강의 내용 기록 _첫번째 수업
오늘부터 주말반 java 기초 과정을 수강하게 되어 강사님의 수업 내용을 모두 기록해보기로 함
한달 과정으로 8일 안에 아래의 모든 과정이 진행 될 예정이라 다소 진도가 빠르겠지만
회사 업무에 더욱 도움이 되고 나의 실력향상을 위해 열심히 정리해볼 예정 !
[JAVA 전체 과정]
자바개요 > 언어기본구조 > 자료형 > 연산자 > 제어문 > 배열 > 메소드
>객체와 클래스 > 중첩클래스 > 상속 및 추상화 > API > 입출력
객체와 클래스부터는 다른 언어와 차이점이 있음
배열까지는 다른 언어와 비슷함
배열까지는 절차지향형
객체부터는 객체지향 파트
메소드는 다른 언어로 치면 함수라고 할 수 있음
함수는 독립적이나 메소드는 종속적임 ****
자바는 OOP언어이고 객체 클래스 부분은 보다 쉬운 예제로 진행 예정임
자바는 한과목이지만 절차와 객체 두과목을 배운다고 생각하면 됨
자바는 프로그래밍 언어이고 컴퓨터의 가장 기본 기능은 계산하는 기능이라고 할 수 있음
컴퓨터를 한마디로 정의하면 아주 비싼 계산기라고 할 수 있음
사람은 컴퓨터에게 계산 하는 명령을 내려야하고
0과 1로 이루어진 기계어로 명령을 내려야 함
프로그래밍 언어란 사람과 컴퓨터가 대화할 수 있는 중간다리 역할을 하는 언어임
기계어 > 저급언어 / 프로그래밍언어 > 고급언어
--------------------------------------------------------------------
JAVA 소개
> 모든 운영체제에서 실행 가능함 WRITE ONCE RUN ANYWHERE
> 객체 지향 프로그래밍이고 객체는 하나의 부품이라고 생각하면 됨
> 무료 라이브러리가 풍부함
다른 사람이 만든 프로그램을 라이브러리라고 하고 API라고 부르기도 함
다른 사람이 만든 프로그램을 사용하기만 하면 되어서 개발시간이 단축되는 효과가 있음
전자정부 표준 프레임워크 는 표준화된 개발 프레임워크임
행정안전부가 전자정부프레임워크를 공시했고 그 언어는 자바 언어임
정부에서 일거리를 받는 기업이 많음 예를 들어 사대강 사업
파이썬은 자리잡기 힘들다?.. 흠?
자바 소스 코드는 사람이 읽을수 있는 프로그래밍 언어로 기술한 텍스트 파일을 뜻함
자바 바이트 코드
:: 자바 소스코드를 컴파일한 코드 / jvm에 의해 해석되고 실행 됨
:: 자바 바이트 코드의 확장자 > .class
프로그램 언어로 작성한 파일 >> 소스파일
소스파일 자체로는 컴퓨터가 이해못하기 때문에 컴파일 과정을 통해서 0과 1로 이루어진 기계어로 변환한 다음 실행함
소스파일을 기계어로 변환하는 과정을 컴파일 이라고 함
컴파일 과정을 통해 0과 1로 이루어진 기계어로 변환한 다음 실행함
JVM > 자바 바이트 코드를 실행할 수 있는 주체 / 프로그램 실행할 수 있는 소프트웨어
바이트코드는 JVM에 의해서 해석되서 실행됨
자바 소스파일 > 컴파일러가 바이트 코드 파일로 변환 > JVM이 기계어로 실행함
운영체제마다 실행할 수 있는 기계어가 달라서 JVM 이 OS에 맞게 실행할 수 있도록 함
JAVA는 어떤 운영체제도 상관없이 소스코드를 JVM이 각 OS에 맞는 기계어로 실행까지 해줌
자바는 이식성이 좋음
한번만 소스코드를 작성하면 다양한 운영체제에서 실행이 가능함
[JAVA 배포판]
JAVA SE : 표준 배포판 / 데스크탑과 서버 응용 개발 플랫폼
JAVA ME : 자바 마이크로 배포판 / 휴대전화나 PDA 셋톱박스 등 하드웨어에서 응용개발을 위한 플랫폼
JAVA EE : 기업용 응용 개발을 위한 플랫폼
JAVA 개발 도구 JDK
JAVA SE > JAVA SE 구현체는 JDK와 JRE가 있음
JDK 자바 개발도구
JRE 자바 실행환경
자바 프로그램을 개발하기 위해서는 JDK를 설치해야함
이미 만들어진 프로그램을 돌리기만 할거면 JRE만 설치하면 됨 ?...
JDK 다운하러 감///
ORACLE.COM > 오라클 JDK를 받으려면 회원가입을 해야함
java 8 (= 1.8)버전이 가장 많이 사용되고 있어서 실습은 이걸로 진행 예정
요새는 11버전으로 옮겨가고 있다고 함
오라클 jdk같은 경우는 개발목적은 무료이나 상용목적은 유료이기때문에 다운로드시 라이선스 체크함
jdk 설치 후 환경변수 등록
어느 위치에서든지 컴파일하거나 jvm을 실행할 수 있도록 환경변수를 등록하는 거임
jdk (폴더 위치) 설치되어 있는 곳을 java_home이라고 함 >> java_home = 환경변수
어느위치에서나 사용가능하도록 자바홈을 PATH 에 등록 시켜주어ㅑ함
그러면 어느위치에서나 사용할 수 있음
path까지 등록하고 cmd 창에서 javac -version 확인하면 java 버전 확인가능
javac 1.8.0_333 >> 333은 업데이트 횟수
현재 계정에 대해서 변수등록할때가 환경변수
시스템 전체 계정에 대해서 변수 등록할때는 시스템 변수
============1교시 끝
이제 개발 준비는 끝났고 개발을 좀더 쉽게 하기 위해서 IDE를 설치함
소스파일은 텍스트 파일이기 때문에 메모장으로도 개발이 가능하지만 메모장에 개발하지는 않음
IDE >> 편집, 컴파일, 디버깅을 한번에 할 수 있는 통합된 개발 환경
** 디버깅은 오류를 찾아내기 위한 테스트 과정임
이클립스 >> 자바 개발에 최적화된 IDE임 / 응용프로그램 개발을 위한 통합 개발 환경
이클립스는 무료이고 별도 가입 없이 설치 가능함
ecilpse.org 에서 다운
인스톨러에서 다운을 받아도 되지만 직접 받으려면 다운로드 packages 에서 받으면 됨
이클립스 다운로드 버전은 두가지가 있는데 Eclipse IDE for Java Developer는 순수 자바 어플리케이션을 개발하기 위한 ide
Eclipse IDE for Enterprise Java and Web Developers 버전은 무거운 버전임 > 웹개발도 가능한 ide임
D드라이브나 E드라이브에 새폴더 만들어서 이클립스 다운
이클립스는 워크스페이스라는 작업공간을 두어서 프로젝트를 관리함
즉 폴더를 두어서 프로젝트를 관리함
이클립스가 다운되어잇는 폴더에 워크스페이스 폴더를 만듬
반디집으로 압축풀기 > eclipse.exe 더블클릭
이클립스는 항상 작업공간을 두기 때문에 작업공간을 선택하고 launch
메타데이터는 워크스페이스라는 표식을 남기는 것이고
이클립스가 해당 폴더를 워크스페이스로 이용하는 것에 대한 준비를 하는 것
맨 상단 메뉴바 / 그 아래 툴바 / 각각의 창들을 view 라고 함
뷰를 모아놓은 전체 창들을 perspective 라고 함
package Explorer는 가장 중요한 view 는 프로젝트를 관리하는 창(view)
console > 이클립스에서 작업파일을 실행했을 때 결과를 출력하는 창
자바 프로젝트 :: java_class_01 (01 02 03 으로 진행 예정)
1.8버전에 기본으로 올라가 있는 라이브러리 폴더
src 는 소스파일을 넣는 공간
자바 src 파일은 항상 package 라는 공간 안에 둠
src 폴더에서 패키지를 만들어주고 소스폴더를 만들어주면 됨
패키지는 자바 소스파일과 바이트 파일을 관리하는 폴더임
패키지명 :: folder
class 는 자바 소스파일을 만드는 파일임
자바 소스파일의 확장자는 .java 임
이클립스에서는 소스파일에 소스코드를 작성하고 ctrl + s 를 누르면 실시간으로 컴파일을 시켜줌
바이트코드에서 > .class를 만듬
class이름을 짓는 규칙 > 첫문자는 대문자로하고 연결단어의 첫문자도 대문자인 카멜 표기법 사용
글씨를 키우는 단축키 >> ctrl + +(플러스) 기호
HelloJava 클래스 만들고 > main메서드 + sysout 직접침 (자동완성안함)
sysout 설명
system이 가지고 있는 출력장치로 괄호안에 있는 내용을 console 창에 출력해라 라는 의미
main 메서드는 main 이라는 이름의 자바 기본 메서드 (메인 메서드 문구를 외우라고 하심....)
Public static void main(String[] args){ };
public class 라는 것은 자바는 모든 소스코드를 객체화를 시키기 때문에
클래스 라는 것은 객체를 만드는 껍데기이고 그 클래스의 이름이 Hellojava 임
중괄호를 block이라고 하는데 하나의 범위를 뜻함
컴퓨터에게 어떠한 명령을 (출력해라 등) 했을때 명령의 끝을 알려주는 세미콜론을 붙여줘야함
------------------------------------------------------
프로그램의 구동원리 설명
소스파일 자체만으로는 컴퓨터가 인식을 못함
소스파일을 작성했으면 컴파일을 해야 하는데
jvm에게 바이트코드를 컴파일 + 실행까지 시켜야하는데
이클립스는 컴파일 + 실행을 알아서 해줌
이클립스 탐색기를 열어볼게욤 showview > navigator
이클립스에서 소스파일을 작성하고 저장하면 실시간으로 bin 이라는 폴더에 .class 파일이 생성됨(실시간 컴파일)
실행 단축키 누르면 바이트 코드파일을 jvm이 읽어서 컴파일 + 실행을 시켜줌
우리는 이제 소스파일만 집중적으로 작성하면 되고 가볍게 이해만 하고 넘어가셔요
주석 설명
주석은 프로그램에 영향을 주지 않음
주석을 소스내용을 설명하기 위한 코드 (즉 개발자를 위한 코드)
// 한줄주석
/* 범위주석 */
jvm이 주석을 건너띄고 읽지 않음 / 프로그램에 영향을 미치지 않음
주석을 잘 다루는 개발자가 훌륭한 개발자이다 라고 하면서 허허 웃으심..ㅎ
자바에서 " " 큰따옴표는 문자열을 뜻하고 문자열안에서는 주석이 될 수 없음
자주 사용하는 단축키 안내
// tab :: 들여쓰기
// shift + tab :: 내어쓰기
// ctrl + (+, -) 폰트크기 단축키
sys단축키 드디어 알려주심
자바는 모든 코드를 객체화 시키기 때문에 클래스의 범위 안에 있어야 함
클래스의 범위를 벗어나면 자바 코드가 아니게 됨
다음주까지는 메인 메서드라는 범위 안에서 코드를 작성할 것
네번째 시간부터는 메인 메서드 벗어나서 코드 작성할 것
================================2교시 끝
java 변수 (variable / 프로그램에서의 변수)
변수 :: 하나의 값(데이터)을 저장할 수 있는 메모리에 붙이는 이름
상수 :: 값을 한번 저장하면 변경할 수 없는 변수
리터럴 :: 값 그 자체를 뜻함
int age;
final double PI;
메모리에 age 랑 PI가 저장되는 것
int a = 100;
100이라는 값을 메모리에 저장하려고 a 라는 이름을 붙여주는 것
데이터 타입 >> 변수를 선언할 때 변수에 저장하는 데이터의 종류와 크기
종류와 크기에 맞게 선언하기 위해서 변수앞에 데이터 타입을 명시에 해준다
할당하고 싶은 데이터 크기에 맞게 변수를 선언하기 위해 변수명 앞에 데이터 타입을 명시해줌
= :: 우항의 값을 좌항 변수에 할당(저장)하는 대입연산자
자바의 모든 변수는 중괄호{} 블록내에서 선언되고 사용됨
변수 이름 명명 규칙
firstsname 과 firstName은 다른 변수임
변수이름을 지을 때 문자 길이의 제한은 없음 / 자바예약어는 사용할 수 없음
드디어 main메서드 자동완성 알려주심
프로그램에서 변수를 왜쓰는가 >> 수정이 용이하고 언제든지 재사용이 가능하기 때문
int a; 정수타입 변수 선언
a = 100; 선언 후 저장 :: 초기화
초기화 설명해주시고 계셔서 혼자 printf 연습하면서 에러 내봄
IllegalFormatPrecisionException >> 실수 정밀도 에러
정밀도가 -1 이외의 잘못된 값의 경우로 변환이 정밀도를 지원 하지 않는지,
값 이외의 경우로 지원 되지 않는 경우, 체크되지 않는 예외 발생
String firstname = "JAVA"; 문자열을 저장하는 타입이 String >> 문자열 리터럴
자바의 변수는 대소문자를 구분하므로 firstname != firstName 알파벳이 같아도 서로 다른 변수임
자료형 넘어가기 전에 bit 와 bite 에 대한 교양 설명
컴퓨터는 어떻게 0과 1을 구별할까 (전기신호로 구분함)
컴퓨터는 '전압이 충분히 높음' or '전압이 충분하지 않음' 이 두가지 신호로 된 2진법을 사용함
일정한 전압이 흐르고 있는 상태에서 일정한 전압보다 낮거나 높게 들어오는 경우를 0와 1로 구분할 수 있음
1바이트는 1비트 8개로 구성됨
1비트는 2개의 수를 저장 가능 0,1
2비트는 4개의 수를 저장 가능 0,1,0,1 이런식으로 2배수라 생각하면 됨
8비트는 2^8 인 256가지의 수를 저장할 수 있음
왜 1바이트는 8비트가 되었을까
아스키코드를 봅시다요
이진수로 이루어진 전자신호를 사람이 인식할 수 있는 문자로 저장했어야 했는데
미국사람들을 위한 영문자로 표현하는 아스키코드를 만들었음
아스키코드는 7비트였으나 추가 문자 지원이 필요하다고 생각해서 1비트를 추가했고
확장아스키 코드인 256개의 코드를 표현할 수 있게 됨
1바이트가 8비트가 된 계기 >> 저장의 최소단위가 8비트
컴퓨터는 미국인만 쓰는게 아니고 여러 국가사람들이 쓰기 때문에
아스키코드는 1바이트로 1개의 문자를 표현하는데는 영어로 한정되어 있음
이 한계를 극복하기 위해 유니코드가 탄생함
2바이트로 컴퓨터를 사용하는 국가에 한해서 모두 표현할 수 있게 됨
비트로 양수 음수 0 모두 표현해야 하기 때문에 부호비트 하나 필요
오버플로우/ 언더플로우
오버플로우 (시계방향):: 데이터 타입이 저장할 수 있는 값(최대값)의 범위를 초과한 경우 가장 작은 숫자로 돌아가서 다시 올라가게 됨 (부호비트를 건드리기 때문)
언더플로우 (반시계방향):: 데이터 타입이 저장할 수 있는 값의 범위보다 작은 값(최소값)을 저장한 경우 가장 큰 숫자로 돌아가서 다시 내려가게 됨 (부호비트를 건드려서)
이제 변수 타입 넘어감
자바에서의 데이터타입은 크게 기본형 / 참조형이 있음
기본형 Primitive type :: 실제 값을 저장
[8개의 타입]
정수형 :: byte short int long
문자형 :: char (문자를 저장하기 위한 타입이지만 실제값은 정수가 저장됨) / 음수값이 없는 특수자료형
실수형 :: float double
논리형 :: boolean
boolean (논리 자료형) :: 참 또는 거짓을 표현
메모리는 1바이트(굳이 1바이트 다 안써도 되지만 값의 저장 최소 단위가 1바이트라서 1바이트 사용함) / 입출력 범위는 true / false
자바에서는 boolean 을 표현하기 위해 비교연산자나 논리연산자를 사용함 (== , < , <= , > , >=, && , ||, !)
================================3교시 끝
기본타입 (정수)
정수 타입 안에서도 메모리 사용량이 각기 다름
byte 1 short 2 int 4 long8
int 는 2의 32을 저장한다 정도만 이해하면 됨
자바에서 정수 연산을 할 때는 기본적으로 int형으로 연산을 하기 때문에
정수는 int 로 연산하는 것이 가장 빠름
byte short에 별도 접미사가 없음
int 형의 값을 byte short 에 저장하는 것이 가능
실수는 부동소수점 방식으로 저장되기때문에 int보다 더큰 범위의 값을 저장할 수 있음
유니코드는 아스키코드와 1바이트 까지는 상응함
65 == A 아스키코드
비교연산자는 boolean 값(논리값)을 갖는다
비교 후 값을 연산하는 그 결과는 논리자료형으로 나옴
부동소수점 방식 :: e또는 E는 10의 지수를 나타낸다
3e2 >> 3으로부터 소수점을 2 자리 이동해라 >> 300
5e-3 >> 5로부터 소수점을 반대방향으로 3자리 이동해라 >> 0.005
타입변환 (형변환)
타입변환이란 변수의 값을 다른 타입으로 변환 시키는 것
타입 변환에는 두가지 종류가 있음
** 불리언은 타입변환 불가함
자동형변환(묵시적형변환) :: 작은 크기의 데이터 타입을 큰 크기의 데이터 타입으로 변환하는 행위
타입변환에서의 데이터 크기는 어떠한 수를 더 많이 저장할 수 있느냐로 보기 때문에
byte short int long float double 순서임
** char타입은 자동형변환의 예외임
>> 2바이트의 크기이지만 char의 범위는 음수저장이 안되기때문에
음수값 저장이 되는 byte 값을 char로 자동형변환 해주지 않음
강제형변환(명시적형변환) == casting
4바이트인 int타입 데이터 0000 를 1바이트인 byte 타입 변수에 저장하려면
int 타입을 0/0/0/0 쪼개고 마지막에 남는 0/0/0 [/0] 이것을 byte에 저장함
자바에서 정수연산시에는 기본으로 int 타입으로 연산함
byte c = 10;
byte d = 2;
byte result = c+d; // 에러나는 이유는 c+d 를 int 로 연산하기 때문에 int를 byte 에 담을 수 없어서
정수와 실수의 연산시에는 정수타입의 피연산자가 실수타입으로 자동형변환되어 연산수행
지정된 타입보다 값이 더 클 경우 강제 타입변환을 하면 overFlow 현상이 발생해서 가장 작은 값으로 돌아감
int vv= 128;
byte v= (byte)vv;
System.out.println(v); // 결과값 :: -128
================================4교시 끝
escape 문자
문자열 내부에 \가 붙은 문자를 사용할 수 있음
String은 기본 자료형 처럼 다루게 해주는 class임
문자열 값은 " " 를 사용해서 작성함
println() >> 시스템이 가지고 있는 출력장치로 괄호안의 내용을 출력하고 개행하는 메서드
printf() >> 괄호안의 첫번째 문자열의 형식대로 내용을 출력해라
printf("형식문자열 지정(서식문자% + 변환문자d f c s 등등 )" , 값1(서식문자의 실제 값), 값2....);
%d 정수 / %f 실수 / %c 문자 ' '/ %s 문자열 " "
서식문자의 형식으로 서식이 되어져서 출력됨
서식지정자 안에 %숫자d로 작성하면 출력시 해당위치에 숫작밧 만큼의 공간을 확보하고 값을 출력함
숫자값 만큼의 전체 자릿수를 지정하는 것
실수값을 출력할 때 서식지정자 안에 %.숫자f 로 작성하면 해당 숫자까지의 소수점 자리를 출력함(반올림함)
20221008 수업끝
'Java' 카테고리의 다른 글
새싹체험_java_1015 (0) | 2022.10.15 |
---|---|
새싹체험_java_1009 (0) | 2022.10.09 |
[IT국비지원교육_코딩_비전공자] vo&테이블 설계 (0) | 2022.05.13 |
[IT국비지원교육_코딩_비전공자] 배치프로그램_스케줄러 (0) | 2022.03.18 |
[IT국비지원교육_코딩_비전공자] 부트스트랩 cdn 활용 (0) | 2022.03.15 |