Ch01. JAVA기초 01

하파타카·2022년 8월 7일
0

패캠JAVA, Spring과정

목록 보기
2/20

jdk 및 이클립스 설치는 이미 되어있으므로 실습부분부터 시작.
java에 대한 개념설명은 추후 강의에서 나올때마다 정리해둘 예정.


03.첫 자바 프로그램 만들고 실행하기

패키지, 클래스의 이름선언 시 주의점

패키지의 이름은 소문자만 사용.
클래스의 이름은 대문자로 시작.
=> 반드시 지켜야 하는 규칙은 아니지만 되도록 따르는 것이 좋음.

이클립스에서 실행단축키는 ctrl + F11
새 파일 만들기는 ctrl + N
한 행 지우기는 ctrl + D
선택한 행 아래로 복사는 ctrl + alt +

언제나 어디서나 언어의 첫 시작은 HELLO WORLD 출력하기

public class HelloJava {
	public static void main(String[] args) {
		System.out.println("Hello, JAVA!");	
	}
}


04.컴퓨터에서 자료 표현하기

컴퓨터는 2진수를 사용하므로 0과 1만으로 데이터를 저장함.
메모리 주소를 표시할때는 16진수를 많이 사용.
bit는 컴퓨터가 표현하는 데이터의 최소단위. 2진수 하나의 값을 저장가능한 메모리의 크기.
8bit = byte

숫자를 나타낼 때 가장 많이 사용하는 데이터형인 int는 4byte.

public class BinaryTest {

	public static void main(String[] args) {
		int num = 10;
		int bNum = 0B1010;	// 앞에 0B를 붙이면 2진수임을 나타냄
		int oNum = 012;		// 0을 붙이면 8진수임을 나타냄
		int xNum = 0XA;		// 0X를 붙이면 16진수임을 나타냄
		
		System.out.println(num+" "+bNum+" "+oNum+" "+xNum);
	}
}


05.변수란 무엇인가

변수(variable)란? 변하는 수.

  • 프로그램에서 사용되는 변하는 값을 나타내기 위함.
  • 나타내려는 데이터에 따라 자료형(int, char ...)을 사용하여 선언.
  • 선언과 동시에 초기화(값을 주는 것)가 가능함.

JAVA에서의 =는 우변을 좌변으로 대입한다는 의미를 지님.
일반적인 =와 같은 의미로 사요되는 기호는 --

변수의 이름 선언 시 주의점

  • 영문 대소문자 모두 사용가능. 특수문자는 $, _만 사용가능.
  • 변수의 이름을 숫자로 시작할 수 없다.
  • 가독성에 신경쓰되 한눈에 변수의 역할을 알아볼 수 있는 이름을 사용하는것을 권장.
  • 소문자로 시작하여 단어가 바뀔 때마다 시작문자를 대문자로 사용하는 camelcase가 가장 많이 쓰임.

특히 인덱스에 사용하는 변수는 i, j등의 간단한 문자를 사용해도 무관하나, 의미가 있는 변수를 사용할때는 이름에 의미를 넣어 사용하도록 권장.


06.자료형-정수의 표현

변수를 선언하는 동시에 자료형의 크기만큼 메모리가 할당됨.
변수는 할당된 메모리를 지칭하는 이름임.

정수의 경우 맨 앞의 bit는 부호를 표시하는 자리로, 각 자료형의 byte에서 -1만큼의 2제곱까지의 수에서 -1한 값까지 표현가능.
(-1은 모두 0으로 이루어진 경우가 있어 제외됨.)

java에서 정수형으로 가장 많이 사용되는 자료형은 int

변수에 선언한 숫자가 몇이건 처음 변수를 선언했을때 지정한 자료형에 의해 할당되는 메모리의 크기가 결정됨.
각 자료형에 맞지않는 데이터를 넣으면 오류가 발생함.

정수의 기본형은 int이므로, int를 넘어가는 데이터를 넣어야 하는 경우 식별자로 데이터의 맨 마지막에 L을 붙여준다.

long lnumber = 12345678900L;

식별자는 대소문자를 구별하지 않으나, 소문자L은 숫자1과 혼동될 수 있어 대문자를 권장.

같은 이유로 실수의 기본형은 double이므로 float데이터를 넣기 위해서는 데이터의 맨 뒤에 F를 붙여줌.


07.자료형-실수의 표현

실수를 정수와 같은 방법으로 표현하면 정확한 표현이 어려우므로 다른 방법을 사용.
실수의 표현에는 가수와 지수를 구분한 부동소수점 방식을 사용함.

float : 4byte
double : 8byte
보통은 double을 사용함.

컴퓨터의 밑수는 2이므로 정규화를 하게 되면 밑수가 가수의 첫번째 자리는 1로 고정됨.

정규화란?
밑수가 있는 경우 가수의 첫번째 자리의 수를 밑수보다 작게 만드는 것.

예제

public class DoubleTest {
	public static void main(String[] args) {
		double dNum = 3.14;
		float fNum = 3.14f;		// 3.14로 넣으면 오류발생. 식별자 f는 대소문자구분x
		
		System.out.println(dNum+", "+fNum);
	}
}

참고로 부동 소수점방식으로는 지수가 0을 표현할 수 없어 계산 시 약간의 오차가 발생하게 되므로 알아둘것.


08.자료형-문자의 표현

유니코드는 ASKII코드와 완전히 호환이 가능.(유니코드가 더 많은 문자를 표현할수있으므로 반대는 x)
JAVA는 유니코드를 사용하며, utf-16인코딩을 사용.

유니코드를 사용하려면 '\u코드'의 방식으로 사용. 유니코드 코드표는 자료를 찾아볼것.

문자형은 내부적으로 정수로 저장됨. 음수는 사용불가.

문자형과 문자열

'A'"A"는 완전히 다름.
'A'는 문자형(2byte), "A"는 문자열(String클래스).
문자와 문자열을 혼동하지 않도록 주의!

예제

public class CharaterTest {
	public static void main(String[] args) {
		char ch1 = 'A';
		System.out.println(ch1 + ", " + (int)ch1);
		
		char ch2 = 66;
		System.out.println(ch2 + ", " + (char)ch2);
		
		int ch3 = 67;
		System.out.println(ch3 + ", " + (char)ch3);
		
		char han = '한';
		char ch = '\uD55C';
		System.out.println(han + ", " + ch);
	}
}


09.자료형-논리형의 표현, 자료형없이 변수 사용하기

논리형의 표현

타입의 이름은 boolean
true, false 두 가지로 표현됨.
1byte 사용.
값이나 조건에 대한 결과가 참(true)인지 거짓(false)인지를 표현.

지역변수를 자료형없이 표현하기

JAVA10부터 추가된 기능.
추론할 수 있는 지역변수에 대한 자료형을 따로 선언하지 않음.

다른 언어(javascript, python 등)에서 지원되던 기능을 java에서도 지원한다고 생각하면 됨.
단, 다른언어와는 달리 java에서는 한 번 선언하여 추론된 변수는 다른 타입의 값 대입불가.

예제

public class LocalVariableType {
	public static void main(String[] args) {
	
		var i = 10;
		var j = 10.0;
		var str = "hello";
		
		System.out.println(i+", "+j+", "+str);
		
		var str2 = str;
		System.out.println(str2);
		
		str = "test";
		//str = 3;		// 에러발생
	}
}


10.상수와 리터럴, 변수의 형변환

상수 선언하기

상수란? 값이 변하지 않는 수.

  • 변수의 앞에 final 이라는 예약어를 사용하여 상수로 선언.
  • 한 번 초기화(선언) 후에는 값을 변경할 수 없음.
  • 상수임을 나타내기 위해 이름을 주로 대문자로 지정함.
  • 상수라는 개념은 java뿐만 아니라 c, c++ 등의 다른 언어에도 존재함.
  • 값을 반복하여 사용할 때 주로 사용됨.(값 변경 시 선언부만 수정하면 됨) 의미있는 값으로 인식되기 좋아 가독성에 유리.

예제

public class ConstantTest {
	public static void main(String[] args) {
		
		final int MAX_NUM = 100;
		final int MIN_NUM;
		
		MIN_NUM = 1;		// 상수는 사용 전 반드시 초기화가 필요
		//MAX_NUM = 20;		// 에러발생
		
		System.out.println("MAX_NUM= "+MAX_NUM+", MIN_NUM= "+MIN_NUM);
	}
}

형변환

  • 서로 다른 자료형을 같은 자료형으로 변환하는 것.
  • 묵시적 형변환(자동)과 명시적 형변환(강제)이 존재.
  • 묵시적 형변환 : 표현범위가 적은 (혹은 byte크기가 작은)자료형에서 표현범위가 (혹은 byte크기가 큰)큰 자료형으로의 변환
    => 반대의 경우는 강제적 형변환(casting)이 필요.

예제

public class TypeConversionTest {
	public static void main(String[] args) {
		
		int iNum = 255;
		byte bNum = (byte) iNum;	// 강제 캐스팅 시 데이터에 문제가 발생할 수 있음
		System.out.println(iNum);
		System.out.println(bNum);
		
		double dNum = 3.14;
		int inum = (int) dNum;
		System.out.println(inum);
	}
}

double dNum = 1.2;
float fNum = 0.9f;
int iNum1 = (int) (dNum + fNum); 
int iNum2 = (int)dNum + (int)fNum;
System.out.println(iNum1+", "+iNum2);


=> 형변환의 순서에 따라 결과가 달리 나오므로 형변환 시 주의가 필요하다.

리터럴(literal)

  • 프로그램에서 사용되는 숫자, 문자, 논리값을 의미.
  • 정수는 int, 실수는 double로 저장됨.
  • int의 범위를 넘어가는 수는 L, float를 사용할때는 Ff식별자가 필요.

프로그램이 실행되면 메모리를 할당받는 경우와 프로그램이 메모리에 로드된 것 만으로 영역을 잡는 경우가 있음.
후자는 주로 상수나 static변수가 해당됨.
이때 잡히는 영역을 Data영역 혹은 constant pool이라고 불림.
프로그램이 완전히 종료될 때 메모리에 잡힌 영역이 해제됨.

profile
천 리 길도 가나다라부터

0개의 댓글