문법/기본 문법
자바 기초
코딩 화이팅
2023. 1. 16. 13:11
운영체제와 프로그램
- 프로그램 : 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 모임(집합)
- 애니악(ENIAC) : Electroinic Numerical Inthgrator And Computer
- 운영체제 : 시스템 하드웨어를 관리할 뿐 아니라 응용 소프르퉤어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어
자료구조
- 어떻게 data structure들을 저장하고 접근하고 수정하는 수단, 방법
- 배열, 연결리스트, 스택, 큐, 맵, 트리, 그래프
컴퓨터의 자료표현
- 비트(Bit) : Binary Digit / 컴퓨터 값을 지정할 수 있는 최소 단위
- 바이트(Byte) : 8비트 / 정보의 최소 단위
자바 가상 머신(JVM, Java Virtual Machine)
- 자바 바이트 코드를 실행할 수 있는 주체
- 자바 바이트코드는 플랫폼에 독립적이며 모든 JVM은 자바 가상 머신 규격에 정의된대로 자바 바이트코드를 실행
- JDK : 개발자 도구 + 개발에 필요한 도구(컴파일러, 디버거)
- JRE : 자바 실행 환경(JVM 포함)
- Android : 달빅 가상 머신(.dex)
Main Method
- 실행 명령인 java를 실행 시 가장 먼저 호출되는 부분
주석
- // : 해당 기호가 있는 위치부터 그 줄 끝까지 주석처리
- /* 내용 */ : 해당 범위의 내용 주석처리
- /** 내용 */ : Documentation API를 위한 주석 처리
출력
- print : 문자열
- println : 문자열 + \n
- printf :
%d : 정수
%f : 실수
%c : 문자
%s : 문자열
package day0116;
public class Test03_Print {
public static void main(String[] args) {
// print: "문자열"
// println: "문자열" + "\n"
// printf: %d, %s, %c, ... 형식지정자
System.out.print("Hello SSAFY!\n");
System.out.print("Hello Great 9th!\n");
System.out.println("\\");//역 슬래쉬 출력
System.out.println("\"");//" 출력
System.out.printf("%d\n", 10);
System.out.printf("%4d\n", 10); // 4칸을 확보한 다음, 오른쪽 정렬
System.out.printf("%-4d\n", 10);// 4칸을 확보한 다음, 왼쪽 정렬
System.out.printf("%04d\n", 10);//4칸을 확보한 후 오른쪽 정렬하고 남는 자리는 0출력
System.out.printf("%f\n", 10.1);//소수점 6째자리까지 출력
System.out.printf("%f\n", 10.12345678);//소수점 6째자리까지 반올림하여 출력
System.out.printf("%.2f\n", 10.12345678);//소수점 둘째자리까지 반올림
}
}
//
Hello SSAFY!
Hello Great 9th!
\
"
10
10
10
0010
10.100000
10.123457
10.12
변수
- 데이터를 저장할 메모리의 위치를 나타내는 이름
- 메모리 상에 데이터를 보관할 수 있는 공간을 확보
- 적절한 메모리 공간을 확보하기 위해서 변수의 타입 등장
- '='을 통해서 CPU에게 연산작업을 의뢰
자료형
- 기본 자료형과 참조 자료형
- 기본 자료형
형변환
- 묵시적 형변환 : 작은 -> 큰
- 범위가 넓은 데이터 형에 좁은 데이터 형을 대입하는 것
- 예) byte b=100; int i=b;
- 명시적 형변환 : 큰->작은
- 범위가 좁은 데이터 형에 넓은 데이터 형을 대입하는 것
- 형 변환 연산자 사용 - (타입)값;
- 예) int i=100; byte b=i; (불가능) byte b =(byte) i;
- short=양수 음수
- char=양의 정수
연산자
- 단항 연산자
- 전위형 ++i : 먼저 변수의 값을 변화시키고->사용
- 후위형 i++ : 먼저 변수의 값을 사용->변화
- 비트 연산자
~0 : 1
~1 : 0 - 형 변환 연산자 : 명시적 형변환
- 정수와 정수의 연산=정수
- 정수와 실수의 연산=실수
- 둘 중 하나가 double :둘 다 double로 바꿔줌
- 둘 중 하나가 float : 둘 다 float
- 둘 중 하나가 long : 둘 다 long
- String 변수 비교할 때 equals()사용
- &&:논리 곱 / 피연산자 모두가 true일 때만 true
- ||: 논리 합 / 피연산자 중 하나라도 true일 경우 true
- | : 논리 부정 / 피연산자의 결과를 반대로 바꾼다.
- 삼항 연산자
조건식 ? 식1 : 식2
조건식이 진실->식1 실행
조건식이 거짓->식2 실행 - 복합 대입 연산자
i+=1->i=i+1
조건문
if
- 조건식의 결과에 따라 블록 실행 여부가 결정
if else
- 조건식이 참일 경우 if 블록의 문장들을 실행하고, 거짓일 경우 else 블록의 문장들을 실행
if - else if - else
- 조건식이 참일 경우 해당 블록의 문장들을 실행하고, 거짓을 경우 다음 조건식을 확인한다.
Switch
switch(수식){
case 값1:
실행문A;
break;
case 값2:
실행문B;
break;
default://else 역할과 비슷
실행문C;
}
반복문
for
- for(1. 초기화식; 2. 조건식; 4. 증감식){
3. 반복 수행할 문장
} - 초기화식, 증감식은 ','를 이용하여 둘 이상을 작성할 수 있음
While
- while(1. 조건식){
2. 반복 수행할 문장;
} - 조건식이 true일 경우에 계속해서 반복(무한 루프 가능, break 필수)
import java.util.Scanner;
public class Text04_While {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//1을 입력 받으면 계속 반복
//그 외의 값이면 종료(반복X)
int num = sc.nextInt();
while(num==1) {
System.out.println("블록을 실행합니다.");
num=sc.nextInt();
}
}
}
Do while
package 연습;
import java.util.Scanner;
public class 연습 {
public static void main(String[] args) {
// 1을 입력받으면 계속
// 1 이외의 값이면 종료
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
do {
System.out.println("블록을 실행합니다.(단, 첫번째에 한해서는 무조건 실행해요. 0이든 1이든 상관없어요.)");
num = sc.nextInt();
} while(num == 1);
System.out.println("프로그램의 끝.");
}
}
//
0
블록을 실행합니다.(단, 첫번째에 한해서는 무조건 실행해요. 0이든 1이든 상관없어요.)
0
프로그램의 끝.
- do{
1. 반복 수행할 문장;
}while (2. 조건식); - break : switch, while, do-while, for 문의 블록에서 빠져나오기 위해서 사용
- continue : 반복문의 특정지점에서 제어를 반복문의 처음으로 보냄.
public class Text06_break {
public static void main(String[] args) {
for(int i=0;i<10;i++) {
if(i==3) break;
System.out.println(i);
}
}
}
public class Text07_continue {
public static void main(String[] args) {
// for(int i=0;i<10;i++) {
// if(i==3) continue;//건너뛴다.
// System.out.println(i);
// }
// outer: for(int i=0; i<3; i++) { //outer를 coutinue를 통해 건너뛰고 싶은 반복문 앞에 추가
// for(int j=0; j<3; j++) {
// if(i==1) continue outer; // 건너뛸 반복문을 설정
// System.out.println(i+","+j);
// }
// }
//위 이중 반복문은 0,0~2,2까지 출력
outer: for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
if(i==1) break outer;
System.out.println(i+","+j);
}
}
}
}
//
0
1
2
4
5
6
7
8
9
0,0
0,1
0,2
1,0
2,0
2,1
2,2