KT AIVLE School/JAVA

자바 시작 ( 자바 변수 및 제어문 )

Rabet 2024. 11. 26. 17:34

 

JVM : class 바이트 코드를 실행 가능

JRE : 자바를 실행시키기 위해 필요

JDK : 자바 프로그래밍 시 필요한 컴파일러 포함( .java → .class), 플랫폼에 종속적임

 

Java SE : 표준적인 자바 플랫폼

Java EE : 서버 측에서 개발하기 위한 플랫폼

 

1. Intellij IDEA 설치

Jetbrain 사에서 제작 

Ultimate는 유료지만 Community Edition은 무료입니다!

 

최고의 Java 및 Kotlin IDE인 IntelliJ IDEA를 다운로드하세요

 

www.jetbrains.com

 

- 단축키

  • 액션, 옵션 찾기 : [Ctrl] + [Shift] + [A]
  • 찾기 : [Shift] x 2
  • 자동 완성 : [Ctrl] + [Space]
  • 템플릿 보기 : [Ctrl] + J
  • 스마트 자동 완성 : [Ctrl] + [Shift] + [Space] • 문장 마지막의 세미콜론 까지 완성
  • 실행문 완성 : [Ctrl] + [Shift] + [Enter] • if, for 등 실행문 구조 완성
  • 커서 위치와 무관한 엔터 : [Shift] + [Enter]
  • 오류 해결을 위한 가이드 제시 : [Alt] + [Enter]
  • 프로젝트 빌드 : [Ctrl] + [F9]
  • 실행 : [Shift] + [F10], [Ctrl] + [Shift] + [F10]
  • 임포트 추가 : [Ctrl] + [Alt] + O
  • 코드 정렬 : [Ctrl] + [Alt] + L
  • 선택된 코드 감싸기 : [Ctrl] + [Alt] + T
  • if...else, try...catch 등
  • 이름 변경 : [Shift] + [F6]
  • 메서드 인수 정보 보기 : [Ctrl] + P
  • 선택 블록 복제 : [Ctrl] + D
  • 커서 위치 한 줄 삭제 : [Ctrl] + Y
  • 행 주석 토글 : [Ctrl] + /
  • 안쪽 실행문에서 블록으로 점점 선택 확장 : [Ctrl] + W

 

- 단축언어

  • 메인 메서드 정의 : psvm
  • 반복문 ... : itar(배열), itco(컬렉션), itli(리스트), iter(for~each)
  • System.out.println() : sout

 

- 글꼴 바꾸기

 

2. 자바 타입

기본형(프리미티브) 타입 : 값을 Stack 메모리에 저장 ☞ 지역변수에 저장되어 속도가 빠르가 단순함

참조형(레퍼런스) 타입 : 주소를 Heap 메모리에 저장 객체와 인스턴스가 저장되어 메모리 관리가 유동적

package com.example.hello;

public class IntegerValues {
    public static void main(String[] arg){
        byte a = Byte.MAX_VALUE;
        short b = Short.MAX_VALUE;
        int c = Integer.MAX_VALUE;
        long d = Long.MAX_VALUE;

        System.out.println("byte a의 값은 " + a);
        System.out.println("short b의 값은 " + b);
        System.out.println("int c의 값은 " + c);
        System.out.println("long d의 값은 " + d);
        }
}

package com.example.hello;

public class RealNumberValues {
    public static void main(String[] args) {
        float a = Float.MAX_VALUE;
        double b = Double.MAX_VALUE;


        System.out.println("fload a의 값 : " + a);
        System.out.println("doube b의 값 : " + b);
    }
}

 

자바는 정수로 나누면 정수로 계산하기 때문에 소숫점을 포함한 실수로 변환해주기 (cast)

public class CalculationDemo {
    public static void main(String[] args) {
        int i;
        long l;
        double d;

        i = 5/2;
        System.out.println("5/2 : " + i); // 2

        d = 5/2;
        System.out.println("5/2 : " + d); // 2.0

        d = (float)5/(float)2;
        System.out.println("5/2 : " + d); // 2.5

        d = 5/(float)2;
        System.out.println("5/2 : " + d); // 2.5

        d = 5.0/2.0;
        System.out.println("5/2 : " + d); // 2.5
        
        l = 10_000_000 * (long)10_000_000;
        l = 10_000_000 * 10_000_000L;
        System.out.println(l); // L을 붙이지 않으면 이상하게 나옴!
    }
}

 

- 클레스 이름 바꾸기

이름 변경한 후 Enter

 

- 문자열 비교

 

public class StringExample {
    public static void main(String[] args) {
        String greeting = "안녕하세요";
        System.out.println(greeting); //안녕하세요

        String name = new String("Java 사용자");
        System.out.println(name); // Java 사용자

        char[] charArray = {'J','a', 'v', 'a', ' ', '프', '로', '그', '래', '머'};
        String programmer = new String(charArray);
        System.out.println(programmer); // Java 프로그래머

        String fullName = "Kim" + " " + "Young";
        System.out.println(fullName); // Kim Young

        StringBuilder sb = new StringBuilder();
        sb.append("문자열 ").append("생성 ").append("예제");
        String result = sb.toString();
        System.out.println(result); // 문자열 생성 예제
    }
}

 

String a = new String("Hello") : 명시적 초기화

String a = "Hello"  : 암시적 초기화 

 

- 문자열 비교 메서드

1. compareTo

2. equals, equalsIgnoreCase

public class StringCompareExample {
    public static void main(String[] args) {
        String firstString = "Hellow World";
        String secondString = "Hellow World";
        String thirdString = "hellow World";

        int comparisonResult = firstString.compareTo(secondString);
        System.out.println("firstString과 secondString 비교: " + comparisonResult); // 0

        boolean equalsResult = firstString.equals(secondString);
        System.out.println("firstString과 secondString이 같음: " + equalsResult); // true

        comparisonResult = firstString.compareTo(thirdString);
        equalsResult = firstString.equals(thirdString);

        System.out.println("firstString과 thirdString 비교: " + comparisonResult); // -32
        System.out.println("firstString과 thirdString이 같음: " + equalsResult); // false

    }
}

 

- 문자열 조작 메서드

1. concat

2. indexOf : 시작 위치찾기

3. isEmpty()

4. length()

public class StringManipulationDemo {
    public static void main(String[] args) {
        String baseString = "Hello";
        String stringTtoConcat = " World";
        String searchString = "lo";

        String concatenatedString = baseString.concat(stringTtoConcat);
        System.out.println(concatenatedString); // Hello World

        int index = concatenatedString.indexOf(searchString);
        System.out.println(index); // 3

        boolean isEmpty = baseString.isEmpty();
        System.out.println(isEmpty); // false

        int length = concatenatedString.length();
        System.out.println(length); // 11
    }
}

 

5. substring(시작 인덱스) : 시작 인덱스부터 문자열 추출

6. toLowerCase

7. toUpperCase

8. trim : 양쪽 공백 제거

public class StringMethodsDemo {

    public static void main(String[] args) {
        String originalString = " Java Programming ";

        // substring 메서드를 사용하여 부분 문자열 추출
        String subString = originalString.substring(5);
        System.out.println("substring(5) 결과: " + subString); // "Programming "

        // toLowerCase 메서드를 사용하여 문자열을 소문자로 변환
        String lowerCaseString = originalString.toLowerCase();
        System.out.println("toLowerCase() 결과: " + lowerCaseString); // " java programming "

        // toUpperCase 메서드를 사용하여 문자열을 대문자로 변환
        String upperCaseString = originalString.toUpperCase();
        System.out.println("toUpperCase() 결과: " + upperCaseString); // " JAVA PROGRAMMING "

        // trim 메서드를 사용하여 양쪽 공백 제거
        String trimmedString = originalString.trim();
        System.out.println("trim() 결과: " + trimmedString); // "Java Programming"
    }
}

 

- 배열 생성 방법

length로 길이 재기

public class ArrayCreationDemo {
    public static void main(String[] args) {
        int[] scoreMethod1 = {100, 90, 50, 95, 85};

        int[] scoreMethod2 = new int[] {100, 90, 50, 95, 85};

        int[] scoreMethod3;
        scoreMethod3= new int[] {100, 90, 50, 95, 85};

        System.out.println("방법 1로 생성한 배열: ");
        for (int score : scoreMethod1){
            System.out.print(score+" ");
        }
        System.out.println();

        System.out.println("방법 2로 생성한 배열: ");
        for (int score : scoreMethod2){
            System.out.print(score+" ");
        }
        System.out.println();

        System.out.println("방법 3로 생성한 배열: ");
        for (int score : scoreMethod3){
            System.out.print(score+" ");
        }
        System.out.println();
    }
}

 

 

- 동적 배열 ArrayList<>

1. add(위치, 요소)

2. get()

3. size()

import java.util.*;

public class DynamicArrayDemo {
    public static void main(String[] args) {
        ArrayList<String> stringList = new ArrayList<>();

        stringList.add("Java");
        stringList.add("Python");
        stringList.add(1,"C++");

        stringList.remove("Python"); // 문자열 제거

        String elementAtIndex = stringList.get(0); // 요소 가져오기

        int size = stringList.size(); // 사이즈 가져오기

        System.out.println("인덱스 1의 요소: " + elementAtIndex); // Java
        System.out.println("ArrayList의 크기: " + size); // 2
        System.out.println("ArrayList의 현재 요소들:"); 
        for (String s : stringList){
            System.out.print(s + " "); //Java C++
        }
    }

}

 

 

- 클래스 배열 만들기 (Ball)

class Ball{
    String name;
    public void setName(String name){ this.name = name; }
    public String getName(){ return name; }
}
public class BallArrayDemo {
    public static void main(String[] args) {
        Ball[] balls = new Ball[5];
        for (int i = 0; i < 2; i++){
            balls[i] = new Ball();
            balls[i].setName((i+1)+"번 공");
        }

        System.out.println("배열의 원소들:");
        for (Ball ball : balls){
            if (ball != null){
                System.out.println(ball.getName());
            } else {
                System.out.println("null");
            }
        }
    }
}

 

 

- 열거타입 (enum)

import javax.smartcardio.Card;

enum CardType{
    DEBIT, CREDIT, PREPAID
}
public class EnumExample {
    public static void main(String[] args) {
        CardType myCardType = CardType.DEBIT;

        switch (myCardType){
            case DEBIT:
                System.out.println("직불 카드를 선택");
                break;
            case CREDIT:
                System.out.println("신용 카드를 선택");
                break;
            case PREPAID:
                System.out.println("선불 카드를 선택");
                break;
            default:
                System.out.println("알 수 없는 카드 타입");
                break;
        }
    }
}

 

 

3. 제어문의 종류

순차적인 흐름을 제어해야 하는 경우, 순차, 선택, 반복

조건문 if, if else, 삼항 연산자, switch

반복문 while, for, Enhanced for

기타제어문 : continue, break

public class DoWhileEx {
    public static void main(String[] args) {
        int i = 1, j = 1;

        while (i < 1) {
            System.out.println("while 루프 " + i + "번째 반복 ");
            i++;
        }
        System.out.println("while 루프 종료 후 i값 : " + i + "입니다.");
        do {
            System.out.println("do while 루프 " + j + "번째 반복");
            j++;
        } while (j < 1);
        System.out.println("do while 루프 종료 후 j값은 "+ j + "입니다.");
    }
}

public class ForEx {
    public static void main(String[] args) {
        int i, sum =0;
        for (i = 0; i<5; i++){
            sum +=i;
            System.out.println("for 루프 "+(i+1)+"번째 반복 실행 중");
        }
        System.out.println("for 루프 반복 종료 후 반복 횟수 : "+i);
        System.out.println("누적 합계: " + sum);

        int[] numbers = {1,2,3,4,5};
        for (int num : numbers){
            System.out.println("확장 for 루프에서 처리하는 값: "+num);
        }
    }
}

public class CtrlFlow {
    public static void main(String[] args) {
        int n = 1, s = 0;

        while (true) {
            s += n;
            if (n == 100) {
                break;
            }
            n++;
        }
        System.out.println("1부터 100까지의 합: " + s);
        for (int i = 1; i<=100; i++){
            if (!(i %5 ==0 && i % 7 == 0)){
                continue;
            }
            System.out.println(i + "는 5와 7의 배수입니다.");
        }
    }
}