일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- NLP
- sigmoid
- CASE
- leetcode
- 설명의무
- 코딩테스트
- 논문리뷰
- LSTM
- Window Function
- sql
- MySQL
- 표준편차
- 서브쿼리
- 그룹바이
- 자연어 논문 리뷰
- SQL 날짜 데이터
- GRU
- 자연어 논문
- nlp논문
- Statistics
- inner join
- 자연어처리
- airflow
- update
- SQL코테
- torch
- 카이제곱분포
- HackerRank
- t분포
- 짝수
- Today
- Total
HAZEL
[ CH01. 기초자바 ] 자바 자료형, 변수, 리터럴, 형변환 본문
CH01. 기초 자바
: 패스트 캠퍼스 강의를 공부하고 정리한 내용입니다.
01. 자바 기본
1. hellojava ✨
: 한 패키지 안에 여러 클라스가 들어갈 수는 있지만, 메인은 하나여야한다 (?)
: java의 package 는 소문자, class는 대문자로 시작하는것이 원칙(?) 이라고 한다.
2. 컴퓨터에서 자료 표현하기
: 2진수, 8진수, 16진수를 표현할 수 있다.
- 맨 앞의 비트는 부호를 의미한다!
// 2 진수, 8진수, 16진수를 프로그램에서 사용하는 예제
package ch04;
public class BinaryTest {
public static void main(String[] args) {
int num = 10;
int bNum = 0B1010;
int oNum = 012;
int xNum = 0XA;
System.out.println(num);
System.out.println(bNum);
System.out.println(oNum);
System.out.println(xNum);
}
}
3. 변수 ( Variable )
: 프로그램에서 항상 변하는 값을 나타낼 필요가 있음
: 표현하려는 수에 맞는 데이타 타입 ( 자료형 ) 을 이용하여 변수를 선언
: 표현하려는 자료가 숫자, 문자, 문자열 등 다양할 수 있으므로 그에 맞는 자료형을 사용
// 변수 선언과 사용하기 : 자료형과 변수 명으로 변수를 선언함. 선언과 동시에 초기화 할수 있음
package ch05;
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. 숫자를 쓸 수 없음
2. 예약어는 사용할 수 없음
02. 자료형
1. 기본 자료형 ( data type ) 의 종류
- 정수형 : byte , short , int , long ( 8 )
- 문자형 : char
- 실수형 : float , double
- 논리형 : boolen
* 참조 자료형 : 객체를 만들고, 그 객체가 데이터 타임으로 사용하는 것
2. 정수형
1) int
: 프로그램에서 사용하는 모든 숫자 ( 리터럴 ) 은 int 로 저장함
: 4 바이트로 단위의 자료형
2) long
: 숫자의 뒤에 알바펫 L 또는 l 을 써서 Long 형임을 표시함
- 소문자로 쓰면 1이랑 헷갈려서, 보통 대문자를 많이 사용함
* 자바에서는 정수형은 int , 실수형은 double 로 잡힌다!
< 파이썬에서는 float 형식을 쓰기 때문에, 실수형을 사용할 때 주의할것 >
* 만약 , 자료형보다 더 작은 값을 선언한다면 상관없다. 하지만 선언한 자료형보다 더 큰 값이 들어가게 되면 오류가 발생하게 된다. 따라서 자바를 할때 자료형을 주의해야한다.
3. 실수형 - 부동 소수점 방식
: 지수부와 가수부로 표현 함 - 컴퓨터에서는 밑수를 2로 사용
: 정규화 - 가수가 밑수보다 작은 한 자리까지 가수로 표현 되는 것
package ch07;
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);
}
}
// 부동 소수점 방식의 오류
// 지수와 가수로 나타내는 부동 소수점 방식에서는 지수부가 0 을 표현할 수 없기 때문에 약간의 오차가 발생할 수 있다.
package ch07;
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);
}
}
4. 문자형
- 문자도 정수로 표현 가능함
- 문자를 나타내기 위해 전세계 표준인 UNICODE 를 사용하며, utf-16 인코딩을 사용 (모든 문자 2바이트 표시)
- 문자형 변수 선언
char ch = 'A'; OR char ch2 = 66;
character set: 문자를 숫자로 변환한 값의 세트
encoding: 문자가 숫자로 변환되는 것
decoding: 숫자에서 다시 문자로 변환되는 것
ASKII code: 알파벳과 숫자 특수 문자등을 1바이트에 표현하는데 사용하는 문자세트
UNICODE: 전 세계 표준으로 만든 문자 세트
UTF-8: 1바이트에서 4바이트까지 다양하게 문자를 표현할 수 있음
UTF-16: 2바이트로 문자를 표현
package ch08;
import java.sql.SQLOutput;
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);
System.out.println((int)ch2);
int ch3 = 67;
System.out.println((char)ch3);
//char ch4 = -66; 음수는 대입할 수 없음
char ch5 = '한';
char ch6 = '\uD55C';
System.out.println(ch5);
System.out.println(ch6);
}
}
5. 논리형
- true ( 참 ) , false ( 거짓 ) 두가지만 나타냄.
- 1바이트를 사용함
- 값이 존재하는지, 배열이 비었는지, 결과가 참인지 거짓인지 등을 표현
package ch09;
public class BooleanTest {
public static void main(String[] args) {
boolean isMarried = true;
System.out.println(isMarried);
}
}
6. 지역변수 자료형 없이 사용하기 ( 자바 10 지원 됨 - 파이썬 같은 느낌 )
: 추론 가능한 변수에 대한 자료형은 선언하지 않음
- 한번 선언하여 추론 된 변수는 다른 타입의 값을 대입할 수 없다.
- 지역 변수만 사용가능하다.
** 지역변수 : 지역에서만 사용가능한 변수
package ch09;
public class LocalVariableType {
public static void main(String[] args) {
var i = 10;
var j = 10.0;
var str = "hello";
System.out.println(i);
System.out.println(j);
System.out.println(str);
str = "test";
//str = 3; -- 중간에 int 로 바꾸는 행위는 java는 안된다.
}
}
03. 상수 , 리터럴, 변수의 형 변환
1. 상수 ( constant )
: 변하지 않는 수 ex, 원주율 , 1년 12개월 등
- final 예약어를 사용하여 선언 : 선언하고 assign 하게 되면 바꿀 수 없다.
- 선언과 동시에 대부분을 초기화 함 ex, final int MAX_NUM = 100 ;
물론, 선언만 할 수 있음
- 다른 것과 차이를 두기 위해서 보통 대문자로 표현함 .
* 상수의 장점
a. 변하지 않는 값을 반복하여 사용할 때 의미있는 문자로 인식하기 쉬움 -> 가독성이 좋음
b. 변하더라도 선언한 부분만 변경하면 되기때문에 여러 부분을 수정할 필요가 없음
package ch10;
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; 상수이기 때문에 값을 변하게 할 수 없다.
}
}
2. 리터럴 ( literal )
: 프로그램에서 사용하는 숫자, 문자, 논리값을 뜻함
: 리터럴은 상수 풀에 있음
- 정수 리터럴은 int , 실수 리터럴은 double 로 저장하되 정수의 범위가 넘어가면 L, F 식별자를 씀
** 상수풀 :
하드에서 메모리로 로드가 될때, 프로그램 안의 자료중의 일부는 메모리를 차지함 ( 실행과 상관없이 , 로드만으로 ) - 상수, static 변수 가 있는데, 그중에서 상수를 의미함 . 이때, 메모리에서 차지하는 공간을 상수풀이라고 함.
3. 형변환 ( type conversion )
: 서로 다른 자료형 간에 연산을 위해서 하나의 자료형으로 통일함
* 형변환의 종류
- 묵시적 형 변환 ( = 자동형 변환 ) : 프로그래머가 개입하지 않아도 알아서 변환하는 것
- > 바이크 크가 작은 자료형 -> 큰 자료형, 덜 정밀한 자료형 -> 더 정밀한 자료형
- 명시적 형 변환 ( = 강제형 변환 ) : 프로그래머가 개입하여 강제적으로 변환하는것
-> 위와 반대의 경우에는 강제적으로 변환해줘야함
-> 자료가 유실될 수 있음
package ch10;
public class TypeConversion {
public static void main(String[] args) {
byte bNum = 125;
int iNum = dNum;
System.out.println(iNum); // 자동으로 변환
double dNum = 1.2;
float fNum = 0.9F;
// 명시적으로 넣어주는 것
int iNum1 = (int)dNum + (int)fNum;
int iNum2 = (int)(dNum + fNum); // 2.1
System.out.println(iNum1); // 1
System.out.println(iNum2); // 2
}
}