728x90
반응형
- 컴퓨터와 소통을 하고 싶다면, 컴퓨터 언어를 알아야한다.
- 코드를 작성하고 컴퓨터가 알아들을 수 있도록 변형해줘야한다.
- 컴퓨터는 1과 0만을 알아들을 수 있기 때문. (byte code, 이진코드)
- 그 변환해주는 작업을 컴파일러가 해준다.
- 컴파일러는 JDK 안에 속해져 있다. 그래서 JDK를 다운로드 받아야한다.
JDK의 구조
- JDK 안에 JRE 안에 JVM이 있다.
- JDK : 자바를 쓰기 위한 패키지(세트 상품)
- JRE : 실행 환경 제공
- JVM
- 운영체제는 하드웨어와 소프트웨어의 중간 다리를 하는 역할
- JVM은 독립적으로 메모리를 할당 받아 OS(운영체제) 위에서 동작한다. 독립적인 공간 활용.
- 컴파일이 되었다 : 코드를 이진코드로 변환 완료 했다.
JVM의 구조
- Person.java : 사용자가 작성한 코드
- Javac.exe가 실행되면서 Person.class로 컴파일시킴(변환시킴)
- 그러면 Class Loader가 Person.class를 읽고 어느 메모리에 저장할 지 결정함.
- Method 영역(코드 영역, 데이터 영역), Heap 영역, Stack 영역
- 기본형 데이터는 스택영역에, 참조형 데이터는 힙 영역에 저장됨. 스태틱은 메서드 영역에 저장됨.
- Class Loader가 클래스 파일을 읽고 데이터를 영역에 안착시키면 Execution Engine이 각 코드를 명령어 단위로 실행시킨다. 코드가 완료될 때까지 실행시킴.
- GC : Garbage Collector는 Heap 영역을 담당한 청소부 역할. 참조형 데이터는 Heap 영역에 들어가는데, 참조되지 않는 데이터는 메모리를 괜히 차지해서 낭비하고 있으니, 메모리를 할당 된 것을 취소시켜서 청소해준다.
코딩 습관
- 들여쓰기
- 주석
- 변수명
// 한 줄 주석 (분홍빛 줄은 주석처리 된 것!)
/* 여
러
줄
주
석
*/
/**
클래스, 메서드, 변수에 대한 설명을 하는 주석
class : 자율주행의 핸들을 담당하는 클래스
method 1 : 핸들을 왼쪽으로 돌리는 메서드(기능)
method 2 : 핸들을 오른쪽으로 돌리는 메서드(기능)
variation 1 : 핸들을 꺾는 각도에 대한 변수1
variation 2 : 경적을 울릴 것인지에 대한 변수2
*/
// sql과 python에서는 보통 snake_case 로 언더바로 작성했지만
// java는 camelCase로 작성하는 것이 관습
// 이외에 표기법에는 PascalCase, kebab-case 등이 있음
JDK 설치 및 Eclipse 설치 (이클립스 기본 설정)
- JDK 설치 (.msi 확장자)
- 환경변수 설정
- JAVA_HOME
- %JAVA_HOME%\bin
- 변환된 이진 코드가 들어가는 곳이 bin 위치
- cmd 창 열고 java -version 이라고 치면 17.0.10 이 뜸. 설치 완료.
- c-drive 안에 setup 폴더 만들고 eclipse zip 파일 이동
- 이러면 관리하기 편함
- 반디집 다운로드. zip 파일 관리가 쉬움.
- Eclipse.exe 실행
- workspace(작업공간) 지정 : C-drive 안에 지정함
- Window - Preferences - Compiler 를 17버전으로 지정
- 안정된 버전 : 1.8 , 11, 17 버전
- Installed JREs 에서 jdk-17 있으면 이거 체크
- 없고 jre만 있으면 add 눌러서 jdk 폴더 지정하고 apply
- General - Appearance - Colors and Fonts - Basic - Text Font
- 폰트 변경
- 상단 검색 창에 enc 검색 후 General - WorkSpace
- Text file encoding - Other : UTF-8 되어있는지 확인
이클립스 아이콘 크게 만들기 TIP!!
- 이클립스 폴더 안에 eclipse.ini 파일을 메모장으로 켜기
- 맨 하단에 아래 내용 적어놓고 저장하고 끄기
- 이클립스 다시 켜기
-Dswt.enable.autoScale=true
-Dswt.autoScale=150
-Dswt.autoScale.method=nearest
- 화면 우측상단에 Open Perspective 눌러서 Java 클릭 Open
- Window - Show View 에서 필요한 창 켜서 확인 가능 - console 창 켜기
- java project 생성
- javaSE라는 프로젝트명 생성 Finish
- JRE 안에 다양한 기능을 쓸 수 있는 것을 확인 가능
- framework : 잘 갖춰진 도서관 느낌
- 가져갈 수 있는 코드라면 library, 책 느낌
- scr 폴더에서 우클릭 - new - package
- 패키지 이름은 chapter00.basic
- 상위폴더가 chapter00 이고 하위 폴더가 basic 이라는 이름으로 생성된다.
- package에서 우클릭 - new - class
- 클래스 명은 C001_Info
- 클래스 명은 대문자로 하는 것이 관습
- public static void main(Strin[] args) 체크하기 !!
- main method를 만들어두는 것 .
- main method를 만들어두는 것 .
디렉토리(Directory) 구조
public class StartJava {
public static void main(String[] args) {
//코드 작성
System.out.println("Hello Java");
}
}
- 확장자가 .java 파일이 모여서 패키지를 이루고, 패키지가 모여 프로젝트가 된다. 이러한 프로젝트를 workspace에 저장하면서 관리하게 된다.
- JDM 속 컴파일러가 .java 파일을 변환시키고, 컴파일된(변환된) .class 파일을 읽는 게 JVM이다.
- 중괄호를 통해서 구분한다.
- 들여쓰기를 잘해서 코드 구분을 확실히 하자.
- 한 줄 주석 단축키 : ctrl + /
- 여러 줄 주석 단축키 : 여러줄을 드래그해서 지정한 후, ctrl + shift + /
- sysout 만 치고 ctrl + space 누르면 자동으로 출력 문이 나온다.
Info
public class Info {
//여기 내부의 코드는 전부 C001_Info의 소유이다.
// Java에서 가장 먼저 호출되는 메서드는 main method이다.
public static void main(String[] args) {
// 여기가 main method 내부
// 저장 단축키 : ctrl + s
// 실행 단축키 : ctrl + f11
// 들여쓰기 : tab
// 내어쓰기 : shift + tab
/*
* 단축키 모음
* ctrl + space : 입력 중에 자동 완성 기능 호출
* ctrl + d : 한 줄 삭제
* ctrl + shift + f : 소스 자동 정렬
* alt + 방향키 : 코드 위 아래로 이동 (드래그해서 하면 여러줄도 가능)
* ctrl + alt + 방향키 : 한 줄, 혹은 블럭 복사
* ctrl + shift + o : 자동 import
* ctrl + shift + s : 모든 소스코드 저장
* ctrl + / : 주석 자동 완성
* ctrl + shift + / : 여러 줄 주석 자동 완성
* shift + enter : 어디서나 한줄 밑으로
*/
}
}
변수
변수의 선언
- 선언하는 공간에 어떤 타입의 데이터를 넣을 지 정함.
- 변수라는 박스를 만들고, 어떤 데이터를 넣을 지를 미리 정해서 타입 지정을 해야함.
- 변수 당 선언은 처음 한번만 해야한다. 똑같은 이름의 박스를 만들 수 없다.
// 변수의 선언
// xxx.java 파일 안에서 어떤 값을 컴퓨터에게 인식시키고 저장하는 공간
// 자료형(DataType) 변수명(식별자) 명령어(구분자)
// [int] [num] [;]
int num;
// int 타입의 num 변수가 메모리에 저장됨
// 자료형을 통한 변수의 선언은 처음 한번만 한다.
// ex)
int num;
int num; // 오류 발생
- int 타입의 num 이라는 변수를 만듬
- 이 num이라는 박스에는 반드시 정수(int) 타입의 데이터만 들어갈 수 있다.
변수의 초기화
- 정수형(int)의 num이라는 변수(박스)를 만들면 정수만 들어갈 수 있다.
- int num = 100; 먼저 100을 할당 시킨다. = num이라는 박스에 100을 넣었다.
- num = 200; 다음 이미 선언은 했으니 int 라는 건 하지 않고, num 박스 안에 200을 다시 넣는다. = num 이라는 변수에 200을 재할당시킨다.
- int num; 까지가 ‘선언’
- num = 100; 이 ‘할당 혹은 초기화’ , 다시 데이터를 넣으면 ‘재할당’ 이라고 함.
- 초기화 : 변수에 처음으로 값을 할당하는 것.
let myVar = 10; // 선언과 초기화
myVar = 20; // 재할당
let myVar2; // 선언
myVar2 = 30; // 할당 (초기화)
변수 명명 규칙
- 변수의 이름은 영문자(대문자, 소문자)나 숫자를 사용할 수 있으며 특수문자 ( $ , _ ) 만 사용 가능
- 변수 이름은 숫자로 시작 불가
- Java에서 이미 사용 중인 예약어는 사용할 수 없음
- 예약어 : if, else, switch, case, for, while, break, continue, try, catch, finally, throws, static, final, default, new, extends, super, implements, abstract ...
1num : 변수명 불가능
!^*num : 변수명 불가능
break : 변수명 불가능 (예약어 자체로의 변수명이 불가능)
superbreak : 이런건 가능
자료형
- 데이터 타입
- 기본 타입
- 정수 타입 : byte, char, short, int, long
- 실수 타입 : float, double
- 논리 타입 : boolean
- 참조 타입
- 배열 타입
- 열거 타입
- 클래스
- 인터페이스
- 기본 타입
- char : ASCII 코드 같은 걸로 문자를 숫자로, 숫자를 문자로 변형 가능 하다.
- ASCII Code
- 문자 0 은 숫자로 48
- 문자 A는 숫자로 65
- 문자 a 는 숫자로 97
기본 자료형
- 저장할 수 있는 정수의 범위가 다르다.
// score 라는 변수를 만들어서 100까지 넣을 예정
int score; // 약 1억까지 저장 가능
// 또는
byte score; // 127까지 저장 가능
// 굳이 더 큰 범위를 저장하는 long을 넣을 필요가 없다.
- bite : 0과 1을 담당
- long = 8 byte
Variable_name
public class Variable_name {
// main 이라고 쓰고 ctrl + space 누르면
// main method 자동 생성됨
public static void main(String[] args) {
/*
* [변수의 명명 규칙]
* 1. 변수의 이름은 영문자(대문자, 소문자) 나 숫자를 사용
* 2. 특수문자 $, _ 만 사용 가능
* 3. 변수 이름은 숫자로 시작할 수 없음
* 4. 자바에서 이미 사용 중인 예약어는 사용할 수 없음
*
* [암묵적 규칙]
* 1. 클래스의 이름은 항상 대문자로 시작
* 2. 변수의 이름은 알파벳으로 사용하되 _ 혹은 대문자로 단어 구별
* 3. 변수에 할당하는 값과 연상되는 의미의 단어를 사용
*
*/
// 4byte 짜리의 정수만 담을 수 있는 num 이라는 변수 생성
int num;
// int 1num; 이건 에러로 빨간줄 뜸.
// 변수명이 숫자로 시작할 수 없음. 컴파일 자체가 안됨.
int num1; // 이건 숫자로 시작 안해서 가능
int kor_score; //snake case
int totalAvg; // camel case
// int if; 이것도 if라는 예약어로 해서 컴파일 불가능.
int if11; // 이건 가능
}
}
PrintTest
public class PrintTest {
public static void main(String[] args) {
// 출력을 도와주는 메서드(=함수)
System.out.println("안녕"); // 개행 O
System.out.print("안녕"); // 개행 X
System.out.println("하세요");// 개행 O
// 함수는 항상 소괄호가 있다.
// print VS. println
// 개행 : 엔터를 치다. 행을 열다.
// print : 개행 X
// println : 개행 O
// 문자
// 문자 : char type. 기본형 데이터
// 문자열 : 문자의 집합. String class의 type. 참조형 데이터
System.out.println('가'); // 문자는 홑따옴표
// System.out.println('가나다라'); 홑따옴표에 문자열있어서 불가능
System.out.println("가나다라"); // 문자열을 쌍따옴표
// 문자형 타입인 char1 변수를 선언하고 '나'라는 데이터를 할당(초기화) 시킴
char char1 = '나';
System.out.println(char1);
// 문자열 타입인 str1 변수를 선언하고 "가나다"라는 데이터를 할당(초기화) 시킴
String str1 = "가나다";
System.out.println(str1); // 변수를 호출하여 출력시킴
// 숫자
System.out.println(1234);
System.out.println(3.14);
int num1 = 123;
System.out.println(num1);
double num2 = 1.414;
System.out.println(num2);
}
}
728x90
반응형