본문 바로가기

학원/복기

0329 - JDK, 깃허브, 자료형, 변수

JDK (Java Development kit)

- Open JDK : 무료 (상업용 포함)
- Oracle JDK : 상업용일 시 유료 

=> 자바를 통해 프로그램을 개발할 수 있도록 해주는 도구

 >> 명령이 존재 : jacav, java, javap, javadoc , ...
    이런 명령들을 통해 프로그램을 개발에서 사용할 수 있도록 해줌

 >> JRE System Library 존재 (자바 실행 위해 제공되는 라이브러리)
    -> 안에 자바 프로그램 개발할 수 있는 '클래스'들이 포함되어있음
    -> 라이브러리를 모듈로 나눠서, 필요한 모듈만 갖다 쓸 수 있음 (장점: 보안, 속도)

         모듈 간의 의존성을 통해 필요한 모듈을 가져다 쓸 수 있다 

 

 

깃허브(GitHub)

: 분산 버전 관리 툴인 깃 저장소 호스팅을 제공하는 웹서비스
  -> 프로그램의 버전을 쉽게 관리, 여러 사람이 개발을 쉽게 만들 수 있도록 함 


*깃(Git) 

: 여러명의 사용자들 간에 파일의 작업을 조율하기 위한 분산 버전 관리 시스템(프로그램) -> 협업툴  
                 깃을 통해 깃허브에 프로젝트를 저장해 사용할 수 있음 

깃허브 주소 : https://github.com/

 

GitHub: Let’s build from here

GitHub is where over 100 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and fea...

github.com

 

 

*repository 생성

 

name 정하고, public(소스 공개)/private(소스 숨김)설정,  


Add a README file -> 체크

: 해당 프로젝트가 어떤 프로그램을 만드는지 설명


Create repository 클릭

 

*이클립스 프로젝트 깃허브에 저장하기 

 

이클립스 내에 깃을 설정해서 깃허브 레퍼지토리에 저장 (인포트 작업)
(이클립스 내에 깃 플러그인 이미 설치되어 있음, 사용만 하면 됨)

 

- 이클립스 깃 설정 
Window -> Show view -> Others -> Git -> Git Repositories 클릭 
Window -> Show view -> Others -> Git -> Git Staging 클릭 

 

- Git Repositories -> Clone a Git repository 
깃허브에서 만든 레퍼지토리를 복사해, 컴퓨터(Local)에 저장 (Local 레퍼지토리로 저장) => Clone 


   -> URI : 인터넷상 존재하는 자원을 표현하기 위해 사용하는 주소 
         즉, 레퍼지토리의 URI 주소를 뜻함 

 깃허브에 생성한 레퍼지토리에서 <>Code 메뉴 클릭하면, 주소 뜸. 이를 URI에 붙여넣기.

 

 

설정)


 -> Protocol: https
 -> User: 깃허브 아이디 
      Password: 깃허브 Settings -> Developer settings 클릭 -> Personal access tokens -> Tokens 클릭 
                         -> Generate new token 
 
- Note: 해당 토큰이 뭔지 알려주기 위해 작성 
- Expiration(유효기간)
- Select scopes (토큰 사용 범위) -> 우선 다 체크 (프라이빗이니까 상관 없음. 후엔 사용 범위 읽고 체크하자)

생성된 토큰을 이클립스 Password에 복사 붙여넣기 
Store in secure - 체크 

 

-> Directory :Local 레퍼지토리 저장 장소 설정 

 

 

 

- 이클립스의 프로젝트를 -> Local 레퍼지토리에 저장 -> Local 레퍼지토리의 프로젝트를 깃허브 레퍼지토리에 저장 

 

1) 이클립스 프로젝트를 -> Local 레퍼지토리에 전달해 저장 (Commit)
프로젝트(java_1) 우클릭 -> Team -> Share Project -> Repository 선택.

2) Local 레퍼지토리의 프로젝트를 깃허브 레퍼지토리에 전달해 저장 (Push) **push는 되돌릴 수 없음 , 신중히 하자
프로젝트(java_1) 우클릭 -> Team -> Add to index -> Push 

 3) 1)~2) 과정을 쉽게 할 수 있는 방법 (Git Staging사용)
개별로 or 전체 다 가능. 
Commit Message 작성 필수
Commit and Push 같이 or Commit만 중 선택 (혼자 보관할 땐 Commit and Push 같이해도 상관 X)

 

참고) patch : git -> local
         pull : local -> 이클립스 

 

 

데이터 저장단위

* Bit

  -> 통해 저장할 수 있는 값: 0 또는 1 

 

* Byte (8bit)  : 8개의 bit 모아 만듦 -> Character(문자 표현)
- 1Byte : 하나의 문자를 저장할 수 있는 저장 단위 


참고) 데이터 저장하는 하드웨어(usb, 하드디스크 ...)의 단위가 Byte

· 1Byte 1024개 모이면 -> 1KByte -> 1024개 모이면 -> 1MByte -> 1024개 모이면 -> 1Gbyte -> 1024개 모이면 ->  1TByte
· 프로그램 만들 때, 값을 표현하는 기본적인 단위로 Byte를 쓴다 
· 1Gbps : 1초 동안 전송할 수 있는 비트의 크기가 1기가 
· Byte(숫자) →  ASCII Code(아스키 코드)  → Character(영문자)

 

데이터 표현 방법 

숫자가 어떻게 Byte로 표현되는가? 

 

50(10진수) => 1Byte(8Bit)

10진수 2진수로 바꾸기 => 0110010 

 

-sign bit -> 0:양수 1:음수 (맨 첫번째 오는 숫자)
-data bit


음수를 2진수로 바꾸기
-50 (10진수) => 1Byte

양수 50을 1의 보수화( 1'S )를 시킴 (비트에 저장된 값을 반대로 바꿔줌)
=> 11001101 => 을 다시 2의 보수화( 2'S = 1'S + 1) 시킴 
=> 11001110

 

자료형 (DataType)

: 값을 표현하기 위한 키워드 또는 특정 대상을 표현하기 위한 식별자
   -> 이용해 값이나 특정 대상을 저장하기 위한 '변수'를 선언하기 위해 사용

1. 원시형(PrimitiveType) : 값을 표현하기 위한 자료형 - 키워드 ( 약속되어있는 단어 = 예약어 ) / 8종류 / 숫자형과 논리형으로 나뉨
   => 숫자형(정수형,실수형,문자형) : 연산 가능
   => 논리형

2. 참조형(ReferenceType) : 특정 대상을 표현하기 위한 자료형 - 식별자(클래스) 
   => String 클래스 : 문자열을 표현하기 위한 자료형(클래스)

 

※ 자바는 객체지향형 언어. 객체를 만들어 주기 위해선 Class가 있어야 함. 

따라서 자바는 ReferenceType를 주 기반으로 프로그램 제작. 원시형은 보조 수단.

 

* 예약어(키워드) : Java 프로그램을 개발하기 위해 미리 정해져 있는 단어 
* 사용자 정의 명칭(식별자) : Java 프로그램 개발을 위해 프로그래머가 정의하여 사용하는 단어

 

 

*리터럴(Literal) 

: 프로그램에서 사용하기 위해 표현되는 값(Value)

- 정수형(IntegerType) 리터럴 : 소숫점이 없는 숫자값

 => Java에서 정수형 리터럴은 기본적으로 4Byte(Interger)로 표현된다 
      4Byte로 표현될 수 있는 범위 존재 (-2147483648~2147483647)  

 

 

 

System.out.println("정수값(10진수 100) = " + 100); //숫자값 - 10진수 정수형 리터럴 
		
//println() 메소드는 정수값을 무조건 10진수로 변환하여 출력 

System.out.println("정수값(8진수 100) = " + 0100); //0숫자값 - 8진수 정수형 리터럴 >> 값: 64

System.out.println("정수값(16진수 100) = " + 0x100); //0x숫자값 - 16진수 정수형 리터럴 >> 값: 256
		
System.out.println("정수값(10진수 100) = " + 100L); //숫자값L - 10진수 정수형 리터럴(8Byte - LongType)

 

※ 8Byte 필요한 이유

//4Byte로 표현 가능한 정수값 : -2147483648~2147483647
		
// => 4Byte로 표현 불가능한 정수값 사용한 경우 에러 발생 
//System.out.println("정수값 = " + 2147483648); 
		
//4Byte로 표현 불가능한 정수값은 정수값 뒤에 [L] 붙여 8Byte의 LongType의 정수값으로 작성하여 사용
System.out.println("정수값 = " + 2147483648L);

 

※ 정수값을 표현하기 위한 자료형 - byte(1Byte), short(2Byte), int(4Byte), long(8Byte) 

byte a1 = 127; // 1Byte : - 128 ~ 127
short a2 = 32767 ; // 2Byte : -32768~32767 
int a3 = 2147483647; // 4Byte : -2147483648~2147483647
long a4 = 2147483648L; // 8Byte 
	    
System.out.println("a1 = " + a1); //127
System.out.println("a2 = " + a2); //32767 
System.out.println("a3 = " + a3); //214748647
System.out.println("a4 = " + a4); //2147483648
		
//int a5 = 100L; //값에 대한 손실이 발생할 수 있으므로 에러 발생 
long a5 = 100; //자료형이 큰 변수에 작은 리터럴 저장 가능
System.out.println("a5 = " + a5);//100

 

 

- 실수형(DoubleType) 리터럴 : 소숫점이 없는 숫자값 

 

 => Java에서 실수형 리터럴은 기본적으로 8Byte(Double)로 표현 >> 부동 소수점 형식 으로 숫자값 표현

System.out.println("실수값(4Byte) = " + 12.3F); //12.3
//실수값F >> 4Byte 실수형 리터럴(FloatType)

System.out.println("실수값(8Byte) = " + 12.3); //12.3
//실수값 >> 8Byte 실수형 리터럴(DoubleType)

//println() 메소드는 실수값이 아주 작거나 큰 경우 지수 형태로 변환하여 출력 

System.out.println("실수값(8Byte) = " + 0.00000000123); //1.23E-9
//실수값 >> 8Byte 실수형 리터럴(DoubleType)


//실수값을 지수형태로 표현하여 사용 가능 

System.out.println("실수값(8Byte) = " + 1.23E+10); //1.23E10
//실수값 >> 8Byte 실수형 리터럴(DoubleType)

 

※ 실수값을 표현하기 위한 자료형 - float(4Byte), double(8Byte)

float b1 = 1.23456789F; //가수부(소숫점 자리 수)를 표현하기 위한 크기(정밀도) : 7자리  
double b2 = 1.23456789; //가수부를 표현하기 위한 크기 : 15자리 
	   
System.out.println("b1 = " + b1); //1.2345679
System.out.println("b2 = " + b2); //1.23456789


변수(Variable)

: 리터럴(값)을 저장하기 위해 메모리(Memory)에 부여된 이름(식별자)

 

*변수 선언 - 메모리에 변수 생성 

 

형식 → 자료형 변수명;   
 - 자료형(DataType) : 변수에 저장될 리터럴의 형태 - 원시형(PrimitiveType) or 참조형(ReferenceType)
 - 변수명 : 리터럴을 저장하기 위한 메모리 영역을 구분하기 위해 사용되는 식별자(Identifier)

 

int su; //정수값 저장하기 위한 변수 선언(생성)
		
//값을 저장하는 변수는 대입연산자 왼쪽에 반드시 작성

su = 100; //대입연산자(=)를 이용하여 값을 변수에 저장 - 입력 
System.out.print("초기값 = ");
System.out.println(su); //100 (변수에 저장된 값을 화면에 출력)

//int su; //동일한 이름의 변수를 재선언할 경우 에러 발생
su = 200; //변수에 기존 값 대신 새로운 값 저장 
          //변수는 값을 하나만 저장할 수 있음
System.out.print("변경값 = ");
System.out.println(su);  // 200 (코드는 순차적으로 실행된다 (인터프리터 방식))
int num = 100; // 변수 선언 및 초기값 저장
			
// "문자열" + 값 또는 값 + "문자열" >> 문자열과 값이 결합 -> 결과값 : 문자열  
System.out.println("num = " + num); //num = 100
System.out.println("올해는 " + 2 + 0 + 2 + 3 + "년입니다."); //올해는 2023년입니다.
System.out.println(2+0+2+3 + "년은 토끼띠해입니다."); // 7년은 토끼띠해입니다. -> 잘못된 결과 발생

//"" : 비어있는 문자열 - NullString 
System.out.println(""+2+0+2+3+"년은 토끼띠해입니다."); // 2023년은 토끼띠해입니다.

 

동일한 자료형의 변수는 , 기호를 사용하여 나열 선언 가능

int num1 = 100 , num2 = 200; 

System.out.println("연산결과 = " + num1 + num2); // 100200 -> 잘못된 결과 발생 

//디버깅
System.out.println("연산결과 = " + (num1 + num2)); // 300 
			
System.out.println("연산결과 = " + num1 * num2); //20000
System.out.println("연산결과 = " + (num1 * num2)); //20000 (더 효율적)

 

 

int kor = 88, eng = 90;
int tot = kor + eng; //연산 결과를 변수에 저장 
System.out.println("점수 합계 = " + tot); //점수 합계 = 178​

 

변수의 값이 저장되어 있지 않은 상태에서 변수를 사용할 경우 에러 발생

int count;
System.out.println("count = " + count);

 

변수에 저장 불가능한 값을 저장할 경우 에러 발생 

int count = 10.0; // 실수값(double)은 정수값(int)에 저장 안됨 
System.out.println("count = " + count);

 

※식별자 작성 규칙

-영문자, 숫자, 특수문자(_ 또는 $)를 조합하여 작성 - Java에서는 한글을 식별자로 사용 가능 (But 권장 X)
-숫자로 시작되도록 작성 불가능
-영문자는 대소문자를 구분하여 사용
-기존에 사용되는 단어(키워드 또는 식별자)로 선언 불가능

※Java에서 사용되는 식별자 작성 방법 - 표기법 : 영문자의 소문자를 기본으로 식별자를 작성

 

=> 파스칼 표기법(PascalCase) : 조합된 단어의 첫문자를 대문자로 표현하여 작성 - 클래스명, 인터페이스명 등
=> 카멜 표기법(CaemelCase) : 첫번째 단어를 제외한 나머지 단어의 첫문자를 대문자로 표현하여 작성 - 변수명, 메소드명 
=> 스네이크 표기법(SnakeCase) : 조합된 단어를 _로 구분하여 작성 - 상수(Constant : 상수명은 무조건 대문자로 작성)