본문 바로가기
교육/Java&Spring

kosta 클라우드 네이티브 애플리케이션 개발 과정 day 2

by Renechoi 2022. 12. 21.

자바 기초 문법

변수, 데이터형,

연산자, 조건문, 반복문

 

---

 

Java standard edition (J2SE) : 자바 응용 프로그램을 개발할 때 => Java Application 

=> 반드시 main 메서드가 있어야 한다. 

 

Java enterprise edition (J2EE) : 자바 서버 프로그램을 만들 때 => Tomcat 

=> main 메서드 필요 x 

 

메인 메서드의 역할 : 독립적으로 나눠져 있는 여러 개의 클래스 중에 시작할 수 있는 기준을 잡아줌 

-> 프로그램의 시작점 

 

 

System.out.println 이라는 것은 무엇일까?

 

Java api에서 부터 나온 클래스 

 

out -> field 변수이다. 

 


자바 언어의 특징 

-> 플랫폼 독립성 

-> 운용체제랑 상관없이 실행 가능하다 

 

독립적이지 않은 다른 언어들 : 소스코드 -> 다른언어 컴파일러 -> 실행 파일 -> 운영체제에 종속되어 동작 

 

자바 : 소스코드 -> 자바 컴파일러 -> 클래스 파일 -> 자바 가상 머신(JVM) : 운영체제와 상관 없이 실행되도록 함 -> 운영체제 

 

단점은? 

하드웨어와 거리가 멀어짐 -> 자바를 쓰면 느리다 

-> C, C++과 본질적으로 속도에 있어서 격차가 있음 

-> 그래서 C, C++ -> 임베디드 등 시스템 개발에 많이 사용하는 경향성 

 

대신 서버사이드 프로그램에서는 다양한 옵션들과 만나기 때문에 적합한 것임 -> 다양한 플랫폼과 조화, 소화 

 

 


자바구성요소

 

- 키워드 (예약어) : (주황색 색깔)  자바의 문법적 의미를 이미 갖고 있음  

- 식별자 : 고유한 이름을 보유 - 패키지, 클래스, 메서드, 변수 

 

 

 

- 대괄호 : [] => 배열

- 중괄호 : {} => 범위

- 소괄호 : () => 메서드 정의, 호출 => 메서드 파라미터를 의미 

 

- 세미콜론 : 명령어의 끝 

 


자바의 변수 

 

- 변수 : 데이터를 담는 일종의 그릇

- 변수를 사용하기 위해서는 먼저 선언을 해야 함

 

선언시 메모리 할당 

 

데이터 형은 두 가지로 나뉜다. 

=> 기본형 (primitive type) / 참조형 (reference type)

 

변수의 데이터 타입

기본형 : 8개

- byte

- short

- int

- long

- float

- double

- char

- boolean

- String (스트링은 원래 기본형이 아니지만 많이 쓰여서 준 기본형처럼 인정) 

 

기본형의 특징은 실제 값이 저장된다는 것이다. 

참조형은 실제값이 아니라 주소값을 저장한다. (참조형 : 배열, 객체 등) 

 

따라서 해당 값들을 매개변수로 가져올 때 

기본형은 따라서 읽기만 가능

참조형은 변경이 가능 

 

 

기본형 종류 : 정수형, 실수형, 문자형, 논리형 

 

크기에 따라서 정수형 사용이 달라진다. -> 자산이 얼마 정도 되십니까? "int로는 담기 힘들다!" 

 

 

Q. 기본형과 참조형이 다른 점은 무엇입니까?

 

Q. 기본형이 종류별을 다르게 사용하는 이유는 무엇입니까? 

 

 

Q. 기본형은 그럼 주소가 없을까? 

기본형은 키워드(예약어)로서 판별되기 때문에 주소값이 없다고 보면 된다. 

 

 

 


 

변수를 선언하고 변수에 값을 넣어서 사용한다.

"=" -> 대입 연산자 

 

 

 

이와 같이 할당하는 것을 "초기화"한다고 한다. 

 

String 같은 경우에 기본형이 아님에도 바로 초기화가 가능하다.

 

 

// 원래는 이렇게 해야 함
String string2 = new String("홍길동");

 

객체인데 많이 사용하기 때문에 특권을 주어 편리하게 사용할 수 있게 했다. 

 

 

 

Q. 8개의 자료형을 선언하고 초기화해보자. 

 

 

 

 


변수 선언시 주의사항 

 

특수문자 x

숫자로 시작 x

소문자가 원칙 

언더바 가능 (but...) 

 

 

Q. float은 왜 f를 쓸까? 

 

기본 실수형은 double로 생성. 원래 형변환을 해야 하는데 형변환 없이 f로 처리하도록 되어 있다. 

 


 

지역 변수의 2가지 특징 

0. 지역 변수란 : 특정 블록, 메서드 내에서 선언된 변수 (메서드 밖 : 멤버 변수) 

1. 반드시 초기화 후 사용해야 한다.

2. 선언된 변수는 정의된 범위 안에서만 사용할 수 있다. 

 

지역 변수 사용 예시 

 

 

 

* 자바 이스케이프 문자 중 '/r' 

-> 캐리지까지 리턴하는 형식 

 

 


리터럴 : 소스 코드 내에 데이터 값 그대로를 쓴 상수 

 

 

 

소수점이 없는 수치 리터럴은 기본적인 int형

소수점이 있는 수치 리터럴은 기본적으로 double형 

 

기본 리터럴로 잡혀있다는 개념.

 

정수형 -> int

실수형 -> double 

문자 -> char

문자열 -> String 

불리언 -> boolean

 

그렇다면 

float number = 3.14;

는 왜 에러가 날까? 

 

3.14 -> 실수형으로서 기본 리터럴이 double형임. 따라서 f를 통해 형변환을 해주어야 한다. 

 

 


변수 casting 

 

작은 데이터를 큰 데이터에 넣으면 casting 없이도 가능하며, 이때 묵시적 형변환이 일어난다고 한다. 

 

but 큰 데이터 => 작은 데이터 -> 캐스팅을 해주어야 한다. 

 

크기 순서 : byte < short < int < long < float < double 

 

double a = 10;

-> no problem 

 

int b = 3.14;

-> 3.14는 double이며 int 보다 큰 타입이므로 에러가 발생 

-> 강제 형변환이 필요(casting) 

 

int b = (int) 3.14;

but 강제 캐스팅을 했으므로 데이터의 손실이 발생 

 

 

 

long number = 100;

-> 기본 리터럴인 int 100이 long 타입에 들어가면서 묵시적 형변환이 일어난 것이다

라고 할 수 있다. 

 

 

c.f. 

소수점 계산은 컴퓨터에게 있어 한계를 갖고 있다. 

 

 

4.1400000000001

 

 


int 와 char의 형변환 - 아스키코드 

 

char number = 'A';
System.out.println((int) number);

=> 65 

 

 

 

정수형과 String 형변환 

 

Integer 클래스의 parseInt를 사용한다.

String numberString = "2000";
int numberInt = Integer.parseInt(numberString);
System.out.println(numberInt+1000);

 

 

"2000한글" -> parseInt할 시에 에러 발생한다. 

 

Exception 종류 

- NumberFormatException 

 

 

 

int -> String 갈때는 

String.valueof() 메서드를 이용한다. 

 

c.f. 문자열을 다른 형과 연산할 경우 자동으로 스트링으로 형변환이 된다. 

 

String string2 = 7 + "7" + 7; // 777
System.out.println(string2);

 


scanner를 통한 입력 

 

        // 입력 받기

        Scanner scanner = new Scanner(System.in);
//        scanner.nextInt();  // 숫자로 입력 받을 때
//        scanner.nextLine(); // 문자로 입력 받을 때

        System.out.println("x: ");
        int x = scanner.nextInt();

        System.out.println("y: ");
        int y = scanner.nextInt();

        System.out.printf("result : %d", x*y);

 

반응형