자바 1주차 정리

선장원·2021년 10월 11일

자바

목록 보기
7/24

1주차(1~6일차)

주말에 정리를 해보자
어떤식으로 정리를 해야할까...
프로그램/ 정의 / 메서드 / 수업중 꿀팁
위 4가지로 나눠서 하는 정리를 하는게 좋으려나

프로그램

JDK

자바 개발 도구 (Java Development Kit)
amazon correto 아마존 코레토 : 오픈 JDK
컴파일러 : 사람의 언어를 기계어로 번역 해주는 프로그램?
환경변수을 설정해야 컴퓨터 어디서든 사용할 수 있게 해줌

IED

통합 개발 환경

  • 프로그래밍을 편하게 해주는 프로그램
  • vscode, Eclipse, IntelliJ

자바는 이클립스로 연습을 한다.

Eclipse 설치


위 압축파일을 다운 받아서 압축 해제 하면 사용이 가능하다.

Eclipse 실행


화면 구역 정리


클래스 처음 화면


프로젝트와 패키지, 클래스를 만들면 이클립스 저장폴더에 자동으로 폴더가 생긴다.
bin : binary = 2진수 : 컴퓨터가 보는 파일
src : 우리가 만들고 보는 파일
자바 클래스 (Java Cless) : 자바의 파일 단위

Java Comsole Application
자바 콘솔 어플리케이션을 실행하기 위해서는 메인 메서드가 필요하다.

프로젝트 패키지 클래스 만들기

프로젝트 만들기

패키지 만들기

클래스 만들기

1. 패키지를 같이 생성/ 이미 패키지가 있으면 생성 돼있는 패키지 이름 자동
2. 클래스 이름
3. 메인 메소드 자동 생성

Git, Git Hub

소스관리(형상 관리) 도구

git 설치
git hub 설치

프로젝터 생성> 프로젝트 이름 오른쪽클릭 > show in> system explorer
>자바 폴더로 들어가서 위에 파일 > window powershell

git init
git config --local --list
git config --global user.name 'seonjangwon'
git config --global user.email 'wkddnjs740@naver.com'
git config --global --list
차례대로 입력

확인

네임, 이메일 지우는 법
git config --global --unset user.name
git config --global --unset user.email

이제 git hub홈페이지로 들어가서
git hub의 내 정보에서 your repositories에서 new를 눌러서 만들어서


1. 이름
2. 저장소 설명
3. 만들기

다 만들고 나면 이런 페이지가 뜬다.

여기서 빨간 부분을 복사해서 윈도우 파워셀에 입력

git config --local --list 을 입력해서 확인

파워셀에
git status를 입력

빨간색이 수정된 파일들
깃허브랑 지금 파일이랑 다른애들

git add .입력( . 중요)

git commit -m ‘나의 첫 커밋’ 입력

git branch -M main입력

git push -u origin main

git push -u origin master
을 입력하면 처음으로 설정하는 사람은

의 크롬 페이지가 뜨는데 초록색을 눌러주면 된다.

ranch를 안하면 master에 해야 하고 main에 사용하려면 git branch -M main입력을 해줘야한다.

이제 처음 등록 끝!
이제부터는 파일을 생성하고나서 올릴 때

이클립스로 파일을 추가하고 git status를 치고

git add .
git status

git commit -m ‘test2’

git push -u origin main

한번더 클래스를 수정을 해보면

git add .
git status
git commit -m '뭐가 수정된 것인지 쓰자'
git push -u origin main

위 과정을 하고 깃 허브에 들어가보면

클래스 안에서 뭐가 수정된 것인지 나온다
빨간줄은 삭제
초록줄은 추가

정의

변수

  • 어떤한 값(데이터)을 담는 컴퓨터(메모리)상의 공간
  • 변수를 사용하려면 성언하고 값을 담아야함
    1. 선언과 동시에 값을 담거나
    2. 선언 후 값을 담을 수 있음.
  • 선언
    1. 변수타입 변수이름 = 데이터;
    특정타입으로 선언한 변수는 해당 타입의 데이터만 다룰 수 있음
    1. 변수 선언 후
      변수 이름 = 데이터;
  • 선언 하지 않은 변수는 사용 불가능

변수타입

  1. 기본형 타입(primitive) : int, long, float, dobule, boolean
    • 실제 메모리에 저장/ 데이터를 직접 담고 있다.
    • 소문자로 시작
  2. 객체(참조형) : String 등
    • 메모리 주소 값이 들어있어서 주소로 입력????
    • 대문자로 시작
    • 진정한 자바라고 한다. 객체 지향 프로그래밍
    • 클래스를 가져오는 것????
  3. 데이터 졸류가 여러 가지인 만큼 이 데이터를 다루기 위한 타입도 존재
    • 데이터 종유 : 숫자(정수, 실수), 문자, 문장, 참/거짓
  4. 숫자데이터
    • 정수형 타입 : int(4byte), long(8byte)
      a. int는 21억까지 그 이상의 숫자는 long변수를 사용한다.
    • 실수형 타입 : float, double(8byte)

long 타입 변수
long longVar = 10L;
long 롱타입 변수 뒤에는 L을 쓰지만 출력 되지 않는다.

float 타입 변수
float floatVar = 1.234f;
float 타입의 변수 뒤에는 f 를 붙여준다

double 타입 변수
double doubleVar = 1.234;
double

bool 타입 변수
boolean booleanVar = false;

string 타입 변수
string stringVar = “스트링 타입의 데이터는 더블쿼터로 묶어줍니다. 123asdf”;

정수 실수의 형 변환

정수(int) -> 실수 (double) : 형 변환
실수 8byte > 정수 4byte : 강제 형 변환(casting)

실수는 8byte 정수는 4byte라서 정수에서 실수를 가는 형변환은 다른 조치가 없이도 가능
하지만 실수에서 정수로 가는 형 변환은 byte가 줄어드는 형 변환이라서 (int) 라는 코드??가 필요하다.
하지만 (int)를 사용하면 소수점 밑으로 반올림이 아니라 제거다.

변수명 작성 규칙

  1. 최대한 의미있는 단어로 변수명을 짓는다.( 처으부터 습관을 들여야한다 나중에 가면 고치기 힘들다)
  2. 영문자(소문자)가 먼저온다
  3. 카멜케이스
    • firstName
    • num1, num2
    • first_name
  4. 예약어는 사용할 수 없다.
    • 예약어 : 문법 등으로 지정된 단어
    • 예) int, long, if, for, while

지역변수 전역변수

  1. 변수를 사용할 수 있는 범위에 따라 차이가 있음.
  2. 전역변수 (Global Variable)
  • 클래스 또는 메서드 내에서 선언해서 어디서든 사용이 가능한 변수
  1. 지역변수 (Local variable)
  • 특정 블록 내에 선언해서 해당 블록에서만 사용이 가능한 변수
  • 블록을 벗어나면 사용 불가능

특수문자

` : 밸택, 그레이브
~ : 틸드
! : 느낌표
@ : 앳
# : 샾
^ : 캐럿
& : 앰퍼센트
* : 애스터리스크
- 하이픈, 대시
_ : 언더스코어, 로우대시, 언더바
= : 이퀄스
" : 쌍따옴표, 더블쿼터
' : 싱글쿼터, 어포드트로피
: : 콜론
; : 세미콜론
/ : 슬래시
| : 버티컬바
\ : 백슬래시
() : 소괄호
{} : 중괄호
[] : 대괄호
<> : 꺽쇠괄호

method(메서드) 정의

  • method : 메서드 = 특정 기능을 수행하는 블록
  • 파이썬의 함수와 비슷한?????
    메서드를 가져다 쓴다 = 메서드를 호출한다
    메서드의 마지막에서는 ;(세미콜론)을 붙여준다.

패키지 클래스 정의

패키지 : 클래스를 모아둔 묶음

패키지 이름 X :default package


클래스를 만들 때 패키지를 지정하면 패키지 이름이 표현됨

클래스 기본 구조
패키지 이름
클래스 이름
메인 메서드

패키지 이름

  • 소문자로 작성
  • 두 단어 이상 연결된 패키지 이름인경우 두번째 단어 시작글자 대문자
  • firstname -> firstName : 카멜케이스 표기법
  • 또는 언더바 활용 : first_name
  • 숫자로 시작하지 않음. 숫자는 영단어 뒤에
  • example1, example2 (o)
  • 1example, 2example (x)
  • 패키지 이름을 지을 때 최대한 의미를 지정해서 만들어야 구분하기 쉬움

클래스 이름

  • 대문자로 시작 (Example, Member)
  • 두 단어 이상 연결괸 클래스 이름인 경우 모든 단어 시작글자 대문자
  • Firstname -> FirstName : 파스칼케이스 표기법
  • 숫자로 시작하지 않음. 숫자는 영단어 뒤에
  • FirstName1

패키지 클래스 동일

  • 한글 이름 쓰지 않음
  • 공백은 허용하지 않음 (언더바 활용 first_name)

= 이퀄스의 의미

  • **무조건 우변에 있는 내용을 좌면에 대입한다.
  • = 가 있는 문장을 만나면 우변부터 봅시다
  • 우변이 먼저 수행 된다.

연산자

산술 연산자

  1. 변수 연산자 변수
  2. + : 더하기
  3. - : 빼기
  4. * : 곱하기
  5. / : 나누기
  6. % : 나머지 연산

비교 연산자

  1. 양쪽을 비교해서 결과를 boolean타입(true, false)으로 리턴(출력)
    • <
    • >
    • <=
    • >=
    • == : 양변이 같다면 true, 다르면 false
    • != : 양변이 다르면 true, 같으면 false
  2. 5 > 3 = true
  3. 7 < 2 = false

대입 연산자

  1. a += b >> a= a+b
  2. a -= b
  3. a *= b
  4. a /= b
  5. a %= b
  6. a랑 b를 연산한 값을 다시 a로 누적? 보낸다?
    신기한 느낌
    변수 선언을 사용하지 않아도 대입 연산자를 사용하면 계속 유지된다.

논리 연산자

종류 : and연산(&&), or연산(||), not연산(!)

  • a && b
  • a,b자리에 올 수 있는 요소는 boolean타입변수(true, false)로 결과가 리턴되는 연산식

and

a와 b가 모두 true라면 결과는 true
a와 b 중 하나라도 false가 잇으면 결과는 false

or

a와 b 가 모두 false라면 결과는 false
a와 b 중 하나라도 true가 있으면 결과는 true

not

반전시키는 역할
기존에 있는 값이 true라면 결과는 false
기존에 있는 값이 false라면 결과는 true

증감연산자

종류 : ++, --
변수 앞 또는 변수 뒤에 위치 할 수 있음
앞이냐 뒤에 따라서 계산 결과가 달라짐.
++이 붙으면 무조건 1씩 증가
--가 붙으면 무조건 1씩 감소

++var : var이 가지고 있는 값에 1을 증가기킨 뒤 전체 연산에 사용함
var++ : var이 가지고 있는 값을 전체 연산에 사용한 뒤 var의 값을 1 증가 시킴

반복문 같은 곳에 많이 사용 된다고 한다.
반복 숫자를 구하거나 등등

메서드

System.out.println();

System이라는 클래스에서 println이라는 메서드를 가져다 쓴다.
메서드를 가져다 쓴다 = 메서드를 호출한다

print() : ()안에 있는 내용을 출력하고 줄은 그대로
println() : ()안에 있는 내용을 출력하고 줄을 바꿈

length();

String 클래스에서 제공하는 length()메서드 호출
length() : String 변수의 길이값(글자수)을 알려줌
공백도 한글자

Scanner

스캐너 객체를 선언해야 활용가능
파이썬의 input과 같은 사용

Scanner scan = new Scanner(System.in);
위 문장은 스캐너객체를 선언한다.

우변
new : 새로운 객체 (인스턴트)선언 (키워드)
나머지 스캐너 클래스 생성자 (생성자 : 객체 생성양식) : 생성자랑 객체만 기억해도 된다고 하심 아직 생성자 객체에 관한 것을 안배워서 그런가
가로 안 : 매개변수
System.in : 사람의 의해서 시스템에게 주는 것
System.out : 시스템에 의해서 사람에게 주는 것


오류를 눌른 후 import ‘Sanner’ (java.util)를 누르면

클래스 이름 위 쪽에 import java.util.Scanner; 가 생김

아니면 클래스 이름 위에 import java.util.Scanner;를 친다.

nextInt(); : 정수를 입력
next(); : 띄어쓰기 또는 엔터 전까지 입력한 내용을 저장
nextLine(); : 엔터 전까지 입력한 모든 내용을 저장

int num = 0;
num = scan.nextInt();

제어문

어떤 상황(조건)에 따라 프로그램 실행을 제어(조건문,반복문)하는 문장

if

if
if ~ else
if ~ else if ~ else
if ~ else if ~~~else
if (조건식)

  1. 조건식은 boolean타입만 쓸 수 있음
  2. else if (조건식) 가능
  3. else는 조건식을 쓰지 못함

사용 방법
if (조건식){
조건이 true일 때 실행하는 부분
} else {
w조건이 false일 때 실행하는 부분
}

if(조건식1) {
조건식1이 true일 때 실행
} else if(조건식2) {
조건식2가 true일 때 실행
} else if(조건식3) {
조건식3이 true일 때 싱행
} else {
조건식 123 모두 해당되지 않을 때 실행
}

중첩 if

if문 안에 if문을 하나 더 만들어서 더 자세하게 만든 if문

비교연산신을 사용해서 합쳐서 만들 수도 있다.
if 양수판단
if 홀짝판단
else
else

switch case

스위치 케이스는 실행을 했을 때 1~4번 을 선택하는 옛날에 마우스가 없던 시절처럼??
이게 왜 나오는 건지 모르겠지만
스위치 케이스는 한계가 많아서 잘 안쓴다.
케이스가 끝 날때 break;를 써준다
break;를 안쓰면 브레이크를 만날 때 까지의 숫자를 출력
변수 값을 다른 타입으로 해도 조건용 변수와 변수값이 같은 타입이라면 가능하다.

반복문

어떠한 조건에서 동일한 코드를 반복해서 실행할 때
특정 조건을 도달할 때까지 반복해서 실행 할 때
반복문에는 반복 조건 반복종료 조건들이 필요함
반복 조건 : 반복문 내용을 실행 할지를 판단하는 조건
조건을 만족(true) 해야만 반목문 내용이 실행 된다.

반복문 종류

  • for, foreach(향상된 for문, advanced for), while, do ~ while

for

실행방법
for (반복변수 초기화; 반복변수 종료조건; 반복변수 증감식){
반복 실행 문장
}

for문의 실행 순서

while, do while

반복문
무한 반복 등을 사용할 때 많이 쓰임

사용 방법
while (반복조건) {
반복 실행 내용
}

do {
반복 실행 내용
} while (반복 조건); // 세미콜론 필수

while vs do while

while문은 조건이 맞지 않으면 반복실행내용을 전혀 실행하지 않음!
do while문은 조건이 맞든 맞지않든 일단 한번은 실행하고 반복조건을 따짐
do while문 뒤에 ;(세미콜론)을 찍어줌
주의사항

  • while(true)일 때 왜 다음 코드가 빨간줄인가?
  • while(false)일 때 왜 다음 코드가 빨간줄인가?

    계속해서 돌아가는 코드 밑에 있어서 실행이 안된다.
    Unreachable code
    사용할 수 없는 코드, 조건이 맞지않는 코드

Random 메서드

랜덤으로 숫자를 출력
특정 범위를 지정하면 해당 범위 내에서 숫자를 무작위로 발생시킴
0~1 사이의 실수
(int) (Math.random() 10) + 1;
(int) : 실수를 정수로 형변환 자세한건 조금 뒤에
(Math.random()
10) + 1 : 0~1이라 *10을 해서 1~10으로 나오게해줌

클래스 안으로 들어가서 타입 확인


정수는 실수로 변환은 다른 코드가 없어도 가능하지만
실수를 정수로 변환은 (int)를 앞에 붙여서 변환을 해줘야한다
실수를 정수로 교환을 할 때는 무조건 소수점 이하는 버린다
random()메서드는 0~1의 작은 실수를 출력해서 (int)를 사용하면 0이 나온다.
반올림이 아니라 소수점이하는 버린다. 그래서 (int)를 사용하면 0이 나온다.
그래서 (int)를 하기 전에 *10을 사용해서 정수부분만 사용하자

BufferedWriter와 BufferedReader

import java.io.*; 또는
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
를 먼저 해야함
메인 메서드 앞에서 throws IOException를 하거나 try catch를 해야함

BufferedWriter

Buffer에 저장해서 flush로 보낸다.
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); : 선언
bw.write(); : 이거는 문자열 출력, 정수 출력하려면 String.valueOf(); 사용
bw.flush(); : 이거는 보낼 때 마다 사용
bw.close(); : 이거는 클래스 마지막에 해줘야함
bw.flush()메서드를 많이 사용하면 느려짐 한번에 보내는 것이 좋음
\n : 문자열(""안)에서 띄어쓰기로 사용
bw.newLine(); : \n말고 이 메서드로 띄어쓰기 가능

BufferedReader

Buffer에 저장해서 받는다?
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); : 선언
br.readLine(); : 이거는 문자열을 받는다
num = Integer.parseInt(br.readLine()); : 정수를 받을 때 문자열로 받아서 정수로 변환
String.valueOf() : 정수를 문자로 형변환
br.close(); : 클래스 마지막 해줘야함

StringTokenizer

import java.util.StringTokenizer;을 먼저 해줘야한다.

String var = “”; 을 하나 선언해주고 (입력으로 받는다면)

StringTokenizer st = new StringTokenizer(var);을 사용해서 var 변수에 있는 문자열을 띄어쓰기로 구분해서 나눠준다.

num = Integer.parseInt(st.nextToken()); = nextToken()을 이용해서 var에서 첫자리를 가져오고 문자열로 가져왔으니 Integer.parseInt()를 이용해서 정수로 형 변환을 시켜준다.

수업중 꿀팁

단축키

컨트롤 쉬프트 f : 자동 줄 정리

알트 + 위아래 화살표 : 줄이동

sysout + 컨트롤 + 스페이스바를 같이 누르면 System.out.println();이 자동으로 나온다
ln은 자동으로 나오니 지워서 사용하자

\t: 문자열(""안)에서 사용하면 탭키 들여쓰기를 해줌

컨트롤 + 쉬프트 + o : 자동 import기능

한글 복사 깨짐 방지

이클립스 메뉴에서 window > preference에서 generel에서 Workspace에서
MS949에서 UTF-8으로 교환해 주면 된다.

& : 앤퍼센트 = 그리고 의 의미를 가짐

주의사항


노란줄은 오류는 아니고 주의 요망 정도??
위 노란줄은 이 변수는 사용하고 있지 않다

예외 오류

InputMismatchException
타입 미스매치
맨 밑에 줄에 예외가 발생한 위치


The left-hand side of an assignment must be a variable
좌변 : left hand
우변 : right hand

정수 문자형 변환

Integer.parseInt(); : 문자열을 정수로 형 변환
String.valueOf() : 정수를 문자로 형 변환
(int) : 실수를 정수로 강제 형 변환
정수를 실수로 형변환은 그냥 정수에 실수를 덮어쓴다는 느낌으로?

오 일주일 조금 넘은 내용을 한 곳에 넣으면서 보기 쉽게하는 것은 너무 어렵네
내가 잘 정리 한 것인지도 모르겠고
주말에 한번더 보는 겸 정리 겸??

profile
코딩도전기

0개의 댓글