Coding 공부/Java

[Java_summary] 자료형, 연산자, 조건문, 자바 세팅하기

CBJH 2024. 1. 24.
728x90
반응형

요리하는 Ai 로봇! 로봇 손을 잡고 요리를 하는 것을 50~100회 반복하면 
학습하여 다양한 변수가 생겨도 요리를 해주는 로봇 개발했음.

UI수업 들을 때, 자바 스크립트를 제대로 공부해야됨.
오후 시간에 조금씩 자바 스크립트 공부하기.

자바에선 파이썬에서 사용하던 딕셔너리 자료형을 사용할 수 없다. 비슷한 건 있다. Map, 키와 밸류값을 쌍으로 저장.
자바에선 똑같은 변수명을 여러번 선언할 수 없다. (파이썬에서는 덮어쓰기가 가능함)
예를들어, 

int a = 15;        

int a = 30; 이런식으로 두 번 선언은 안되고 

a = 30; 으로 변수명에 저장된 숫자를 바꾸는 것만 가능하다.

★ 변수 선언 : 변수를 선언하면 타입 크기의 메모리가 할당되며, 프로그램은 실행 중에 값을 쓰고 읽는 공간으로 사용한다.

 

저번 파이썬 시간에 무엇을 배웠나 ? class예제, 계산기 만들기, shape 둘레, 넓이 구하는 함수 만들기

 

자바는 기본적으로 class로 이루어져있다. (class 덩어리들이 모여있는 형태이다.)
클래스 : 붕어빵 틀, 갖추어져 있는 모양, 크기, 용량, 하나의 물체를 담을 수 있는 틀

객체 : object, 사람, 붕어빵, 물 통 등 규정을 지닌 어떤 하나의 물체 

 

자바 실행시 제일 먼저 실행하는 클래스 : main클래스부터 찾아 실행한다.

 

1. 자바 셋팅하기

: 이클립스 실행 -> 파일 -> New javaproject -> project name 입력(한글이 들어가지 않고 간단한 영문과 숫자 조합으로 입력) : p0123  ->  generate comments 처음 셋팅하는 주석을 추가해줄지 체크할 수 있다. -> p0123 폴더 안 / src폴더 안에 modul-info.java 자바 파일이 생성되어 있다.(모듈을 설정했을 경우 설정한 모듈들이 여기에 추가되어 있다) jre library에는 다양한 라이브러리가 저장되어 있다. / src폴더를 마우스 우클릭 후 new, pakage를 눌러 패키지 만든다. p01 -> p01패키지를 우클릭하여 new, java class를 선택하여 클래스를 만들어준다. 클래스 이름은 대문자로 시작한다. Hello.java -> Superclass는 부모 클래스이다. java.lang.Object 기본적으로 자바에서느 오브젝트 클래스를 상속받는다. -> pubic static main을 체크하면 메인 메소드가 추가되어 편하다. 

 

2. 자바 자료형

long, int, float, double, char, byte, boolean, short 8가지 자료형이 존재한다. data type!

자주 쓰는 자료형 : int, float, double, char, boolean

타입의 시작은 소문자로 시작함.

 

String[]은 대문자로 시작. 클래스. 문자열을 주로 처리하는 클래스다. 문자열을 담는 배열을 args라고 한다.

레퍼런스 타입(reference type) : 배열, 클래스, 인터페이스(interface)에 대한 레퍼런스. ~에 대한 주소값 정도로 알면 된다.

대괄호가 있는 것은 배열이라고 한다.(문자열은 기본 자료형 타입에 속하지 않는다)

파이썬과 동일하게 배열도 인덱싱이 가능하다. 

자바의 배열은 기본적으로 sort()가 안된다. 다른 함수나 기능을 써서 바꿔야된다. 기본적 함수론 안된다.

파이썬은 리스트를 계속 추가하는 것이 되지만, 자바의 배열은 한번 선언하면서 메모리를 만들면 그 이상은 못 추가한다.

int a[10];  0~9번까지 사용 가능하다. 10번부터 사용하려고 하거나 추가하려고 하면 out of index라는 오류가 발생한다.

배열 : 연속해서 저장하는 자료형 

파이썬에선 id로 메모리 주소를 알 수 있지만 자바에서는 포인터가 없어서 메모리 주소를 받아올 수 없다.

 

3. 자바의 데이터 타입

파이썬과 구별해야되는 건 자바와 데이터 타입의 차이가 제일 크다. 자바는 자료형을 명시하고, 파이썬은 일일이 프로그래머가 지정하지 않아도 알아서 수행한다.

함수의 이름 앞에 출력값의 형태를 미리 알려준다. (viod : 텅빈, 공허한, 리턴값으로 돌려 줄 것이 없을 때 사용)

출력값은 8가지 자료형 + Object(최 상위 클래스) + 배열 모두 받을 수 있다. 입력값도 된다.

자바에서는 인자로 자료형을 명시해서 받는다. 자료형이 다르면 받을 수 없다.

자료형을 바꾸는 방법 : Casting 

두 개의 다른 자료형을 연산할 경우 : 피연산자의 데이터를 더 큰 쪽으로 통일해야 자료형의 연산이 가능하므로 결과값은 더 큰 쪽 데이터형이 된다.

 

int형+double형 -> double형

 

 

double 자료형이 int자료형보다 크므로 함수를 정의하는 자료형은 double로 해도 반환 후 (int)형으로 바꿔주면 가능하다.

 

3-1) 상수

상수를 만드는 방법은 변수 선언 시 final 키워드를 앞에 사용하면 된다. 상수는 값이 한 번 초기화되면 더 이상 변경할 수 없다. 상수명은 모두 대문자로 표기한다.

 

 

 

3-2) data를 사용자에게 입력받기

컴퓨터엔 표준 출력 장치(모니터)와 표준 입력 장치(키보드, 마우스)가 있다. 

표준 출력 장치 : System.out

표준 입력 장치 : System.in

어떤 때는 입력 할 때 한개 씩 or 한줄 씩 or 정수 or 실수 : 자바에서는 자료형을 명시해야되므로(메모리 크기와 설정이 달라서) 입력에 대한 각각의 함수가 존재한다.

출력 시 정수 or 실수 등

 

printf()와 println()의 차이점

 

java에서 키보드로 입력을 받고 싶다면 Scanner 클래스로 키를 입력받는다.

 

2장 전체 예제 문제를 모두 풀어보기(코드 이클립스로 작성하고 실행해보기) 112p까지!

 

3-2 식별자 이름 규칙

1) 특수문자, 공백은 식별자로 사용할 수 없으나 '_',  '$'는 예외로 사용할 수 있다.

2) 한글도 식별자로 사용 가능하다.

3) if, while, class, true, false, null 등 자바 언어의 키워드는 사용할 수 없다. (예약어라고도 불린다.)

java에서 사용하는 예약어

4) 식별자의 첫 번째 문자로 숫자는 사용할 수 없다.

5) 대소문자를 구별한다.

6) 길이 제한이 없다.

 

3-3 리터럴

1) 정수 리터럴 

int n = 15;                                    //십진수 15
int m = 015;                                 //8진수 13
int k = 0x15;                                //16진수 21
int b = 0b0101;                            //2진수 5

 

 

2) 특수문자 리터럴

3) null 리터럴 : 기본 타입엔 사용될 수 없고 객체 레퍼런스에 대입된다.

 

4) 문자열(String) 리터럴 : 큰 따옴표 사이에 들어있는 값으로 String객체에 저장된다. String str = "Good";

 

3-4 타입 변환

1) 자동 타입 변환 : 수식 내에서 타입이 일치하지 않을 때, 컴파일러는 오류 대신 작은 타입을 큰 타입으로 자동 변환한다.

double d = 3.14 * 10;    //실수 연산을 위해 10이 10.0으로 자동 변환

 

2) 강제 타입 변환 : 캐스팅(casting)이라고 부른다. 소괄호 안에 다른 자료형 기본 타입을 적는다.

int n = 300;

byte b = (byte)n;

byte형 자료형엔 -128~127만 저장이 된다(2의 8제곱) 따라서 (byte)256 값은 0이된다.(0->양수->음수->0) 

double과 int 형 변환 예제

 

3-5 import문의 사용

import java.util.Scanner;

 

java.utill 패키지 안에 있는 Scanner라는 클래스(코드)를 불러온다.

 

1) Scanner로 키 입력받기

Scanner 클래스는 사용자가 입력하는 키 값을 공백문자(' ', '\t', '\n')를 기준으로 분리하여 토큰 단위로 저장한다.

 

2) Scanner  클래스이 주요 메소드

byte nextBYte()            //다음 토큰을 byte타입으로 리턴
short nestShort()
int nestInt()
long nextLong()
float nextFloat()
double nextDouble()
boolean nextBoolean()
String nextLine()         //'\n'을 포함하는 한 라인을 읽고 '\n'을 버린 나머지 문자열 리턴
void close()                 //Scanner의 사용 종료
boolean hasNext()       //현재 입력된 토큰이 있으면 true, 아니면 입력때까지 무한정 대기, 새로운 입력이 들어올 때 true 리턴, ctrl-z 키가 입력되면 입력 끝이므로 false 리턴

 

 

3) nextLine()과 next()

next()는 공백이 나오면 입력을 종료한다.

nexrLine()은 엔터가 나올 때까지 입력을 받는다. <Enter>키의 입력을 기다리는 용도로 사용할 수 있다.

 

Scanner 클래스 예제

 

 

3-6 연산자

연산자의 종류

 

연산자의 우선 순위

 

3-7 증감 연산

 

증가 전의 값을 반환하는지 증가된 값을 반환하는지에 따라 전위 연산자 또는 후위 연산자로 불린다.

 

3-8 비교 연산자

 

3-9 논리 연산자

 

 

3-10 조건 연산자

조건 ? 참이면 실행 : 거짓이면 실행                                         #condition ? opr2 : opr1

자바에서 삼항 연산자는 값을 반환하는 표현식으로 사용됩니다. 그러나 System.out.println은 반환값이 없는 메서드이므로 삼항 연산자의 조건부 표현식으로 직접 사용할 수 없습니다.

 

 

3-11 비트 연산자

 

4. 조건문

4-1 if문

윤년을 계산할 수 있는 예제

4년으로 나뉘어 떨어지는 년도 이면서 100년으로 나누어 떨어지지 않으며, 또는 400년으로 나누어 떨어지는 년도를 윤년이라고 한다.

 

3개의 조건문이 &&로 연결 될 경우 중간에 거짓이 나온다면 거기서 종료하고 뒤의 조건까지 확인하지 않는다. 따라서 400년으로 나눌 경우 참인 경우를 확인하기 위해 || 연산자를 사용해서 or 조건문을 활용한다.

 

4-2 if-else문

 

4-3 다중 if-else문

if (조건식 1){
 실행문장1;
}
else if (조건식2){
 실행문장2;
}
else if (조건식3){
 실행문장3;
}
else{
 실행문장n;
}

 

4-4 중첩 if문

아이디, 비번에 java를 입력해야 로그인이 되었다는 메세지를 출력하는 예제

★ String(문자열) 자료형을 password == "java"; 라고 하지 않고 password.equals("java");로 하는 이유

자바에서 문자열 또는 배열은 Stack에 '객체 레퍼런스'를 저장하여 Heap 영역에 메모리를 할당하여 문자열 또는 배열을 저장한다. 따라서 password =="java"라는 뜻은 heap의 같은 영역을 가르키는가? 라는 뜻으로 컴퓨터가 해석한다. 

heap 영역에 똑같이 "java" 값을 가지고 있는 password 문자열 자료형과 p1 문자열 자료형이 있다고 한다면  같은 값을 가지긴 하지만 같은 영역을 가르키고 있진 않으므로 password == p1은 거짓이 된다.

따라서, 문자열을 비교하고 싶은 경우 .eqauls()메서드를 사용해서 비교를 한다.

 

4-5 switch문

★if문 안에서 switch문을 중첩하여 사용하면 안된다. switch문 안에 if문은 실행이 된다.

 

 

 

댓글