Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

어? 이게 되네

2022.03.29. 화요일 이공계 전문기술 연수사업 2일차 본문

TIL

2022.03.29. 화요일 이공계 전문기술 연수사업 2일차

토끼귀에진주귀걸이 2022. 3. 29. 18:57

오늘 배운 것

자바로 만들어진 프로그램 : 자바 어플리케이션
자바 어플리케이션 구조
ㄴ반드시 하나 이상의 클래스로 구성된다
ㄴ반드시 하나의 main메소드를 가져야 한다.

자바 프로그램의 작성
문서를 작성할 수 있는 것이면 어떤 것이라도 좋음

자바 프로그램의 저장
클래스 이름과 같은 이름으로 저장하고 확장자는 .java로 한다.

컴파일 하기
javac 파일명(확장자 포함)

실행하기
java 클래스 이름(확장자 미포함)

이클립스의 사용
자바 개발을 위한 통합 개발도구 - 코드 작성 생산성 높임

주석문
프로그램 실행에 영향을 끼치지 않고 설명을 위한 문장

한 줄 주석 //
여러 줄 주석 /* */

주석은 컨트롤+슬러시

변수와 상수
int a = 10;
에서 a를 변수라 하고 10을 상수라고 함
변수는 변할 수 있음

자바 프로젝트 만들 때는 모듈은 생성하지 않음!!!

swap 개념 다시 이해하기!!!!!

변수를 만들 때는 그 변수 안에 어떤 성격의 값을 넣을 것인지 정해줘야 함
그것을 자료형 명시라고 함

---자바의 자료형---
ㄴ기본 자료형 (8가지)
boolean - 참인지 거짓인지 판별하기 위한 자료형임. 값은 true나 false 두 개의 값을 저장할 수 있음
char - 하나의 문자를 표현하기 위한 자료형. 자바는 문자열과 하나의 문자에 대한 처리를 다르게 함.
여러 글자로 구성된 문자열을 위해서는 참조자료형인 String을 이용하고 하나의 문자를 위한
자료형은 char. 또, char는 '' 홑따옴표로 묶어줘야 하고 String은 "" 쌍따옴표로 묶어줘야함
char a = '홍';
String b = "홍길동";
String c = "홍"; 이것도 가능

~정수를 위한 자료형~
byte - 메모리 크기가 1byte(8bit) 8bit는 2의 8제곱가지의 수를 표현(이진수로) (-2의 7승 ~ 2의 7승 -1)
계산하면 -128부터 127까지 표현 가능 //이거 왜? 아하! 이만큼의 용량의 정수를 담을 수 있음
용량보다 더 큰 값을 넣으면 오버플로우, 작은 값을 넣으면 언더플로우
//아 그래서 스택 오버플로우구나?ㅋㅋ
short - 메모리 크기가 2byte(16bit) 16bit는 -2의 15승 ~ 2의 15승 -1 까지의 용량의 정수를 표현할 수 있음
거기까지의 용량의 정수를 표현한다는 말이 뭘까?
int - 메모리 크기가 4byte(32bit) -2의 31승 ~ 2의 31승 -1 자바에서는 정수의 기본 자료형을 int로 취급
long - 메모리 크기가 8byte(64bit) -2의 63승 ~ 2의 63승 -1 맨 왼쪽 자리는 부호라서 하나 뺴는 거임!

~실수를 위한 자료형~
float - 메모리 크기가 4byte 소수점 여섯째자리까지 표현
double - 메모리 크기가 8byte 소수점 열다섯째자리까지 표현
자바에서는 실수의 자료형 기본은 double임

자료형이 서로 다른 것끼리 연산을 하면 그 결과는 그 중에 자료형이 큰 것으로 됨.
int(4) + double(8) ==> double(8) //이거 왜? 아예 연산이 무시됨?
int + int 는 int 결과
int / int 도 역시 int결과 그래서 (5+2)/2 했을 떄 3 나온거임
만약 소수점 이하의 값을 가져야 한다면 둘 중에 하나를 실수로 변환한 후에 연산을 수행해야 함

ㄴ참조 자료형 - 객체, 배열
이건 나중에~

--------------------------------------------------------------
자바의 연산자

연산자 이야기하기 전에 식별자란?
변수 이름이나 클래스 이름이나 메소드 이름 등 이름을 정해주는 것을 말함.
다른 것과 구별할 수 있어야 하고, 한글 영문 숫자 _ $ 로 구성될 수 있지만 한글 사용 지양함
첫 글자는 영문이나 _로 사용 (가급적 언더바말고 영문 사용 지향)
클래스 이름의 첫 글자는 무조건 영문 대문자로 시작!
변수명이나 메소드 이름의 첫글자는 영문 소문자로 시작함
식별자를 정할 때에는 가능하면 의미있는 이름으로 작명
그러다 보면 두 개의 단어 이상으로 식별자를 정할 수 있음
이 때에 식별자에는 공백을 포함시킬 수 없음
int my age = 20; -이건 불가능
int my_age = 20;
int myAge = 20; - 이 두 개는 가능 (언더바 이용 또는 첫 번 째 단어를 제외하고 각 단어의 시작 글자를 대문자로)

변수를 사용할 때는 변수를 먼저 선언하고 사용!

자바에서 이미 의미 있는 단어로 예약되어 있는 예약어들 (int class public void main ..)은
식별자로 사용 불가능

----------------------------------------------------------------
연산자 - 증감연산자

산술연산자 + - * / %
증감연산자 ++(변수 자신에 +1을 하여 다시 변수에 저장하라) --(변수 자신에 -1을 하여 다시 변수에 저장하라)

증감연산자가 변수명 앞에 올 수도 있고 변수명 뒤에 올 수도 있음.
증감연산자 단독으로 사용될 때에는 변수명 앞에 오든 뒤에 오든 동일하게 동작함.
그러나 다른 연산자와 같이 사용될 때에는 의미가 달라짐.
변수명 앞에 오면 먼저 증감을 한 후에 다른 연산을 실행하고
변수명 뒤에 오면 다른 연산을 먼저 실행한 후에 나중에 증감 연산을 실행함.

-----------------------------------------------------------------
연산자 - 비교연산자

두 개의 값의 크기를 서로 비교하는 연산자들을 말함.
> >= < <= == !=
(=> 나 =< 는 사용 불가능, 사이에 공백 불가능)

이러한 비교연산자는 선택문의 조건식이나
반복문의 조건식에서 주로 사용함.

-----------------------------------------------------------------
연산자 - 논리연산자

판별해야 하는 조건식이 하나가 아니라 두 개 이상일때 사용하는 연산자
두 개의 조건식을 모두 만족해야할 때는 논리곱 &&
두 개의 조건식 중에 하나만 만족해도 될 때는 논리합 ||

------------------------------------------------------------------
연산자 - 비트연산자

비트의 상태에서(0,1) 동작하는 연산자를 말함 이진수일 때만!
& 비트곱 - 두 개의 비트의 상태가 모두 1일 때만 결과가 1
| 비트합 - 두 개의 비트의 상태가 한 개라도 1이면 결과가 1
^ 비트차 - 두 개의 비트의 상태가 서로 다를 때만 결과가 1

X Y : & | ^
---------------------------
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

------------------------------------------------------------------
연산자 - 비트이동연산자
<< 왼쪽으로 비트를 이동시키는 연산자
>> 오른쪽으로 비트를 이동시키는 연산자

------------------------------------------------------------------
비트곱 & 연산자와 비트합 | 연산자는 논리연산자로 사용할 수도 있음
------------------------------------------------------------------
ShortCut Operation
논리곱을 위하여 &&와 &을 사용할 수 있음.
또, 논리합을 위하여 ||와 |를 사용할 수 있음.
그러나 &&과 &는 동작하는 방식이 조금 다름
마찬가지로 ||과 |도 동작하는 방식 다름.

조건식1 && 조건식2
ㄴ 조건식1도 참이고 조건식 2도 참일 때 전체가 참이 됨.
그런데 만약 조건식 1를 판별했더니 거짓이라면 조건식 2를 따질 필요가 없음
&& 이 연산자는 만약 조건식1이 거짓이라면 아예 조건식2를 수행하지 않음.

조건식1 & 조건식2
ㄴ조건식1이 거짓이라도 조건식2를 일단 실행함

조건식1 || 조건식2
ㄴ둘 중에 하나라도 참이면 전체가 참임.
만약에 조건식1이 판별했더니 참이라면 조건식2를 수행하지 않음

조건식1 | 조건식2
ㄴ조건식1이 참이라도 조건식2를 일단 실행함.

그래서 &&, ||을 shortcut operation이라고 함.
-------------------------------------------------------------------
복합치환연산자 : 변수에 어떠한 연산을 수행하여 그 결과를 다시 그 변수에 대입하는 연산자들

+=
-=
*=
/=
%=
....
--------------------------------------------------------------------
연산자  - 삼항연산자(조건식연산자)
조건식에 따라 동작시킬 항을 선택하기 위한 연산자.
간단한 if else를 대신할 수 있음.
(항1)?항2:항3
항1에는 조건식이 옴
만약 항1이 참이라면 항2를 동작하고
항1이 거짓이라면 항3을 동작시킴.
--------------------------------------------------------------------
제어문
프로그램 실행 중에 실행할 문장을 제어하기 위한 문장을 말함.
선택문, 반복문, break, continue

선택문
ㄴ상황에 따라 실행코자하는 명령어들을 선택코자할 때 사용함.
if, switch
--------------------------------------------------------------------
if(조건식){
조건식이 참일 때 동작할 명령어
}else{
조건식이 거짓일 떄 동작할 명령어
}

동작할 명령어가 1개일 때는 {}를 안 해도 되지만
2개 이상일 때에는 {}를 꼭 해줘야 함.

a;
b;
c;
if(조건식)
c;
else
d;
e;
f;
g;
----------------------------------------------------------------------
a;
b;
if(조건식)
c;
d;
e;


a;
b;
if(조건식)
c;
d;
else
e;
f;
g;
h;
i;

이러면 오류난다 이거야~
괄호가 없어서 그렇다 이거야~~~
-----------------------------------------------------------------------
중첩 if문

a;
b;
if(조건식1){
if(조건식2){
c;
}else{
d;
}
}else{
if(조건식3){
e;
}else{
f;
}
}
g;
h;
최댓값 찾을 때 자주 쓰임
-----------------------------------------------------------------------
다중 if else

if(조건식1)
명령1;
else if(조건식2)
명령2;
else if(조건식3)
명령3;
else(조건식4)
명령4;

따져야할 조건이 하나가 아니라 여러개라면 if, else if ...,else로 표현가능함.

 

오늘 헷갈린 것

  • ==을 =으로 자꾸 잘 못쓴다.. 둘이 같냐는 것을 식별할 때 비교연산자인 ==를 써야하는데 자꾸 대입연산자인 =를 쓴다 숙지요망.
  • swap개념이 조금 헷갈리지만 그림그려가면서 복습하면 될 것 같다. 숙지요망.
  • 비트(이진수)개념에서 쓰이는 연산자들의 사용이 조금 익숙치 않아서 헷갈린다. 숙지요망.

 

오늘 한 생각

오늘로 이공계 전문기술 연수사업 2일차가 되었다.

피곤하긴 하지만 그 동안 공부에 소극적이었던 내가, 팀원들 중에 나서서 디스코드 채널도 파고,

복습할 생각도 하고, 수업 중에 조금 박대갈희같은 질문이었지만 선생님께 질문도 했다! 이런 나자신 제법 기특해요.

확실히 비대면보다는 대면수업이 집중이 잘 되기는 한다.

그렇지만 출퇴근 지옥철을 그것도 노트북이랑 책을 어깨에 매고 갈 생각하면.. 정신이 아득해진다.

확실히 틈틈히 운동을 해줘서 체력을 길러주는 것이 답이다!

평일엔 복습+숙제하면서 최소 주 2회 이상 운동하는 것이 나의 목표다