TIL - 22.11.07(자바 강의)

0

TIL

목록 보기
6/126

배운거

자바 문법 강의

기초

변수 : '그것', 바꿔줄 수 있음 (int, String)
상수 : '사과', 바꿀 수 없음 (final int, final String)
camelCase : finalNumber와 같이 첫 음절 시작은 소문자, 두번째 음절 시작은 띄지 않고 대문자로 시작, 낙타의 등 모습과 비슷하다.

기본 자료형

숫자 : short, int, long
short : 컴퓨터에서 2바이트로 표현할 수 있는 정수형 자료형
int : 4바이트, 주로 사용
long : 8바이트, 범위가 제일 크다
float : 소수를 표현할 때 사용

float f = 5.5F;

double : 큰 범위의 소수를 표현

double d = 5.5;

VALUE : 범위를 알고싶을 때, int는 Integer로

System.out.println(Short.MIN_VALUE);

문자 : char
char : character의 약자, 한글자만 가능

논리 : boolean
boolean : true or false 값만 가질 수 있음

바이트 : byte
byte : 아스키코드에서 십진법으로 표현
아스키코드 : 사람이 사용하는 문자를 컴퓨터에는 어떻게 인식하는지 정리한 표
-> 위키피디아 - 아스키코드

참조 자료형

: 기본 자료형이 아닌 모든 것, java의 인스턴스인 객체를 가르킬 수 있는 자료형, class를 이용한 것들

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);

intArray에서 Alt(option)+Enter, Enter를 누르면 명령어가 바뀜

int[] : int배열이라는 뜻, int와 int배열은 다른 개념, int와 다르게 여러가지를 담을 수 있다. 기본자료형과 다른 참조자료형.

배열이란, 자료형의 데이터를 연속된 공간에 저장하기 위한 자료 구조

index : 배열 안에서 몇번째 인지를 뜻함, 0번부터 시작

배열(Array)은 초기화를 하지 않으면 해당하는 타입의 초기화되는 값을 디폴트 값으로 한다.

String[] season = {"봄", "여름", "가을", "겨울"};
System.out.println(season[season.length - 1]);

: 현재 배열의 마지막에 있는 값을 알려달라,
-1을 하는 이유는 인덱스는 0부터 시작하기 때문

예제 1) S와 10을 표현하는 방법들

char c = 'S';
int num = 10;
System.out.println(c);
 : S
System.out.println(num);
 : 10
System.out.println(c+num);
 : 93(S를 아스키코드로 읽기 때문에)
System.out.println(c+""+num);
 : S10
System.out.println(c+"\n"+num);
 : S    (\n이 컴퓨터에게 개행을 해달라고함)
   10

예제 2) 10, 20, 30을 나타내고 그 중 30만 표현

int[] scores = new int[] {10, 20, 30};
System.out.println(Arrays.toString(scores));
System.out.println(scores[scores.length-1]);

연산자

산술연산자

int num1 = 10;
int num2 = 5;
System.out.println(num1 + num2);
 : 15
System.out.println(num1 - num2);
 : 5
System.out.println(num1 * num2);
 : 50
System.out.println(num1 / num2);
 : 2
System.out.println(num1 % num2);
 : 0 (나눈 값의 나머지)

대입 연산자

num1 += num2;
System.out.println(num1);
 : 15 (num1에 num2랑 더한 값을 넣겠다)
num1 -= num2;
System.out.println(num1);
 : 5 (num1에 num2를 뺀 값을 넣겠다)
*, /, %(모두 연산한 결과를 할당하겠다?)

관계 연산자(비교)

int num1 = 10;
int num2 = 5;
int num3 = 10;
System.out.println(num1 > num2);
 : true
System.out.println(num1 >= num3);
 : true
System.out.println(num1 < num2);
 : false
System.out.println(num1 == num3);
 : true (= 두개사용)
System.out.println(num1 != num2);
 : true (! 같지 않다)

논리 연산자

boolean a = true;
boolean b = false;
System.out.println(a && b);
 : false (a참 and b참 이면 true)
System.out.println(a && true);
 : true (둘 다 참이기 때문에)
System.out.println(a || b);
 : true (a참 or b참 이면 true)
System.out.println(false || b);
 : false (둘 다 거짓이기 때문에)
System.out.println(!b);
 : true (b의 반대를 표현)

비트 연산자
...

조건문

int check = 100;
int num1 = 51;
if (num1 > check){
    System.out.println("100보다 큰 수 입니다.");
} else if (num1 > 50){
    System.out.println("50보다 큰 수 입니다. 100보다 작거나 같습니다.");
}

: if가 거짓이기 때문에 else if 로 넘어감, if가 참이면 else if로 넘어가지 않음

char score = 'A';
switch (score) {
    case 'A':
        System.out.println("A등급 축하합니다.");
        break;
    case 'B':
        System.out.println("B등급입니다.");
	break;
    case 'C':
        System.out.println("C등급입니다.");
	break;
    default:
        System.out.println("C보다 아래 등급입니다.");
}

: default는 조건이 붙지 않음, break는 뒤에있는 조건문은 확인하지 않고 끝내겠다. 라는 뜻

삼항 연산자 (조건) ? "참" : "거짓"

int a = 5;
String result = (a < 10) ? "10보다 작습니다." : "10보다 큽니다.";
System.out.println(result);

a<10 이라는 조건이 참 이면 : 앞에있는걸 실행
a<10 이라는 조건이 거짓 이면 : 뒤에있는걸 실행

연습문제

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int score = sc.nextInt();
        if (score >= 91 && score <= 100){
            System.out.println("A등급입니다.");
        } else if(score >= 81 && score <= 90){
            System.out.println("B등급입니다.");
        } else if(score >= 71 && score <= 80){
            System.out.println("C등급입니다.");
        } else {
            System.out.println("F등급입니다.");
        }
    }
}

import java.util.Scaaner : Scanner 함수를 쓰기위해 import를 했다
new Scanner(System.in) : Scanner의 system input을 받을거야
sc.nextint : 다음에 들어오는 숫자를 받을거야, 다음에 나오는 Enter까지

반복문

ex) 100명의 학생들의 평균값 구하기 : 100개의 데이터 더하기를 반복문 사용(for문, while문)
for문

public static void main(String[] args) {
    int sum = 0;
    for ( int i = 0; i < 10; i++){
        sum += (i +1);
    }
    System.out.println(sum);
}

int i = 0 : 초기화 블럭, for문에 진입할 때 한 번 실행하는 구문을 여기에, i라는 변수를 선언하고 0부터 시작
i < 10 : 조건문, 이곳이 참 일 때 반복문이 수행됨
i++ : 반복문이 한 번 수행된 후 다음 조건을 체크하기 전 수행해줄 구문, 여기서는 i값에 +1

처음에 int i = 0이니까 i < 10 조건에 참이니까 아래 sum += (i+1)을 수행,
sum은 원래 0이었는데 i가 0이니까 0+1 해서 첫번째 수행이 끝났을 때는 1,
다음 수행에서는 int sum = 0부터가 아니라 for 이후부터 진행 ….
쭉 하다가 i < 10 가 거짓일 때 System.out.println(sum);

for each문

0개의 댓글