자바 프로그래밍 입문 강좌 (renew ver.) - 초보부터 개발자 취업까지!!
2. Java 프로그램의 실행 구조
2-1 환경 변수 설정.
java.exe(JVM 구동 명령), java.exe(컴파일러)를 다른 디렉토리에서도 실행할 수 있도록 등록
제어판 - 시스템 - 속성 - 고급 - 환경 변수에 bin 경로 등록
시스템 변수 - 새로 만들기
변수 이름을 JAVA_HOME으로 변수 값을 bin 경로로 설정.
2-2 Java 컴파일러와 JVM
클래스 이름과 파일 이름은 맞춰줘야 한다.
2-5. 가비지 컬렉터 Garbage Collector
프로그램 실행에 필요한 메모리를 GC가 알아서 관리해준다.
C계열 프로그램 : 개ㅐ발자가 직접 메모리 관리해야 함. 잘못 관리할 경우 메모리 누수가 발생하고 타 프로그램 동작이 멈출 수 있음.
JAVA 프로그램 : 개발자가 메모리에 접근할 수 없음. 개발자는 메모리 관리를 할 수 없고 가비지 컬렉터가 불필요한 메모리를 회수해서 메모리를 최적화함.
3. 변수
3-1. 변수란?
데이터를 임시로 담을 수 있는 공간(메모리 공간)
3-2. 변수 선언과 초기화
int i = 10;
자료형 변수이름(선언부) = (대입연산자) 10(변수값);
3-3. 메모리 할당과 진법
int 자료형은 메모리에서 4byte 공간을 차지함.
8bit = 1byte.
3-4. 변수 데이터 변경
변수에 저장된 데이터는 언제든 변경할 수 있다.
package pjtTest;
public class Main {
public static void main(String[] args) {
System.out.println("Hello Java World");
int i = 10;
System.out.println("i = " + i);
i = 100;
System.out.println("i = " + i);
}
}
4. 기본자료형
4-1. 기본자료형과 객체자료형
기본 자료형은 데이터가 변수에 직접 저장되고, 객체 자료형은 객체 메모리 주소가 변수에 저장된다.
C계열에선 포인터라고 하고, Java에선 레퍼런스라고 한다.
4-2. JAVA 기본 자료형
기본 자료형 - 정수형 : byte(1byte), char(2byte), short(2byte), int(4byte), long(8byte)
실수형: float(4byte), double(8byte)
논리형: boolean(1byte)
package pjtTest;
public class Main {
public static void main(String[] args) {
char c = 'a';
System.out.println("c = " + c);
int i = 10;
System.out.println("i = " + i);
double d = 10.258;
System.out.println("d = " + d);
boolean b = false;
System.out.println("b = " + b);
String s = "Hello Java World!";
System.out.println("s = " + s);
}
}
4-3 ; 형 변환
자동(묵시적) 형 변환: 작은 공간의 메모리에서 큰 공간의 메모리로 이동.
명시적 형 변환 : 큰 공간의 메모리에서 작은 공간의 메모리로 이동. 데이터가 누실될 수 있다.
5. 특수 문자와 서식 문자
5-1. 특수 문자
특수 문자가 아닌 특수한 목적으로 사용되는 문자
\t : tab
\n : 줄 바꿈
\' : 작은 따옴표
\" : 큰 따옴표
\\ : 역슬래시
5-2. 일반 문자가 아닌 서식에 사용되는 문자
print() 메서드 이용 : f는 format(형식)을 뜻함
%d : 10진수
%o : 8진수
%x : 16진수
%c : 문자
%s : 문자열
%f : 실수
package pjtTest;
public class Main {
public static void main(String[] args) {
System.out.printf("오늘의 기온은 %d입니다.\n", 10);
int num1 = 100;
System.out.printf("오늘의 기온은 %d입니다.\n", num1);
int num2 = 30;
System.out.printf("10진수 : %d\n", num2);
System.out.printf("8진수 : %o\n", num2);
System.out.printf("16진수 : %x\n", num2);
}
}
5-3. 서식 문자의 정렬과 소수점 제한 기능
package pjtTest;
public class Main {
public static void main(String[] args) {
System.out.printf("%d\n", 123);
System.out.printf("%d\n", 1234);
System.out.printf("\n");
System.out.printf("%4d\n", 123);
System.out.printf("%5d\n", 1234);
System.out.printf("\n");
System.out.printf("f\n", 1.23);
System.out.printf(".3f\n", 1.23);
}
}
6. 연산자
6-1 피연산자 개수에 의한 연산자 구분
단항) 피연산자가 하나
+x, -x, !x
이항)
x=y, x<y, x!=y
삼항)
조건식 : true? false
6-2. 대입 연산자.
오른쪽의 결과를 왼쪽에 대입한다.
(프로그램에서 오른쪽과 왼쪽이 같다는 의미는 ==이다)
6-3. 산술 연산자 : +, -, *, /, %
6-4. 복합 연산자 : +=, -=, *=, /=, %=
6-5. 관계 연산자 : >, <, >=, <=, ==, !=
6-6. 증감 연산자 : ++, --
6-7. 논리 연산자 : &&, ||, !
6-8. 조건 연산자 : 조건식? 식1 : 식2
조건식이 참이면 식1, 거짓이면 식2 실행
6-9 : 비트 연산자
데이터를 비트단위로 환산해 연산을 수행. 다른 연산자보다 연산 속도가 향상된다.
& : a 와 b가 모두 1이어야 1
| : a와 b 중 하나라도 1이면 1
^ : XOR 연산으로, a와 b가 같으면 0
7. 배열
7-1. 배열이란?
인덱스를 이용해서 자료형이 같은 데이터를 관리하는 것
7-2. 배열 선언 및 초기화
package pjtTest;
public class Main {
public static void main(String[] args) {
int[] arr1 = new int[5];
arr1[0] = 100;
arr1[1] = 200;
arr1[2] = 300;
int[] arr2= {10, 20, 30, 40, 50};
}
}
7-3. 배열 활용
package pjtTest;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String[] name = {"박찬호", "이승엽", "박병호", "이병규", "류현진"};
int[] score = new int [5];
Scanner scanner = new Scanner(System.in);
System.out.printf("%s의 점수를 입력하시오 : " , name[0]);
score[0] = scanner.nextInt();
System.out.printf("%s의 점수를 입력하시오 : " , name[1]);
score[1] = scanner.nextInt();
System.out.printf("%s의 점수를 입력하시오 : " , name[2]);
score[2] = scanner.nextInt();
System.out.printf("%s의 점수를 입력하시오 : " , name[3]);
score[3] = scanner.nextInt();
System.out.printf("%s의 점수를 입력하시오 : " , name[4]);
score[4] = scanner.nextInt();
System.out.println(name[0] + " " + (double)score[0]);
System.out.println(name[0] + " " + (double)score[1]);
System.out.println(name[0] + " " + (double)score[2]);
System.out.println(name[0] + " " + (double)score[3]);
System.out.println(name[0] + " " + (double)score[4]);
double avg = (double)(score[0] + score[1] + score[2] + score[3] + score[4])/5;
System.out.println("avg = " + avg);
}
}
8. 배열과 메모리
8-1 배열의 메모리 크기.
배열을 구성하는 데이터의 자료형에 따라 배열의 메모리 크기가 결정된다
int[] arr = new int [3];
4byte * 3 = 12 bytes
8-2. 배열을 가리키는 배열 이름
기본 자료형 데이터를 담고 있는 변수와 달리 배열 변수는 배열 데이터의 주소를 담고 있다.
int[] i = new int[3];
i[]주소 --> i[0]의 값 | i[1]의 값 | i[2]의 값
8-3. 배열의 기본속성
package pjtTest;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] arrAtt1 = {10, 20, 30, 40, 50, 60};
int[] arrAtt2 = null;
int[] arrAtt3 = null;
System.out.println("arrAtt.length : " + arrAtt1.length);
System.out.println("arrAtt1 : " + Arrays.toString(arrAtt1));
arrAtt3 = Arrays.copyOf(arrAtt1, arrAtt1.length);
System.out.println("arrAtt3 : " + Arrays.toString(arrAtt3));
//배열1과 3은 요소는 같지만 주소는 같지 않다.
arrAtt2 = arrAtt1; //배열 레퍼런스
System.out.println(arrAtt1);
System.out.println(arrAtt2); //1과 2는 같은 배열의 레퍼런스
System.out.println(arrAtt3);
}
}
8-4. 다차원 배열
package pjtTest;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[][] arrMul = new int[3][2];
arrMul[0][0] = 10;
arrMul[0][1] = 20;
arrMul[1][0] = 30;
arrMul[1][1] = 40;
arrMul[2][0] = 50;
arrMul[2][1] = 60;
System.out.println("arrMul[0] : " + Arrays.toString(arrMul[0]));
System.out.println("arrMul[1] : " + Arrays.toString(arrMul[1]));
System.out.println("arrMul[2] : " + Arrays.toString(arrMul[2]));
}
}
9. 조건문
9-1. 조건문이란? 조건의 결과에 따라 양자 택일 또는 다자 택일을 진행
양자택일 : 주로 if문
다자택일 : 주로 switch
package pjtTest;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
if(num1<num2) {
System.out.println("num1은 num2보다 작다.");
}
if(num1<num2) {
System.out.println("num1는 num2보다 작다.");
}
else
{
System.out.println("num1은 num2보다 크거나 같다.");
}
}
}
9-3. switch
package pjtTest;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("점수 입력 : ");
Scanner inputNum = new Scanner(System.in);
int score = inputNum.nextInt();
switch(score) {
case 100:
case 90:
System.out.println("A");
break;
case 80:
System.out.println("B");
break;
default:
System.out.println("Try again");
break;
}
inputNum.close();
}
}
10. 반복문
10-1 반복문이란? 프로그램을 특정 조건에 따라 반복적으로 진행하는 것
10-2. for문
package pjtTest;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("input number : ");
Scanner scanner = new Scanner(System.in);
int inputNum = scanner.nextInt();
for(int i=1; i<10; i++)
{
System.out.printf("%d * %d = %d\n", inputNum, i, (inputNum * i));
}
}
}
10-3. while문
package pjtTest;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int num = 10;
int i = 1;
while(i<10) {
System.out.printf("%d * %d = %d\n", num, i, num*i);
i++;
}
}
}
10-4. do-while문
while문과 비슷하며 차이점은 조건 결과에 상관없이 무조건 한번은 실행한다는 것이다.
package pjtTest;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int num = 1;
do {
System.out.println("최초 한번은 무조건 실행");
} while(false);
}
}
'개발 공부 > Java' 카테고리의 다른 글
자바 프로그래밍 입문 강좌 26~28. JAVA 마무리 (0) | 2020.07.05 |
---|---|
자바 프로그래밍 입문 강좌 18~25. JAVA 상속 및 클래스 (0) | 2020.07.05 |
자바 프로그래밍 입문 강좌 11~17. JAVA 객체 (0) | 2020.07.05 |
(new) 자바 프로그래밍 입문 강좌 1. 오리엔테이션 (0) | 2020.07.05 |