본문 바로가기

JAVA

자바 기초 1

변수 : 뚜껑을 열었다 닫았다 할 수 있는 상자

상수 : 뚜껑을 다시는 열 수 없는 상자

 

class Main {


public static void main(String[] args) {


int intType = 100; // 정수형
double doubleType = 150.5; // 실수형
String stringType = "나동빈"; // 문자형


System.out.println(intType); // 출력
// System.out.println();은 ()내용 출력 뒤에 한 칸 줄바꿈
System.out.println(doubleType);
System.out.println(stringType);
}
}

 

변수

class Main {


  final static double PI = 3.141592;
  // final : 한 번 선언되면 바뀌지 않는다
  // static : 하나의 클래스에서 공유하는 자원
  // double : 실수형을 의미


  public static void main(String[] args) {
    int r = 30;
    System.out.println(r * r * PI);

  }
}

 

오버플로우

class Main {

  final static int INT_MAX = 2147483647;
  // int형 자료형이 가질 수 있는 가장 큰 값


  public static void main(String[] args) {
    int a = INT_MAX;
    System.out.println(a);


    // a+1을 출력시 최소값


  }
}

 

사칙연산 계산

class Main {


  public static void main(String[] args) {
    int a = 1;
    int b =2;


    System.out.println("a + b = " + (a+b));
    // ""안에 있는 부분은 문자열, +를 한 다음 ()안에 적은건 정수형 결과
    System.out.println("a - b = " + (a-b));
    System.out.println("a * b = " + (a*b));
    System.out.println("a / b = " + (a/b));

  }
}

 

형변환

class Main {


  public static void main(String[] args) {
    
    int a = (int) 0.5;
    // 실수형을 정수형으로 형변환


    System.out.println(a);
    // 0이 나온다
    // 실수형을 정수형으로 바꾸면 소수점 자리 부분이 제거

  }
}

실수 값을 반올림 할 때는 변수에 0.5를 더한 뒤 정수형으로 형변환
 즉, 반올림한 값 = (int)(실수 + 0.5);

class Main {


  public static void main(String[] args) {
    
    double b = 0.5;
    int a = (int) (b + 0.5);
    // b는 어떠한 실수값이든 0.5를 더하고 int형으로 바꿔주기 때문에 항상 반올림이 된 값만 출력
  
    System.out.println(a);
  }
}

 

자료형

: 그때 그때마다 사용할 수 있는 나에게 필요한 데이터 타입을 만들어준다

프로그램에서 표현하고싶은 데이터 형태를 정의한다.

 

- 원시자료형 Primitiave

 : boolean, char, byte, shor, int, long, float, double

 

- 비원시자료형 Non-Primitive

: 다른 자료형들을 엮어 만든 개념 String, Array

(substring 같은 내부적인 함수가 존재함 그래서 비원시자료형)

 

double형을 이용하여 평균 구하기

class Main {


  public static void main(String[] args) {
    
    double a = 10.3;
    double b = 9.6;
    double c = 10.1;
    
    System.out.println((a + b + c)/3);
  }
}

 

아스키코드 기반의 char형을 사용해 a부터 z까지 출력

class Main {


  public static void main(String[] args) {
    
    for (char i = 'a'; i < 'z'; i++){
      // 아스키코드를 사용하여 컴퓨터 내부적으로 1씩 증가시키기
      System.out.println(i + " ");
      // " "으로 한 칸 띄어쓰기 만들기

    }
  }
}

 

10진수를 8진수 혹은 16진수로 바꾸어 출력

소수점 표기 형식을 지수 형식으로 출력하고 싶으면 %e 사용

class Main {


  public static void main(String[] args) {


    int a = 200;
    
    System.out.println("10진수 : " + a);
    System.out.format("8진수 : %o \n", a);
    // %o는 형식지정자, a값은 %o의 위치에 들어가게됨
    // %o가 의미하는 것은 어떤 10진수 정수를 8진수로 출력해라


    System.out.format("16진수 : %x", a);
  }
}

 

String의 substring 함수를 활용해보기

String은 내부적으로 char 배열로 되어있다.

String은 클래스 기반의 비원시적 자료형

public class Main {


  public static void main(String[] args) {


    String name = "John Doe";
    System.out.println(name);
    System.out.println(name.substring(0, 1));
    // 앞 0은 문자의 몇번째 자리를 출력할 건지
    // 뒤 1은 총 마지막 자리가 몇번째 자리인지
    System.out.println(name.substring(3, 6));
    // 세번째 문자열 n부터 6번째 문자열 D까지 출력


    System.out.println(name.substring(5, 8));
    
  }
}

 

연산자

1+2 에서 1,2는 피연산자 +는 연산자

 

초를 입력 받아 몇 분 몇 초인지 계산하는 프로그램

public class Main {


  final static int SECOND = 1000;


  public static void main(String[] args) {


    int minute = SECOND / 60;
    // 분은 초를 60으로 나눈 것
    int second = SECOND % 60;
    // 초는 60으로 나눈 나머지

    System.out.println(minute + "분" + second + "초");
    
  }
}

 

 

==, ><, &&, ||, ! 연산의 개념을 이해하고 프로그램 작성

&& : AND 연산자

|| : OR 연산자

public class Main {


  public static void main(String[] args) {
    int a = 50;
    int b = 50;
    
    System.out.println("a와 b가 같은가요?" + (a == b));
    System.out.println("a가 b보다 큰가요?" + (a > b));
    System.out.println("a가 b보다 작은가요?" + (a < b));
    System.out.println("a와 b가 같으면서 a가 30보다 큰가요?" + ((a == b) && (a > b)));
    // AND 연산자니까 좌 우 둘 다 참일시 참
    System.out.println("a가 50이 아닌가요?" + !(a == 50));
  }
}

 

'조건 ? 참 : 거짓' 연산의 형태를 숙지하고 프로그램 작성

public class Main {


  public static void main(String[] args) {


    int x = 50;
    int y = 60;
    
    System.out.println("최댓값은" + max(x, y) + "입니다.");
  }


  // 반환형, 함수 이름, 매개 변수로 구성
  static int max(int a, int b){
    // a와 b 중 더 큰 값을 반환하는 max라는 함수
    // main mathod에서 함수를 사용하려면 함수 앞에도 static 붙이기
    int result = (a > b) ? a : b;
    return result;


  }
}

 

pow()를 이용한 거듭제곱 연산 프로그램을 작성


public class Main {


  public static void main(String[] args) {


    double a = Math.pow(3.0, 20.0);
    // 3의 20 제곱이 a라는 변수에 담긴다


    System.out.println("3의 20제곱은" + (int) a + "입니다.");
  }


  
}

 

100 < x < 200은 (100 < x) && (x < 200)로 표현해야한다. (&& - AND 연산자)

i++  (i +=1) (i = i + 1) 셋 다 같은 표현 모두 1만큼 증가시킨다.

 

조건문 & 반복문

조건문 : 조건에 따라 결정 내리는 것

반복문 : 반복적으로 같은 처리를 되풀이

 

 

If 문을 이용하여 문자열이 특정 문자열을 포함하는지 확인하는 프로그램

public class Main {


  public static void main(String[] args) {


    String a = "I Love You.";
    // String은 하나의 문자열을 의미하는 자료형, 비원시적이고 클래스 기반으로 만들어짐 그래서 내부적인 함수를 가질 수 있다

    if (a.contains("Love")) {
      // contains는 자바가 제공하는 하나의 함수, String에서만 제공해주는 특별한 기능
      // 특정한 a라는 변수가 어떠한 문자열을 포함하는지 검사하는 역할
      // if를 통해 Love를 포함하는 경우 실행되는 부분
      System.out.println("Me Too.");
    } else {
      // 포함하지 않는 경우 실행되는 부분
      System.out.println("I Hate You.");

    }
  }
}

 

점수에 따라서 다른 메세지를 출력하는 프로그램

public class Main {


  public static void main(String[] args) {
    int score = 95;


    if (score >= 90) {
      System.out.println("A+입니다.");
    }
    else if (score >= 80) {
      System.out.println("B+입니다.");
    }
    else if (score >= 70) {
      System.out.println("C+입니다.");
    }
    else {
      System.out.println("F입니다.");
    }


  }
}

 

문자열과 정수형을 각각 조건문을 이용해 활용해보고 그 차이점을 공부하기

public class Main {


  public static void main(String[] args) {


    String a = "Man";
    int b = 0;


    // 자바는 String을 비교할 때 equal()을 이용
    // 그 이유는 String은 다른 자료형과 다른 문자열 자료형이기 때문


    if (a.equals("Man")){
      System.out.println("남자입니다.");
    }
    else {
      System.out.println("남자가 아닙니다.");
    }
    
    if (b == 3){
      System.out.println("b는 3입니다..");
    }
    else {
      System.out.println("b는 3이 아닙니다..");
    }


    if (a.equalsIgnoreCase ("man") && b == 0 ){
      // 대소문자를 무시하고 같은지 보기
      System.out.println("참입니다.");
    }
    else {
      System.out.println("거짓입니다.");
    }
  }
}

 

while을 이용하여 1부터 1000까지의 합을 출력하는 프로그램

while : 어떠한 상태일 때 얼마동안 실행시켜라

public class Main {


  public static void main(String[] args) {


    int i = 1, sum = 0;
    while (i <= 1000) {
      sum += i++;
      // 1 부터 1000까지의 합이 sum에 담긴다.
    }
    System.out.println("1부터 1000까지의 합은" + sum + "입니다.");


  }
}

 

for문을 이용하여 삼각형을 출력하는 프로그램

public class Main {


  final static int N = 30;


  public static void main(String[] args) {


    // for문 : 초기화 부분, 조건 부분, 연산 부분
    for (int i = N; i > 0; i--){


      for (int j = i; j > 0; j--){
        System.out.print("*");
      }
      System.out.println();
      // 줄바꿈 시행
       
    }
  }
}

 

for문을 이용하여 원을 출력하는 프로그램

public class Main {


  final static int N = 15;


  public static void main(String[] args) {


    // x^2 + y^2 = r^2
    for (int i = -N; i <= N; i++) {
      for (int j = -N; j <= N; j++){


        if (i*i + j*j <= N*N){
          System.out.print("*");
        }
        else {
          System.out.print(" ");
        }
      }
      System.out.println();
    }
     
    }
  }

 

 

for(;;)는 while(true)와 똑같이 무한 루프라는 의미

break로 빠져 나올 수 있다.

public class Main {


  public static void main(String[] args) {
    int count  = 0;


    for (;;) {
      System.out.println("출력");
      count ++;
      if (count == 10){
        break;
      }
    }
   }
 }

 

기본 입출력

: Scanner 클래스를 이용하여 사용자와의 상호작용

 

특정한 정수를 입력 받아서 그대로 출력하는 프로그램

import java.util.Scanner;


public class Main {


  public static void main(String[] args) {
    
    Scanner sc = new Scanner (System.in);
    //System.in은 콘솔창에서 입력하는 데이터

    System.out.print("정수를 입력하세요 : ");
    int i = sc.nextInt();
    // 콘솔창에 입력되는 정수들을 받아서 i라는 변수에 넣어준다.


    System.out.println("입력된 정수는 " + i + "입니다.");
    sc.close();
    // 프로그램이 안정적으로 종료되기 위하여 씀
  }
}

 

파일에 차례로 입력된 모든 정수에 100을 곱해 출력하는 프로그램

input.txt

70 580 30 102 503
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;


public class Main {


  public static void main(String[] args) {
    
    File file = new File ("input.txt");
    // input.txt라는 파일을 읽어와서 file 변수가 그것을 처리할수 있게 해줌


    try {
      Scanner sc = new Scanner (file);
       // file을 매개변수로 file을 통해 입력 받기

      while(sc.hasNextInt()){
      //sc가 읽어올 파일에서 다음으로 읽을 정수가 있는지
         
        System.out.println(sc.nextInt() * 100);
        // 다음 정수를 읽어 온 다음에 100을 곱해 출력
      }
      sc.close();
      // 파일 입출력이 끝났을때 입력


    } catch (FileNotFoundException e){
      System.out.println("파일을 읽어오는 도중에 오류가 발생했습니다.");
      // 예외처리구문
    }
  }
}

 

자바에서는 Scanner 클래스만 잘 활용해도 다양한 입출력 형태를 자유자재로 구사할 수 있다.

자바는 입력을 받을 때 기본적으로 Scanner 클래스를 사용

Scanner로 문자열을 입력 받고 싶을 때에는 next() 함수와 nextLine()을 적절히 사용할 수 있다.

 

연습문제

1. 자신의 이름을 출력하는 프로그램

import java.util.Scanner;


public class Main {


  public static void main(String[] args) {


    System.out.println("이현");
  }


}

 

2.

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

System.out.println(10 + 10);
System.out.println(30 * 30);
System.out.println(20 - 5);
System.out.println(40 / 3);
System.out.println(395 % 18);
}

}

의 실행 결과 써보기

20
900
15
13
17

 

3. 

**********

**********

**********

**********

**********

**********

**********

**********

**********

**********

사각형 모양을 출력하는 프로그램

import java.util.Scanner;


public class Main {


  public static void main(String[] args) {


    for(int i = 1; i <=10; i++){
      for(int j = 1; j <=10; j++){
        System.out.print("*");
      }
      System.out.println(); // 줄바꿈
    }
  }
}

 

 

 

 

 

'JAVA' 카테고리의 다른 글

자바 기초 6 (상속)  (0) 2021.10.13
자바 기초 5 (클래스)  (0) 2021.10.13
자바 기초 4 (배열)  (0) 2021.10.13
자바 기초 3 (반복 함수와 재귀 함수)  (0) 2021.10.13
자바 기초 2 (객체지향)  (0) 2021.10.12