Java (1)

Tony Kim·2021년 8월 16일

Java

목록 보기
1/5
post-thumbnail

Java (1)

1. java 기초

프로그램이란?

  • 프로그래밍 : 컴퓨터가 일을 수행 하도록 프로그래밍 언어로 명령어 집합(프로그램)을 만드는 일
  • 컴파일 : 프로그래밍 언어를 컴퓨터가 실행 가능한 기계어로 만드는 일
  • 컴파일러 : 기계어로 바꾸어주는 프로그램 (ex. 자바 컴파일러, gcc)

자바
플랫폼/OS와 독립적으로 사용될 수 있음
객체 지향 언어, 유지보수 쉽고 확장성이 좋음
프로그램이 안정적
풍부한 기능이 제공되는 오픈소스
-> 쉽고 효율적인 프로그램 + 자바와 연동되는 프레임워크/오픈소스 와 연동하여 프로그램 구현 가능

객체지향 프로그램
프로그램 구현을 시간의 흐름순이 아닌 객체간의 관계와 협력을 기반으로 프로그램하는 것
(실생활 반영된 프로그램)
재사용성 = 유지보수 = 코드관리 가능
신뢰성 높은 프로그램!

활용
웹서버 / 안드로이드 / 게임 프로그래밍

용어정리

  • JDK (Java Development Kit) : 자바에서 제공되는 개발용 라이브러리, 버전 계속 업데이트
  • JRE (Java Runtime Environment) : 자바 프로그램이 실행되는 환경, 8.0까지 무료
    클래스파일 돌아가는 JVM 포함되어있음
  • JVM (Java Virtual Machine) : 자바 가상머신으로 프로그램이 실행되는 환경인 JRE가 설치되어있어야함

eclipse
create a java project
project name 설정
jre : 설치되어있음 (JAVASE-14 어쩌구)

ctrl + N : 새로운 작업

package 생성
모든 class는 package 안에 (소스의 묶음)
package는 소문자로 쓰고 package 안에 소스를 넣는 것이 좋음

class 생성
이름 대문자 (convention의 일종)
public static void main

ctrl + D 한줄 지워짐

  • main 은 여기서 돌리기 위한건데, java class는 웹서버에 의해 구동되기 때문에 main없기도 함

컴파일
ctrl + s (저장) 누를 때마다 컴파일 될 수 있게끔,
project – build automatically

java 파일과 class
java파일 한 개 당 class한 개인 경우도 많지만
java파일 한 개 당 class가 여러 개가 들어갈 수 있는데 public은 하나만 있어야함

compile된 클래스 파일 -> bin 파일, ch01
실제로 구동되는 건 컴파일 된 클래스 파일




2. 변수와 상수

변수
• 프로그램에서는 항상 변하는 값을 나타낼 필요가 있음 ( ex. 학생의 성적, 합계, 게임의 레벨, 회원 주소 등등...)
• 표현하려는 수에 맞는 데이타 타입(자료형)을 이용하여 변수를 선언
• 표현하려는 자료가 숫자, 문자, 문자열등 다양할 수 있으므로 그에 맞는 자료형을 사용

public class VariableTest {
ㅤ
  public static void main(String[] args) {
    int age, count;
    age = 10;
ㅤ
    int level = 10000;
    System.out.println(age);
    System.out.println(level);
    }
}

변수 만들 때 주의사항

1) 변수 이름은 영문자(대문자, 소문자)나 숫자를 사용할 수도 있고, 특수문자 중에는 $와 _만 사용 (ex. count100, _master)

2) 변수 이름의 시작은 숫자로 할 수 없음 ( ex. 27days(X), 1abc(X))

3) 자바에서 이미 사용하고 있는 예약어는 사용할 수 없음 (while, break 등)

4) 변수 이름은 프로그램내에서 사용되는 것이므로 그 용도에 맞고 가독성이 좋게 만드는것이 중요
ex) int numberOfStudent;

자료형

byte와 short
• byte : 1바이트 단위의 자료형 동영상, 음악 파일, 실행 파일의 자료를 처리할 때 사용
• short: 2바이트 단위의 자료형 C/C++ 언어와 호환 시 사용

int
• 자바에서 사용하는 정수에 대한 기본 자료 형
• 4바이트 단위의 자료형
• 프로그램에서 사용하는 모든 숫자(리터럴)은 int 로 저장됨
• 32 비트를 초과하는 숫자는 long 자료형으로 처리

long
• 8바이트 자료형
• 숫자의 뒤에 알파벳 L 또는 l 을 써서 long 형임을 표시 함
• 예) int num = 12345678900; // 오류
long lnum = 12345678900; //오류
long lnumber = 12345678900L; // ok

-> 부동 소수점 방식
• 실수는 정수 보다 정밀하기 때문에 정수와는 다른 방식으로 표현해야 함
• 부동 소수점 방식으로 실수 값 0.1 표현

• 지수부와 가수부로 표현 함
• 컴퓨터에서는 밑수를 2로 사용
• 정규화 : 가수가 밑수보다 작은 한 자리까지 가수로 표현 되는 것
• 컴퓨터에서는 밑수가 2 이므로 정규화를 하게 되면 가수부분의 첫 번째 자리 숫자는 항상 1임
예) 0.2 표현 0.4 X 2-1 정규화 하면 1.6 X 2-3

float형과 double형
실수 표현

public class DoubleTest {
ㅤ
	   public static void main(String[] args) {
		   double dnum = 3.14;
		   float fnum = 3.14F;
		ㅤ
		   System.out.println(dnum);
		   System.out.println(fnum);
	   }
   }

부동소수점 방식 오류

public class DoubleTest2 {
ㅤ
	public static void main(String[] args) {
ㅤ
		double dnum = 1;
		ㅤ
		for(int i = 0; i<10000; i++) {
			dnum = dnum + 0.1;
		}
		System.out.println(dnum);
	}
}

문자표현
문자 역시 정수로 표현 가능
문자세트 : 각 문자를 얼마로 표현할 것인지 코드 값을 모아둔 것을 문자세트(charater set)라 함
(ex. ASKII, euc-kr, utf-8, utf-16)

• 바는 문자를 나타내기 위해 전세계 표준인 UNICODE를 사용
• utf-16 인코딩을 사용 (모든 문자를 2바이트로 표시)

public class CharacterTest {
ㅤ
	public static void main(String[] args) {
ㅤ
		char ch1 = 'A';
		System.out.println(ch1);
		System.out.println((int)ch1);
		ㅤ
		char ch2 = 66;
		System.out.println(ch2);
		ㅤ
		int ch3 = 67;
		System.out.println(ch3);
		System.out.println((char)ch3);
		ㅤ
		//char ch4 = -66;  음수는 대입 할 수 없음
ㅤ
    		char ch5 = '한';
		char ch6 = '\uD55C';
		ㅤ
		System.out.println(ch5);
		System.out.println(ch6);
	}
}

용어정리

  • character set: 문자를 숫자로 변환한 값의 세트
  • encoding: 문자가 숫자로 변환되는 것
  • decoding: 숫자에서 다시 문자로 변환되는 것
  • ASKII code: 알파벳과 숫자 특수 문자등을 1바이트에 표현하는데 사용하는 문자세트
  • UNICODE: 전 세계 표준으로 만든 문자 세트
  • UTF-8: 1바이트에서 4바이트까지 다양하게 문자를 표현할 수 있음
  • UTF-16: 2바이트로 문자를 표현

논리형
true, false
크기 : 1byte

public class BooleanTest {
ㅤ
	public static void main(String[] args) {
		ㅤ
		boolean isMarried = true;
		System.out.println(isMarried);
	}
}

Local variable type inference
• 추론 가능한 변수에 대한 자료형을 선언하지 않음
• 한번 선언하여 추론 된 변수는 다른 타입의 값을 대입 할 수 없음
• 지역 변수만 사용 가능
var 사용

상수
• 상수는 변하지 않는 수
• 원주률 3.14, 1년 12개월 등
• final 예약어를 사용하여 선언
• 상수를 사용하면 변하지 않는 값을 반복하여 사용할 때 의미있는 문자로 인식하기 쉽고, 혹, 변하더라도 선언한 부분만 변경하면 되므로 여러부분을 수정할 필요가 없음

public class ConstantTest {
ㅤ
	public static void main(String[] args) {
ㅤ
		final int MAX_NUM = 100;
		final int MIN_NUM;
		ㅤ
		MIN_NUM = 0;
		ㅤ
		System.out.println(MAX_NUM);
		System.out.println(MIN_NUM);
		ㅤ
		//MAX_NUM = 1000;
	}
}

리터럴(literal)
• 프로그램에서 사용하는 숫자, 문자, 논리값을 뜻함
• 리터럴은 상수 풀(constant pool)에 있음
• 정수 리터럴은 int 로 실수 리터럴은 double 로 저장됨
정수의 범위가 넘어가는 경우는 L,l을 float로 사용하려는 경우는 F,f 식별자를 써줘야 함

형 변환 (type conversion)

• 서로 다른 자료형 간에 연산등의 수행을 위해 하나의 자료형으로 통일하는 것
• 묵시적 형 변환(explicit type conversion, 자동 형 변환)과 명시적 형 변환(implicit type conversion, 강제 형 변환)이 있음
• 바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어 짐
• 덜 정밀한 자료형에서 더 정밀한 자료형으로읜 형 변환은 자동으로 이루어 짐

byte bNum = 10;
int iNum = bNum;  
ㅤ
int iNum1 = 20;
float fNum = iNum2;
ㅤ
int iNum = 10;
byte bNum = (byte)iNum;
ㅤ
double dNum = 3.14;
int iNum2 = (int)dNum;

본 게시글은 fastcampus 박은종강사 수업을 듣고 개인적으로 정리한 내용임을 밝힘.

profile
Back-end-dev

0개의 댓글