02. 자바 기본 프로그래밍

PearLine_Zero·2023년 10월 21일

Java

목록 보기
2/7
post-thumbnail

2.1 자바 프로그램 구조

public class Hello {
 		public static int sum(int n , int m) {
    		return n + m;
    	}
    
    	public static void main(String{} args){
    		int i = 20;
    		int s;
    		char a;
    
    		s = sum(i , 10) // 메소드 출력
    		a = '?';
    		System.out.println(a); // 문자 '?' 출력
    		System.out.println("Hello"); // "Hello" 문자열 출력
    		System.out.println(s); // 정수 s 값 30 0출력
    	}
     }        

✅ 클래스 만들기

자바에서 클래스를 만들고 , 그 안에 변수, 상수 , 함수 등 모든 프로그램 요소 작성
class 클래스 이름을 선언하고 '{와}' 변수 사이에 메소드 코드 작성함.
public는 다른 클랫에서 Hello 클래스를 자유롭게 참조 가능

✅ 주석문

주석문은 프로그램에 대한 설명이나 특이 사항등을 덧붙일 때 사용 자바에서는 2가지가 있음.

  • /**/ : 여러 라인 주석
  • // : 한 라인 주석

✅ main()메소드

main()은 public static void로 선언 2개 이상 가질 수 없음.

✅ 메소드

호출방법은 반드시 클래스 내에 작성을 함 메소드는 코드에서 보이는 것처럼 sum()을 선언

✅ 메소드 호출

코드에 s = sum(1, 10); 을 말함.

✅ 변수 선언

데이터를 저장하는 공간을 말함.

✅ 문장

자바의 모든 문장은 ;로 끝나야 함.

✅ 화면출력

화면출력을 위해서는 System.out.println(); 이용함. System.out.println();은 출력 후 다음 행으로 이동하지만, 출력 후 다음 줄로 넘어가지 않음.

2.2 식별자

✅ 식별자 이름 규칙

자바에서는 식별자를 만들 때 다음 규칙을 준수해야함.

  • 특수문자(%, * , & , @, ^ 등), 공백(탭 ,space)은 식별자 사용할 수 없은 '_', '$'는 예외
  • 식별자는 한글을 사용가능
  • if , while, class 등 자바 언어 키워드는 식별자 사용 불가
  • 식별자의 첫 번째 문자로 숫자 사용 불가
  • true, false, null은 식별자 사용 불가
  • 대소문자를 구별
  • 길이 제한 없음

2.3 자바 데이터 타입

데이터 타입 이란 자바에서 다룰수 있는 데이터 종류 총 9개가 있음.

✅ 자바의 기본 타입

기본 타입 8개

  • boolean : 1바이트로 true 또는 false
  • char : 2바이트로 (C 언어와 다르게 유니코드 사용)
  • byte : 1바이트
  • short : 2바이트
  • int : 4바이트
  • long : 8바이트
  • float : 4바이트
  • double : 8바이트
    byte, short, int, long는 정수 타입 float, double 실수 타입

✅ 레퍼런스 타입 1개

다음 세 경우로 이용됨.

  • 배열에 대한 레퍼런스
  • 클래스에 대한 레퍼런스
  • 인터페이스에 대한 레퍼런스
    여기서 레퍼런스랑 C 언어의 포인터와 비슷한 개념

✅ 문자열

JDK에서 String 클래스를 이용함.
자바에서슨 다음과 같이 문자열과 기본 타입의 +연산으로 문자열을 연결함

✅ 변수와 선언

변수 데이터를 저장하는 공간 변수의 타입 크기에 맞는 메모리 공간이 할당됨.

int price

int는 데이터 타입 price는 변수 이름을 나타냄.
동일한 타입 변수를 여러 개 선언할 때 ','로 분리하여 나열이 가능.

✅ 리터럴

리터럴 프로그램에 직접 표현한 값

👉 정수의 리터럴

정수 리터럴 4가지 유형이 있으며 변수화 함께 사용하면 다음과 같음.

int n = 15; // 십진수 15
int m = 015; // 015는 8진수로서 십진수 13
int k = 0x15; // 0x15는 16진수로서 십진수 21
int b = 0b0101; // 0b01010은 2진수로 십진수 5
유형설명사례
10진수0으로 시작하지 않는 수15 -> 십진수 15
8진수0으로 시작하는 수015 -> 십진수로 계산하면 13(1X8+5=13)
16진수0x으로 시작하는 수0X15 -> 십진수로 계산하면 21(1X16+5=21)
2진수0b으로 시작하는 수0b0101 -> 십진수로 계산하면 5

자바에서 정수 리터럴은 int 타입으로 컴파일 함. long 타입을 지정시 숫자 뒤에 L 또는 ㅣ을 붙이면 됨.

👉 실수 리터럴

실수 리터럴 소수점 형태나 지수 형태로 실수로 표현한 값임.
실수는 double 타입으로 자동 처리되며 숫자 뒤에 F 또는 f 붙이며 float 타입으로, d 또는 D를 붙이면 double 타입으로 강제 변환이 가능.

👉 문자 리터럴

문자 리터럴은 단일 인용부호('')로 문자를 표현하거나 \u 다음에 문자의 유니코드값을 사용함.
특수문자 리터럴도 있으며 백슬래시() 특수 기호를 붙여서 표현함. 이를 이스케이프 시퀀스라함.

특수문자 리터럴의미
'\b'백스페이스(backspace)
'\t'탭(tab)
'\n'라인피드(line feed)
'\f'폼피드(form feed)
'\r'캐리지 리턴(carriage return)
'\"'이중 인용부호(double quote)
'\''단일 인용부호(single quote)
'\'백슬래시 (backslash)

👉 논리 타입 리터럴과 boolean 타입

논리 타입 리터럴은 true , false 두 개밖에 없고 boolean 타입 변수에 직접 치환하거나 조건문에 사용됨.

✅ var 키워드로 타입을 생략하고 변수 선언

Java 10부터는 var 키워드를 사용하여 변수의 타입 생략이 가능.

✅ 상수

상수는 final 키워드를 사용하여 선언
final double PI = 3.141592
상수는 선언 값이 초기화되면 사용이 불가능함으로 static 키워드를 선언하는 것이 더욱 바람직함.

✅ 타입변환

타입 변환이란 변수나 상수 혹은 리터럴을 다른 타입으로 변환하는 것을 말함.

👉 자동 타입 변환

치환문(=)이나 수식 내에 타입일 일치하지 않으면 큰 타입으로 자동변환

👉 강제 타입 변환

강제 타입 변환을 캐스팅이라고 부름.

2.4 자바의 키 입력

✅ System.ln

System.in은 같이 키보드 장치와 직접 연결되는 표준 입력 스트림 객체 키 값을 바이트 정보로 바꾸어 제공하는 저수준 스트림 객체
Scanner는 키 입력을 위한 목적으로 자바 패키지에서 제공되는 클래스임.

✅ Scanner를 입려한 키 입력

👉 Scanner 객체 생성

Scanner 객체는 다음과 같이 생성함
Scanner scanner = new Scanner(System.in);

👉 import문 필요

import java.util.Scanner;
Scanner를 사용하기 위해서는 프로그램 맨 앞줄에 import 문이 필요함.

👉 Scanner 클래스로 키 입력받기

Scanner 클래스는 사용자가 입력하는 키 값을 공백('\f','\r',' ','\n')으로 구분되는 토큰단위로 읽음.

👉 Scanner 스트림 닫기

scanner.close();
사용을 종료하려면 다음과 같이 닫아줌.

2.5 연산자

✅ 식과 연산자

주어진 식을 계산하여 결과를 얻어내는 과정을 연산이라고 함.
a == n
'a'과 'n' 피연산자 '=='는 연산자 종류임.

✅ 자바의 연산 종륭하 연산자

  • 증감 : ++ --
  • 산술 : + - * / %
  • 시프트 : >> << >>>
  • 비교 : > < >= <= == !=
  • 비트 : & | ^ ~
  • 논리 : && || ! ^
  • 조건 : ? :
  • 대입 : = *= /= += -= &= ^= |= <<= >>= >>>=

✅ 산술 연산

더하기(+), 곱하기(*), 나누기(/), 나머지(%)의 5개이며, /은 몫을 %나머지를 구하는 연산자임.

✅ 증감 연산자

++ , --의 두가지 이며 피연산자 앞 또는 뒤에 붙음

  • a++ : a를 1로 증가하고 증가 전의 값을 반한
  • ++a : a를 1로 증가하고 증가된 값을 반환
  • --도 마찬가지

✅ 대입 연산

대입 연산자내용
a = bb의 값을 a에 대입
a += ba = a + b와 동일
a -= ba = a - b와 동일
a *= ba = a * b와 동일
a /= ba = a / b와 동일
a %= ba = a % b와 동일
a &= ba = a & b와 동일
a ^= ba = a ^ b와 동일
a= b
a <<= ba = a << b와 동일
a >>= ba = a >> b와 동일
a >>> ba = a >>> b와 동일

✅ 비교 연산, 논리연산

비교 연산자 두 개의 피연산자를 비교하여 true 또는 false 논리 결과를 나타내는 연산자임.
논리 연산자는 논리 값을 AND,OR,XOR,NOT의 논리연산을 하여 논리 값을 내는 연산자임.

✅ 조건 연산

조건 연산자는 세 개의 피연산자로 구성되어 삼항 연산자라고 함.
condition ? opr2 : opr3
condition 조건이 true이면 op2를 따르고 false이면 opr3를 실행이 됨.

✅ 비트 연산

비트연산은 비트끼리 연산을 하는 비트 논리 연산과 비트를 오른쪽 왼쪽으로 이동시키는 비드 시프트 연산이 있음.

👉 비트개념

컴퓨터의 모든 정보는 0과 1을 가지는 2진수로 다루고 있음.
2진수의 한 자리를 비트라 부르며, 8개의 비트를 바이트라고 함.

👉 비트 논리 연산

비트 논리 연산은 AND, OR, XOR, NOT총 4개의 연산을 가짐

  • a&b : AND 연산자로 두 비트 모두 1이면 1 그렇지 않으면 0
  • a|b : OR 연산자로 두 비트 모두가 0이면 0 그렇지 않으면 1
  • a^b : XOR 연산자로 두 비트가 다르면 1, 같으면 0
  • ~a : NOT 연산자로 1을0으로, 0을 1로 변환

✅ 시프트 연산자

시프트 연산자 역시 각 비트들을 대상으로 연산이 이루어짐.

2.6 조건문

자바의 조건문은 if-else 문이나 switch문으로 분류됨.

✅ 단순 if문

if (조건식) {
	...실행문장...
}
  • 조건식은 비교 연산이나 논리 연산의 혼합된 식으로 구성.
  • 조건식이 참이면 실행문장 실행 거짓이면 if문을 벗어남.
  • 조건식은 논리 타입 변수 하나만으로 가능하며 실행 문장이 여러 개의 문으로 구성된 중괄호{ }사이에 묶어 한번에 실행이 가능.
  • { } 중괄호에 사이에 묶인 여러 문장을 실행문장이라 하며 한 문장뿐이면 중괄호생략 가능함.

✅ if-else문

if 조건식이 참인 경우와 거짓인 경우에 실행할 문장을 각각 지시함.
조건식이 true이면 실행문장1을 실행 false인 경우 실행문장2를 실행한 후 if-else를 벗어남.

if(조건식) {
	...실행문장1... // 조건식이 참인 경우
}
else {
	...실행문장2... // 조건식이 거짓인 경우
}

✅ 다중 if-else문

다중 if-else 문은 if-else가 연속되는 것을 말함.

if(조건식1) {
	...실행문장1... // 조건식1이 참인 경우
}
else if(조건식2) {
	...실행문장2... // 조건식2이 참인 경우
}
else if(조건식3) {
	...실행문장3... // 조건식3이 참인 경우
}
else {
	실행문장 n; // 앞으 모든 조건이 거짓인 경우
}

✅ switch문

switch(식)
case 값1 : //식의 결과가 값1과 같을 때
	실행문장1;
    break;
case 값2 : //식의 결과가 값2과 같을 때
	실행문장2;
    break;
case 값3 ://식의 결과가 값3과 같을 때
	실행문장3;
    break;
default :
	실행문장 n; //어느 것과도 같지 않을 때
  • switch문은 먼저 을 계산하고 그 결과 값과 일치하는 case문으로 분기함.
  • case 문은 실행문장을 실행한 후 break을 만나면 switch문을 벗어남.
  • 실행문장이 여러개라도 중괄호{ }둘러싸지 않는다는 점.
  • case문의 값과도 같지 않는 경우 default문으로 분기하며 실행 문장 n을 실행하며
    default문은 생략가능

👉 swich문에서 break문의 역할

case에서 실행문장이 실행되고 만난 break는 swtich문을 벗어나게 해주는 것으로 중요함.
만약 break문이 없으면 만날 때까지 실행됨.

👉 case 문의 값

case 문에 지정하는 값은 정수 리터럴, 문자 리터럴, 문자열 리터럴(JDK 1.7부터 가능)만 허용됨,

profile
https://baesaa0304.tistory.com 블로그 이사합니다~

0개의 댓글