-
[15회차] JAVA (데이터 타입)JAVA 2021. 4. 12. 21:02
강의명 : 오픈프레임워크 활용 디지털융합 SW엔지니어 양성 과정
강의 날짜 : 21.04.12
강의 시작 4주차 강사변경.
JAVA 처음 부터 다시 시작..
<JAVA 기본>
자바의 파일 경로는 Package Explorer이다.
즉, 자바는 패키지 단위로 이루어진다. (패키지 = OS에서의 폴더의 개념)
폴더는 파일들을 구분하여 묶어놓는 장소이며, 패키지가 그 역할을 하는 것이다.
패키지 안에 들어가는 class들은 파일이 되어 패키지가 class들을 묶어준다.
1. cmd에서 자바 버전 확인
자바의 버전과 자바 컴파일러의 버전은 일치해야 하니 (호환성을 위해서) 확인해주어야 한다.
cmd에서의 자바 실행을 위해 java (java Runner), javac (java 컴파일러)명령어가 있는데,
이클립스는 이런 실행과 컴파일을 알아서 해주는 편집기이다.
cmd창에서 '↑'버튼을 누르면 지금까지 cmd에서 입력한 명령어들이 나온다.
그러므로 적절히 사용할 것.
exit 명령 해제 및 창 닫기
2. jdk와 jre
jdk : 자바 개발 엔진
jre : java library의 약자이다. 즉, 해당 자바 버전에서 지원받을 수 있는 Library들이다.
그래서 jdk와 jre가 같은 버전인지 꼭 확인하여야 한다.
3. JAVA와 C언어
JAVA의 조상은 C언어이다.
즉, JAVA 안에는 C가 있다.
다른 점이 있다면 C에는 class의 개념이 없다.
C를 계승하여 C++,C#등이 생겨났고 C++부터 class의 개념이 생겨났지만,
그 클래스를 다루기가 무겁고 규격이 강해 고지식하여 생겨난 것이 JAVA이다.
애플의 경우에는 C++을 대체하기 위해 Obj C를 개발하여 사용하였지만
그 사용이 힘들고 무거워, C를 계승한 Swift를 개발하여 최근에 많이 사용중이다.
즉, 거의 대부분의 언어는 C언어를 계승하고 있다!
위의 정통 언어들과 다른 좀 더 가볍고 사용자 위주의 언어가 Script언어이다.
java Script는 자바기반이지 JAVA와는 다르다는 것을 알아야한다.
그 외에도 Data전용으로 Python등의 언어도 존재한다.
4. JAVA의 기본
JAVA 소스의 확장자를 ' . java '로 표현한다.
자바로 개발했다는 의미이다.
javac은 자바 컴파일러를 뜻하는 말로 Compiler 번역기의 뜻을 가지고 있다.
클래스(실행 파일)의 확장자는 ' . class '로 표현한다.
실행은 run으로 표현한다.
이것들이 되도록 도와주는 것이 JVM(JAVA Virtual Machine, 자바 가상 머신)이다.
JVM은 메모리도 관리해주는 역할을 하는데, 그래서 데이터가 어디에 저장되는지 아는 것이 중요하다.
jdk 안에 있으므로 개발에는 무조건! jdk가 필수이다.
5. 이클립스
이클립스는 src에 소스 파일과 bin에 실행파일, 둘로 나누어 지는데 이클립스만 그렇다.
src안의 자바 소스 파일을 번역에서 bin폴더 안의 클래스 파일(실행 파일)넣어둔다.
bin = Binary(이진코드) 의 약자. 즉, 컴퓨터 언어인 2진수로 번역된 파일들이 들어가는 것이다.
컴파일 명령, Run 명령들이 jdk.bin에 들어있다는 것이 실행 파일로 되어있다는 의미이다.
클래스명과 파일명은 같아야 하며 첫 글자는 대문자이다.
클래스가 생성될 때 에러가 없으면 자동 저장되며, 에러 없이 실행이 되어도 자동 저장된다.
하지만 저장은 습관처럼.. (ctrl s)
6. Naming
영어권에 맞춰서 Syntex(문법)은 지켜줘야 한다.
이름을 지을 때 class를 제외하고는 소문자로 시작한다.
다음의 소스를 보고 구조 및 Naming을 확인해보자
public class Hello { public static void main(String[] args) { System.out.print("Hello java!"); System.out.println("New Line"); System.out.print("End"); } }
System . out . print 라는 명령어에서,
System : 대문자로 시작하는 것을 확인. 즉, '클래스'이다.
. : 접근, 소속 연산자이다. 즉, 이곳으로 접근하여 들어가겠다, 라는 의미
out : 미리 정의되어 있는 객체, 장치이다. output이라는 출력 객체를 줄여 명명한 것이다. → 콘솔창
print : 인쇄 명령 메소드이다.
println : 인쇄 후 줄 바꿈 명령 메소드이다.
7. 클래스와 메소드
java의 파일은 반드시 한 개 이상의 class를 가지고 있어야 한다.
즉 java는 class로 시작하는 것이다.
class 옆에 class명과 { }가 반드시 필요하다.
중괄호 안에서는 class를 정의한다. 즉, 실행 내용을 담는다.
class에는 실행을 담당하는 함수(=메소드)가 필요하다.
메소드(실행 도구)는 영어 키워드가 붙고 ( )가 온다.
main 메소드를 '한 개' 가지고 있는 클래스가 실행에 필요하다.
(모든 클래스가 main이 필요한 것은 아님)
메인 메소드를 가지고 있는 클래스는 메인 클래스이며,
메인 메소드과 메인 클래스의 선언은 항상 같다.
public class 클래스명 {
public static void main ( String[] args) {
}
}
8. Object
"Data Is Object"
데이터는 객체다.
즉, 객체가 아닌 것은 존재하지 않는다.
존재하는 것은 모두 데이터이고, 데이터는 객체이다.
9. Data Type
컴퓨터의 메모리는 사각형만 존재하여 모니터, 핸드폰과 같은 인터페이스들 역시 모두 사각형이다.
즉, 그 타입이 동일해야 한다는 의미이다.
* 변수(객체) : 변할 수 있는 대상
값을 담는 그릇이다. 그 안에 내용물에 의해서 변수도 변한다.
그러므로 데이터의 타입에 맞춰서 변수를 바꿔주어야 한다. (타입이 같아야 한다.)
선언문, 할당문으로 데이터를 변수에 넣어준다. 즉, 초기화 작업을 해준다.
(Data Type)(공백)(변수 이름)=(Data) ;
(공백) : 구분 연산자
(변수 이름) : 영문 소문자로 시작한다. 적어도 세글자 이상은 줘야 구분이 쉽다.
= : 대입(할당) 연산자(assigned operator)
; : 문장의 끝
(Data Type)
public class Ex01 { public static void main(String[] args) { int n = 123; float f=3.14f; double d = 3.14; char c = '글'; boolean b = true; String name = "홍길동"; System.out.println(n); System.out.println(f); System.out.println(d); System.out.println(c); System.out.println(b); System.out.println(name); } }
1) 숫자
정수 : int(4바이트) , long(8바이트), short(2바이트), byte(1바이트)
정수의 디폴트는 int이다.
그래서 다른 정수 자료형은 표현해줄때 그냥 사용할 수 없고 뒤에 접미사를 붙여서 표현해준다.
실수 : float(4바이트), double(8바이트)
실수의 디폴트는 double이다.
그래서 float를 표시할 때는 뒤에 접미사 f를 붙여서 표현해준다.
float는 소수점 이하 6자리까지, double은 소수점 이하 15자리까지 나타낸다.
2) 문자(Character)
char(2바이트) : 글자마다 ' ' 사용
C언어 : ASCII 코드(알파벳) 1바이트
JAVA : UNI코드(국가구분코드가 추가) 2바이트
Web으로 넘어가면 유일하게 받침이 있는 한글을 위해 바이트 수가 늘어난다.
3) 참/거짓 판단 자료
boolean(1바이트) : true / false(디폴트 값)
4) 문자열
String : 대문자로 시작. 즉, 클래스! " "로 묶어준다.
10. 메모리
메모리는 1바이트씩 한 줄로 구성되어 있다.
연속 공간을 받아와서 데이터를 저장하는 것이다.
이 하나하나의 메모리는 주소를 가지고 있고 이것을 16진수로 표현한다.
좀 더 빨리 메모리를 찾기 위해 이것에 이름을 붙였는데, 이것이 바로 '변수' 이다.
즉, 메모리가 변수이고 데이터가 가장 중요하다!
11. 연산
public class Ex02 { public static void main(String[] args) { double pi = 3.141592; int r= 5; double area; area = r*r*pi; System.out.println("반지름 "+r+" 원의 면적은 "+area+"이다"); } }
* 지역 변수 : 해당 메소드 안에서만 사용 가능
* 변수를 선언만 하고 값을 초기화하지 않으면 안에 쓰레기값이 초기화된다.
* 문자열 + → 문자열 연결 연산자, 문자열 결합 연산자
연산(계산)
char < int < long < float < double < String
바이트가 수가 큰 것이 우선, 정수보다 실수가 우선, 기본 자료형보다 참조 자료형(String)이 우선
컴퓨터의 입출력 자료형은 무조건 String형이다.
우리가 아는 숫자는 실상 문자여서, 입력하여도 계산을 위해 자료형을 붙여서 숫자화시켜주는 것이다.
12. 복합 연산자
public class Ex03 { public static void main(String[] args) { // TODO Auto-generated method stub int a= 10, b=a; System.out.println(b); //b=10 b+=a; //b=20 System.out.println(b); b-=a; //b=10 System.out.println(b); b*=a; //b=100 System.out.println(b); b/=a; //b=10 System.out.println(b); b%=a; //b=0 System.out.println(b); } }
몫은 항상 int를 유지해야한다. 그렇지 않으면 나머지가 사라지므로.
나머지은 실수형을 가질 수 있다.
13. printf
public class EX04 { public static void main(String[] args) { System.out.printf("문자 %c, 유니코드%d \n",'A',(int)'A'); System.out.printf("문자 %c, 유니코드%d \n",'a',(int)'a'); System.out.printf("문자 %c, 유니코드%d \n",'0',(int)'0'); System.out.printf("================================\n"); System.out.printf("문자 %c, 유니코드%d \n",'A'+1,(int)('A'+1)); } }
printf ("출력형식", 값 , ...)
%c : 문자형
%d : 정수형
* 형 변환
(자료형) 값/변수 : 강제형변환
더 작은 메모리로의 형 변환은 데이터 손실의 위험이 크다.
그러므로 동격이나 승격으로 형 변환을 하는 편이 안전하다.(자동형변환)
ASCII 코드(char문자형은 아스키코드 값을 참조)
A : 65
a : 97
0 : 48
'JAVA' 카테고리의 다른 글
[16회차-②] JAVA (반복문) (0) 2021.04.13 [16회차-①] JAVA (연산자와 조건문) (0) 2021.04.13 [14회차-③] JAVA ( MySQL 데이터베이스) (0) 2021.04.11 [14회차-②] JAVA (네트워크 프로그래밍) (0) 2021.04.11 [14회차-①] JAVA (스트림) (0) 2021.04.11