자바 문법 한눈에 정리 1편

자바는 학교에서 많이 배웠지만 뭔가 한번에 정리가 안된 느낌이라 코딩시 사용 가능한 문법에 한 해 정리해보고자 함

main


main 메서드에서 제일 먼저 시작

public class Main{
	public class void main(String[] args){

	}
}

println


  • 결과값을 내주는 함수, 문자열, 숫자, 수식, 변수, 변수에 수식도 사용 가능

  • 참고로 변수는 값을 지정하고 다시 갱신 가능

public class Main{

	public class void main(String[] args){
		int x =30; //변수
		System.out.println("Hello World"); //문자열 
		System.out.println(35 + 30); //수식
		System.out.println(x + 30); //변수의 수식

		x = 40;
		System.out.println(x); // x 값은 위와 상관없이 40으로 초기화 
	}
}

final


값을 변경하기 싫을 때 사용하는 것, 상수

public class Main{

	public class void main(String[] args){
		final int y = 30;
		y = 40; //에러가 뜨게 됨
	}
}

데이터 타입 + 리터럴


public class Main{

	public class void main(String[] args){
		int x = 30; 
		long l = 30L; //int보다 더 큰 숫자를 표현하기 위함, 뒤에 시호를 붙여줌
		short s = 30; //int보다 작은 숫자
		byte b = 30; //short보다 더 작은 숫자
		
		//실수
		double dd = 30.0; //double이 float보다 더 넓은 범위의 실수를 담을 수 있음 
		float ff = 30.0f; 

		//참, 거짓(if문에서 주로 사용)
		boolean isMarred = ture;
		isMarried = false;

		//문자열
		char c ='a' //한글자만
		char cc = '한' 

		//문자열 여러개,주로 사용
		String str = "여러, 글자"
		
		
		System.out.println(x);
	}
}

자동 형변환(강제, 자동)


public class Main{

	public class void main(String[] args){
		int x = 30; 
		long l = 30L; //int보다 더 큰 숫자를 표현하기 위함, 뒤에 시호를 붙여줌
		short s = 30; //int보다 작은 숫자
		byte b = 30; //short보다 더 작은 숫자

		int i = (int)30L; //오른쪽에 있는 long이 더 크기 때문에 **강제형 변환**(int)를 앞에 넣어줌 
		long ll = 30; //작은 값이 큰 상자에 들어감 , **자동형변환**

		//실수
		double dd = 30.0; //double이 float보다 더 넓은 범위의 실수를 담을 수 있음 
		float ff = 30.0f; 

		
		dd = ff; //자동형변환
		ff = (float) dd; //강제 캐스팅하여 형변환**[큰 타입이 작은 타입에 들어갈 때]**

		//참, 거짓(if문에서 주로 사용)
		boolean isMarred = ture;
		isMarried = false;

		//문자열
		char c ='a'; //한글자만
		char cc = '한'; 

		//문자열 여러개,주로 사용
		String str = "여러 글자";
		

	}
}

문자열 포맷


public class Main{

	public class void main(String[] args){

		//문자열 여러개,주로 사용
		String str = "여러 글자";
		

		System.out.printf("저는 %s입니다. 나이는 %d살이고요, 키는 %fcm입니다.\\n","홍길동", 20, 180.5f); //뒤에 인자를 넣어줌
	
		String str2 = String.format("저는 %s입니다. 나이는 %d살이고요, 키는 %fcm입니다.","홍길동", 20, 180.5f);
		System.out.println(str2);
		
	}
}

Math


public class Main{

	public class void main(String[] args){

		System.out.println(Math.max(10,30)); //큰 수 출력 30
		System.out.println(Math.min(10,30)); //작은 수 출력 10
		System.out.println(Math.min(-30)); //절대값 출력 30
	}
}

문자열 숫자 상호 변환


public class Main{

	public class void main(String[] args){

		String str = "100";
		int i = Integer.parseInt(str); //숫자로 변환 출력시 100
		long l = Long.parseLong(str); //long으로 변환 출력시 100
			
		String str2 = String.valueOf(i); //숫자를 다시 문자열로 변환 "100"
		
		System.out.println(i);	
		System.out.println(str2);
	}
}

Random


public class Main {

    public static void main(String[] args) {
	 Random random = new Random();
     int rand = random.nextInt(10); //10까지 중 하나를 랜덤

    // 0 ~ 9 => 5 ~14
    // 5 ~ 9 4개 중 하나를 랜덤으로 뽑고 싶어

    int randd = random.nextInt(4)+5; //5~9

     System.out.println(rand);
     System.out.println(randd); 
    }
}

키보드 입력


문자열 입력을 받는 경우, 자바를 가지고 알고리즘을 푼다는 등

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        String str = scanner.next(); //문자열
        int i = scanner.nextInt(); //숫자
        long l = scanner.nextLong(); //long

        System.out.println(scanner.next()); //string을 받겠다. 문자열을 입력을 치면 출력
    }
}

If 문


public class Main {
    public static void main(String[] args) {
        int i = 4;

        if(i<3){ //3보다 작은 수
            System.out.println("참");
        } else if (i<5) { //3이상 5미만
            System.out.println("거짓");
        } else{ // 5이상
            System.out.println("나머지");
        }
    }
}

삼항연산


public class Main {
    public static void main(String[] args) {
        boolean isMarred = true;

        String str; //결혼을 했다 안했다 라는 문자를 담음

        str = isMarred? "결혼했다" : "결혼을 안 했다"; // **str = 조건?참:거짓**
        
        System.out.println(str); //결혼했다
    }
}

위의 삼항 연산을 if문으로 나타내자면

public static void main(String[] args) {
        boolean isMarred = true;

        String str; //결혼을 했다 안했다 라는 문자를 담음

        if(isMarred){
            str = "결혼 했다";
        } else {
            str = "결혼 안 했다";
        }

        System.out.println(str); //결혼했다
    }

논리연산, 부정연산


AND, OR, NOT

isMarred && isMan //AND 둘 다 맞아야 함

isMarred || isMan // OR 둘 중 하나

isMarred || !isMan // !을 앞에 붙이면 NOT 참이 거짓이 되고 거짓이 참이 됨

Switch 문


public class Main {
    public static void main(String[] args) {
       
        String str; //결혼을 했다 안했다 라는 문자를 담음
        
        switch (str){ //boolean은 조건으로 들어가지 못함 switch(조건)
            case "결혼 했다" : // case ___ :
                System.out.println("O"); //출력
                break; //break를 안쓰면 쓱 빠져나옴 꼭
            case "결혼 안 했다" :
                System.out.println("X");
                break;
            default: //마지막에 default
                System.out.println("?");
        }

        System.out.println(str); 
    }
}

반복문 - For 문


반복문이 필요한 이유

반복문은 프로그래밍에서 가장 중요한 요소 중의 하나다. 인간은 반복적인 작업을 할때 실수하고 지루해한다. 그것은 실수로 이어진다. 컴퓨터는 이런 반복적인 작업을 대행하기 위해서 만들어진 기계다. 반복문은 컴퓨터에게 반복적인 작업을 지시하는 방법

for(int i =0; i<10; i++){ 
//for(초기화; 변수의 조건; 블럭을 한 번 실행 후 어떻게 변화할 것인지)
          System.out.println(i);
      }

While 문


int i =0; //초기화
      while (i<10){ //while(조건문)
          System.out.println(i);
          i++;
      }

Do-While문


int i=0; //초기화
      do{
          System.out.println(i);
          i++;
      }while(i<10); //while(조건) 무조건 1번은 실행함

Break문


멈추고 싶을 때 사용

public class Main {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) { //for(초기화; 변수의 조건; 블럭을 한 번 실행 후 어떻게 변화할 것인지)
            System.out.println(i);
            if(i == 6){
                break; //**6을 만나면 for문이 멈춤**
            }
        }

    }

Countinue문


public class Main {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) { //for(초기화; 변수의 조건; 블럭을 한 번 실행 후 어떻게 변화할 것인지)
            System.out.println(i);
            if(i == 6){
                continue; //**6만 빼고 출력됨** if문의 조건만 빼고 출력해라
            }
        }

    }
}

배열 및 예외


똑같은 타입의 변수를 여러개 가져야 할 때 유용함

public class Main {
    public static void main(String[] args) { //배열은 원래 초기화가 모두 0으로 되어있음
        int[] score = new int[]{10,20,30,40,50}; //초기화와 같이 선언도, 5개의 변수를 가짐, 변수 값을 넣어줌
        int count = score.length; //length : 배열의 길이를 알려줌
        System.out.println(count); //5가 출력
        
        System.out.println(score[0]); //출력값 10
    }
}
int[] score = new int[5]; //5개의 변수를 가짐

int[] score = {10, 20, 30, 40, 50} //= int[] score = new int[]{10,20,30,40,50};

인덱스는 1부터가 아닌 0부터 이다. 즉, 10은 인덱스 0 20은 인덱스 1 이런식이다. 변수의 개수 - 1이 최종 인덱스 번호

System.out.println(score[score.length -1 ]);

null과 NullPointerException


NullPointerException의 경우, null인 값을 참조시 뜨는 에러

public class Main {
    public static void main(String[] args) { //배열은 원래 초기화가 모두 0으로 되어있음

        String[] names = new String[2];

        System.out.println(names[0]); //변수의 값을 넣어주지 않아 문자열은 null이 뜸
        System.out.println(names[0].length()); //nullPointerExcepion이라는 에러가 뜸

    }
}

ArrayList


  • 자바의 List 인터페이스를 상속받은 여러 클래스 중 하나

  • 일반 배열과 동일하게 연속된 메모리 공간을 사용

  • 배열과의 차이점은 배열이 크기가 고정인 반면 ArrayList는 크기가 가변적으로 변화함

  • 사용 이유 : 중간에 값을 변동하기가 쉽다.

  • 내부적으로 저장이 가능한 메모리 용량(Capacity)이 있으며 현재 사용 중인 공간의 크기(Size)가 있다.

  • 만약 현재 가용량(Capacity) 이상을 저장하려고 할 때 더 큰 공간의 메모리를 새롭게 할당한다.

public class Main {
    public static void main(String[] args) { //배열은 원래 초기화가 모두 0으로 되어있음

        ArrayList<Integer> scoreList = new ArrayList<>(); //타입 지정
        scoreList.add(10); //변수의 값을 넣어줌
        scoreList.add(20);
        scoreList.add(30);
        scoreList.add(40);
        scoreList.add(50);

        scoreList.add(2,200); //2번째 인덱스에 200으로 바꾸고 싶다다
        scoreList.remove(2); // 그 전에 있던 값을 뺀다. remove

        System.out.println(scoreList.size()); //arrayList의 크기 5
        System.out.println(scoreList.get(3)); // 인덱스 사용

    }
}

Last updated