본문 바로가기
Web

[Java] 자바 데이터 타입, 사칙연산, substring

by DuncanKim 2022. 6. 12.
728x90

[Java] 자바 데이터 타입

어쩌다 보니 다시 자바를 공부하게 되었다.

자바를 위주로 알고리즘 공부도 진행하게 되지 않을까 싶다.

 

Hello World는 한참 전에 찍어봤기 때문에 데이터 타입부터 리마인딩 한다는 생각으로

강의를 듣고 왔다.

 

동빈나님의 강의인데 아주 간결하고, 기존에 지식이 있는 사람이 듣기에 아주 좋다고 생각한다.

객체 지향 프로그래밍까지의 기억을 되살려줄 수 있는 강의라고 보면 된다.

 

https://youtu.be/wjLwmWyItWI

https://youtu.be/wjLwmWyItWI

동빈나님은 코딩테스트 책을 알아보다가 알게 되었고, 강의를 하나씩 들어보니 아주 간결하고 알아듣기 좋았다.

그래서 이번 자바 리마인딩도 동빈나님의 자바 강의가 있어 들어보았다.

 

강의 포스팅은 강의에서 작성했던 코드들을 바탕으로 복습하는 방식으로 글을 남길 것이다.

 

1. Data Type

Python은 참 친절한 언어이다. String, int, double 뭐 이런 것을 코드로 넣지 않더라도 자동으로 인식해서

데이터 타입을 정해주고 변수로 저장해준다.

그렇지만, 자바 선생님은 그렇지 않다.

중괄호도 똑바로 닫아야 하고, 데이터 타입도 변수마다 확정을 지어 주어야 한다.

빡빡한 경찰과 같달까.

public class Main {

	// 상수처리(클래스 내에서 불변하는 상수로 활용)
	final static double PI = 3.145;
	final static int INT_MAX = 2147483647;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int intType = 100;
		double doubleType = 150.5;
		String stringType = "라마스떼";
		int a = INT_MAX;
		
		System.out.println(intType);
		System.out.println(doubleType);
		System.out.println(stringType);
		System.out.println(PI);
		System.out.println(a);
		// 오버플로우가 되는 경우
		System.out.println(a + 1);	
	}// end main
}//end class

출력 결과

 

자바에서 메인 메소드를 포함해서 클래스를 생성하게 되면 다음과 같이 메인 메소드가 나타난다.

'실행(run)' 즉, 콘솔 창에 무엇인가를 띄우기 위해서는 메인 메소드가 필요하다.

 

일단 final은 건너 뛰고(추후 포스팅), 메인 메소드 안의 내용들을 보자면, 

intType이라는 변수 앞에 int를 써주는 것을 볼 수 있다. 이렇게 해야 intType이라는 변수가

int 데이터 타입을 가지게 된다.

String, double도 마찬가지.

 

 

데이터 타입은 다음과 같은 종류가 있다.

데이터 타입
기본타입(primitive type) 참조 타입(reference type)
정수타입 실수타입 논리타입 배열 열거 클래스 인터페이스
byte float boolean  
char double  
short  
int
long

 

기본 타입과 참조 타입의 차이점은

기본 타입을 이용해서 선언된 변수는 '실제'값을 변수 안에 저장한다.

반면 참조 타입을 이용해서 선언된 변수는 '메모리의 번지'를 값으로 갖는다.

 

그렇기 때문에 String 클래스의 경우 기본 타입이 아니기 때문에,

조건문 등에서 활용할 때, '==' 이 아닌 'equals'를 사용한다. equals는 주소값이 같은지를 보기 때문이다.

 

 

프린트 문들을 보면 int a의 경우 +1을 하면 오버플로우가 나는 것을 볼 수 있는데,

int가 가질 수 있는 최대의 값을 INT_MAX라는 상수로 지정해놓았기 때문에 그렇다.

자신이 가질 수 있는 최대값을 넘어서면 그 다음의 수를 표현하는 것이 아니라, 음수로 숫자가 넘어간다.

 

 

 

2. 사칙연산

사칙연산은 쉽다.

다만 다운캐스팅, 업캐스팅 부분은 짚고 넘어갈 필요가 있다.

int double의 차이 때문에 int c의 경우 (int)로 캐스팅해주었다.

작은 크기의 타입이 큰 크기의 타입으로 넘어갈 때(int -> double)는 캐스팅이 필요없다. 자동으로 된다.

그렇지만 큰 크기의 타입이 작은 타입으로 넘어갈 때(double -> int)는 캐스팅이 필요하다.

 

여기서 0.5는 java에서 double로 인식한다. 그렇기 때문에, int 타입의 변수에 넣고 싶으면

int로 캐스팅해서 넣어야 한다.

public class sachic {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int a = 1;
		int b = 2;
		
		System.out.println("a + b = " + (a + b));
		System.out.println("a - b = " + (a - b));
				
        	int c = (int) 0.5;
		int d = 2;
		
		System.out.println(c);
		System.out.println("c + d = " + (c + d));
		System.out.println("c - d = " + (c - d));
	}

}

 

3. substring

자바는 string 클래스에서 substring이라는 함수를 제공한다.

파이썬의 슬라이싱과 같은 것인데, 0 ~ n번 째의 '문자열'을 잘라 변수에 저장할 수 있다.

 

public class Main {

	public static void main(String[] args) {
		
		String name = "John Doe";
		String a = name.substring(0, 8);
		System.out.println(a);
	}
}

//출력 : John Doe

0번째부터 인덱스 8번째 전까지의 문자를 잘라서 반환한다.

 

728x90

'Web' 카테고리의 다른 글

[Java] 배열, 다차원 배열  (0) 2022.06.13
[Java] 원 찍기  (0) 2022.06.13
[Java] 반복 함수, 재귀 함수  (0) 2022.06.13
[Java] 사용자 정의 함수  (0) 2022.06.13
[Java] 증감 연산자, 거듭제곱, 삼항 연산자, 파일 입출력  (0) 2022.06.12

댓글