java 기초 문법

moonseungha·2022년 12월 6일
1
  • project
  • package : 비슷한 역할을 하는 클래스들끼리 분류해서 관리. 폴더같은 개념
  • Class : 코드를 작성. 클래스들이 모여 하나의 java aplication 구성
  • method : 클래스의 기능(동작)에 해당하는 구현 부분
  • variable : 변수. 낙타표기법 준수

📌package

  • (default)패키지로 만들면 패키지 선언부 없음
  • (default)패키지 안의 클래스는 그 어디에서도 사용될 수 없음
  • 즉, 다른 패키지 클래스에서 생성이 불가능하기 때문에 권장하지 않음

패키지는 세 단계 이상으로 만들어주는걸 권장 (ex com.회사명.프로젝트명)
주로 도메인의 역순으로 1, 2레벨을 지정
도메인은 고유한 값이기 때문에 중복을 방지할 수 있고 제작한 곳을 파악할 수 있음

📌main method

  • 프로그램 실행시 java.exe에 의해 제일 먼저 실행되는 메소드
  • 하나의 java aplication에는 main method를 포함한 클래스가 반드시 하나는 있어야 함
package 선언부
[import 선언부]
Class 작성부
	public static void main(String[] args) {
    }

📌method

- 같은 클래스에 있는 메소드 호출

package com.sh.first;
public class ClassA{
	public void methodA() {
    	methodB();
    }
}

- 다른 클래스, 같은 패키지에 있는 메소드 호출

package com.sh.first;
public class ClassA{
	public void methodA() {
    	ClassB b = new ClassB();
        b.methodB();
}

- 다른 클래스, 다른 패키지에 있는 메소드 호출

  1. import 선언부 사용
package com.sh.first;
import com.sh.second.ClassB;
public class ClassA{
	public void methodA() {
    	ClassB b = new ClassB();
        b.methodB();
}
  1. 풀클래스명 사용
package com.sh.first;
public class ClassA{
	public void methodA() {
    	com.sh.second.ClassB b = new com.sh.second.ClassB();
        b.methodB();
}
  • print : 출력
  • println(new line) : 출력 후 줄바꿈
package 선언부
[import 선언부]
Class 작성부
	method 작성부
		System.out.print();
		System.out.peinrln();
  • 한글자(문자) 출력시 '홑따옴표'
  • 여러글자(문자열) 출력시 "쌍따옴표"
  • 실수값은 컴퓨터 안에서 불안정하기때문에 정확한 답이 나오지 않을 수 있음
  • 한글자(문자)는 컴퓨터가 인식하는 고유 숫자값을 가지고 있음
    a == 97, b == 98, A == 65
System.out.println(12);
System.out.println(1.2);
System.out.println('가');
System.out.println("가나다라");
System.out.println(12 + 34);
System.out.println(4.3 - 2.1);
System.out.println('a' + 1);
System.out.println(12 + "가나다라"); // "12가나다라"
System.out.println(7 + 7); // 14
System.out.println(7 + "7"); // "77"
System.out.println("7" + 7); // "77"
System.out.println(7 + 7 + "7"); // 14 + "7" // "147"
System.out.println("7" + 7 + 7); // "77" + 7 // "777"
System.out.println("7" + (7 + 7)); // "7" + 14 // "714"

📌printf

  • format(형식)에 맞게 출력

- Format 변환 문자

변환문자의미
%d정수(십진수)
%c유니코드문자
%bboolean 값
%sString
%f부동소수점(십진수)
%e부동소수점(과학적 표기)
%x정수(16진수)
%h해시코드(16진수)
%%리터럴'%'
%o8진수
%g대입 값 그대로
%A실수(16진수)
응용
%5d5칸의 공간 확보 후 오른쪽 정렬
%-5d5칸의 공간 확보 후 왼쪽 정렬
%C대문자로 보여줌
%S대문자로 보여줌
%.1f반올림해서 소수점 아래 첫번째자리

- escape 문자

특수문자문자 리터럴비고
tab\t정해진 공간만큼 띄어쓰기
new line\n출력하고 다음 라인으로 옮김
역 슬래시\\ 특수문자 사용시 백슬래시(\)를 넣고 특수문자를 넣어야함
작은 따옴표\'특수문자 사용시 백슬래시(\)를 넣고 특수문자를 넣어야함
큰 따옴표\"특수문자 사용시 백슬래시(\)를 넣고 특수문자를 넣어야함
유니코드\u유니코드를 표시할 때 사용
package 선언부
[import 선언부]
Class 작성부
	method 작성부
    	System.out.printf("format"[, 값, 값, ...]);
        System.out.printf("%d, %d", num1, num2);
        
        String name = "홍길동";
        char gender = '남';
        System.out.printf("%s은 %c자", name, gender); // 홍길동은 남자
  • 자리의 개수 < 값의 개수 → 자리의 개수만큼만 값이 출력됨
  • 자리의 개수 > 값의 개수 → 오류

📌Scanner

  • java.util.Scanner 클래스의 메소드를 호출해서 사용자가 키보드로 입력한 값을 읽어들임
  • System.in : 값을 읽어들일때 컴퓨터가 이해할 수 있는 byte단위로 읽어들이겠다는 의미
  • next()
    사용자가 입력한 공백(띄어쓰기) 이전까지의 값을 문자열로 읽어들임
    공백을 구분인자로 여김
  • nextLine()
    사용자가 입력한 모두를 문자열로 읽어들임
  • nextInt()
    사용자가 입력한 값을 정수값으로 읽어들임
  • nextDouble()
    사용자가 입력한 값을 실수값으로 읽어들임

작동 원리

  • 메모리
  • 입력버퍼
  1. 입력버퍼에 값과 엔터가 들어옴
  2. nextLine() 외의 메소드는 엔터를 입력버퍼에서 비워주지 않고 값만 메모리로 옮김
  3. 메모리로 옮겨진 값은 변수에 대입됨
  • nextLine() 외의 메소드는 엔터를 입력버퍼에서 비워주지 않음
    → 남아있는 엔터로인해 다음 메소드는 실행과 동시에 이미 입력한것으로 인지하고 읽어들임
    → sc.nextLine();을 기술하여 입력버퍼에 남아있는 엔터를 지워야함
package 선언부
import java.util.Scanner;
Class 작성부
	method 작성부
    	Scanner sc = new Scanner(System.in);
        
        String str = sc.next();
        String str = sc.nextLine();
        int num = sc.nextInt();
        
        sc.nextLine();
        
        double d = sc.nextDouble();

📌BufferedReader

  • 객체 생성시 복잡함
  • 문자열로만 읽어들임
package 선언부
import java.util.Scanner;
Class 작성부
	method 작성부
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        try {
        	String str = br.readLine();
            System.out.println(str);
        } catch(IOException e) {
        	System.out.println("IOException");
        }

0개의 댓글