SEB_BE 8일차 - Java기초1

subimm_·2022년 8월 30일
0

코드스테이츠

목록 보기
9/83

💡 오늘의 학습목표

  • 변수와 타입
  • 문자열
  • 연산자
  • 콘솔 입출력

📔 자바의 특징

  1. 운영체제에 독립적
    JVM(자바 가상머신) 이 설치되어 있는 모든 운영체제에서 실행 가능
  2. 객체 지향 언어 (OOP)
  3. 함수형 프로그래밍 지원
  4. 자동 메모리 관리 (가비지 컬렉터)
  • JRE : JVM + 표준 클래스 라이브러리
  • JDK : JRE + 개발에 필요한 도구

📔 메서드

  • 메서드란 어떤 기능을 하는 코드를 묶음으로 묶은 것
    함수 - 특정 기능을 수행하는 코드들을 묶은 것
    메서드 - 클래스 내에 포함되어 있는 함수
  • 데이터를 입력받아 처리한 후 결과값을 반환한다.

메서드 정의

A main(B C) {
	D
}

반환타입 메서드이름(매개변수타입 매개변수이름) {
  메서드바디
}

A : 처리 결과 반환값의 타입
B, C : 메서드 외부와 메서드 내부를 매개해주는 변수
메서드 외부에서 메서드 내부로 전달되어진 값
D : 구체적으로 메서드가 어떤 기능을 수행할지에 대한 코드 작성
return 으로 값 반환

ex) 더하기를 수행하는 기능을 가진 메서드

int add(int namber1, int number2) {
	return number1 + number2;
}

메서드 호출

add(1,2);

메서드 이름과 호출 연산자() 로 호출
() 안에는 매개변수에 넣어줄 값 입력

  • main 메서드
public static void main(String[] args) {
}

자바에서 main 메서드는 진입점 함수이고 반드시 main메서드 필요

📔 변수

  • 값이 변할 수 있는 메모리 공간에 식별가능한 이름을 붙인 것
    메모리에 값을 넣기 위해 메모리 주소를 식별가능하게 한다.

변수의 선언과 할당
[데이터타입][변수이름]

int num; //정수형 타입의 변수 num 선언
num = 1; // 변수num에 1 할당 (초기화)
num = 2; // 변수num에 2 할당 (재할당)

초기화 : 변수를 선언하고 처음으로 값을 할당하는 것

int num = 1; //선언과 동시에 초기화

변수명 규칙

  • 자바에서 변수명은 카멜케이스 사용
    두번째 단어부터 대문자로 시작해 구분한다.
  • 영문자, 숫자, _ , $ 사용가능 대소문자 구별
  • 숫자로 시작하는 변수명x
  • 자바에서 이미 사용중인 예약어는 사용 x

📔 상수

  • 재할당이 금지된 변수 (변하지 말아야 할 데이터)
    final 로 선언 관례적으로 대문자에 _ 를 넣어 구분
final doule CALCULATOR_PI = 3.14;

📔 타입

  • 값이 차지하는 메모리 공간의 크기과 저장되는 방식 결정됨.

    값이 저장되는 방식

    • 기본타입 : 저장된 데이터의 실제 값을 의미
      -정수타입(byte, shirt, int, long)
      -실수타입(float, double)
      -문자타입(char)
      -논리타입(boolean)

    • 참조타입 : 데이터가 저장된 곳을 나타내는 주소값
      8개의 기본형을 제외한 나머지 타입

📔 리터럴

  • 문자가 가리키는 값 그 자체
    num = 1; 에서 1 이 리터럴 (값이라는 표현 대신)
int currentAge = 10;
// 정수형 리터럴 10을 정수형 변수 currentAge에 할당
  • float 타입의 변수에 실수형 리터럴 할당 시 리터럴 뒤에 접미사f 를 붙여줘야 한다.
  • long 타입의 변수에 정수형 리터럴 할당 시 리터럴 뒤에 접미사 L 을 붙여줘야 한다.
float a = 22.5f;
long b = 123L;

📔 정수 타입

  • 숫자를 나타내는 타입
    byte - 1byte
    short - 2byte
    int - 4byte 보통 int 로 사용한다.
    long - 8byte
byte bytenum = 123;
short shortnum = 12345;
int intnum = 123456789;
long longnum = 12_345_678_910L; 
//숫자가 길면 언더바로 구분 가능

정수형의 오버플로우, 언더플로우

  • 오버플로우
    자료형이 표현할 수 있는 범위를 넘어 최대값 이상의 값을 표현한 경우 발생된다.
    최대값을 넘어가면 해당 데이터 타입의 최소값으로 값 순환
  • 언더플로우
    자료형이 표현할 수 있는 범위 중 최소값 이하의 값을 표현한 경우 발생된다.
    최소값을 넘어가면 해당 ㄷ이터 타입의 최대값으로 값 순환
  • byte형은 8bit의 크기 중 1bit는 부호 표현에 사용하며, 7bit는 숫자 표현에 사용하여 -128 ~ 127의 정수 범위를 표현할 수 있다.

📔 실수 타입

  • 소수점을 가지는 값
    float - 4byte
    double - 8byte
float num = 3.14f //접미사 f 붙여야함
double num1 = 3.14159;

실수형의 오버플로우, 언더플로우

  • 오버플로우
    값이 음의 최소범위 또는 양의 최대범위를 넘어갔을때
    이 때 값은 무한대가 된다.
  • 언더플로우
    값이 음의 최대범위 또는 양의 최소범위를 넘어갔을때
    이 때 값은 0이 된다.

📔 논리 타입

  • 참 또는 거짓을 저장하는 데이터 타입
    boolean - true / false 를 값으로 가짐 1byte

📔 문자 타입

  • 문자형 리터럴 저장
    char - 작은 따옴표 '' 사용
char letter = 'a';

유니코드로 문자를 저장, 숫자를 문자형 변수에 할당하면 변수 참조 시 유니코드로 인식하여 코드를 가진 문자로 변환해준다.

char letter = 65;
System.out.println(letter);
// 출력 결과는 A

📔 타입 변환

논리 타입boolean 을 제외 하고 서로 타입 변환이 가능

  • 자동 타입 변환
  1. 바이트 크기가 작은 타입에서 큰 타입으로 변환할 때 (byte - int)
  2. 덜 정밀한 타입에서 더 정밀한 타입으로 변환할 때 (정수 - 실수)
byte(1) -> short(2)/char(2) -> int(4) -> long(8) -> float(4) -> double(8)
  • 수동 타입 변환
    메모리 용량이 더 큰 타입에서 작은 타입으로 변환할 때
    캐스팅 이라고 한다.
    캐스팅 연산자() 사용하여 괄호 안에 변환하고자 하는 타입 적기
//int 타입 선언된 변수intValue를 더 작은 단위인 byte로 변환
int intValue = 128;
byte byteValue = (byte)intValue;
System.out.println(byteValue); // 오버플로우가 발생하여 -128

result = (char)(num + '0'); // int형을 char형으로 형변환


📙 문자열 (String)

  • 문자열은 String 클래스를 통해 다루어지고, 그 안에 있는 메서드들을 통해 여러 문자열 관련 메서드를 사용할 수 있다.
  • String 타입 변수는 String 변수명; 으로 선언
  • 선언한 변수에 문자열을 할당하는 방법
  1. 문자열 리터럴을 할당하는 방법 : 변수 = "문자열";
  2. String 클래스의 인스턴스를 생성하여 할당
    변수 = new String("문자열";)
  • 동일한 문자열 리터럴을 두 변수에 할당하는 경우 두 변수는 같은 문자열의 참조값을 공유한다. (같은 주소값)
  • 클래스의 인스턴스를 생성하게 되면 문자열의 내용이 같을지라도, 별개의 인스턴스가 따로 생성된다. (다른 주소값)

📙 String 클래스의 메서드

  • charAt() 메서드
    : 해당 문자열의 특정 인덱스에 해당하는 문자 반환
String str = new String("Java");
System.out.println("문자열 : " + str); // "문자열 : ABCD"
        System.out.println(str.charAt(0)); // 'A'
        System.out.println(str.charAt(1)); // 'B'
        System.out.println(str.charAt(2)); // 'C'
        System.out.println(str.charAt(3)); // 'D'
  • compareTo() 메서드
    : 해당 문자열을 인수로 전달된 문자열과 사전 편찬 순으로 비교
    두 문자열이 같다면 0
    해당 문자열이 인수로 전달된 문자열보다 작으면 음수
    크면 양수 반환
  • concat() 메서드
    : 해당 문자열의 뒤에 인수로 전달된 문자열을 추가한 새로운 문자열 반환 사전적으로 연결한다는 의미
    String str = new String("Java");
          System.out.println("문자열 : " + str);
          System.out.println(str.concat("연결"));
          // Java연결
  • indexOf() 메서드
    : 해당 문자열에서 특정 문자나 문자열이 처음으로 등장하는 위치의 인덱스를 반환.
    전달된 문자나 문자열이 포함되어 있지 않으면 -1 반환
    String str = new String("Java");
           System.out.println("문자열 : " + str);
           System.out.println(str.indexOf('o')); // -1 반환
           System.out.println(str.indexOf('a')); // 1 반환
  • trin() 메서드
    : 문자열의 맨 앞과 맨뒤에 포함된 모든 공백문자 제거
String str = new String(" Java     ");
        System.out.println(str + 'a');// java     a
        System.out.println(str.trim() + 'a');//javaa
  • toLowerCase()와 toUpperCase() 메서드
    : 문자열 모든 문자 대소문자 변환
String str = new String("Java");
        System.out.println(str.toLowerCase());//java
        System.out.println(str.toUpperCase());//JAVA

https://www.javatpoint.com/understanding-toString()-method 스트링 클래스 메서드


📔 연산자

  • 산술 연산자
    + - * / %(나머지)
double num1 = 9 / 2;   // 4.0
int    num2 = 9 / 2;   // 4
double num3 = 9.0 / 2; // 4.5
//좌항과 우항이 모두 int 형이면 결과도 int 형 소수점 버려짐
  • 증감 연산자
num1++; // num1 = num1 + 1;과 같다.
num2--; //num2 = num - 1; 과 같다.

전위형 증감연산자 : 증감 연산을 먼저 수행 후 결과값 적용
후위형 증감연산자 : 기존 값 적용 후 증감 연산 수행

int num2 = 1;
int postfix = num2++; // num2의 값이 먼저 할당 후 1증가
//num2는 2 postfix는 1
  • 복합 대입 연산자
num1 += 2; // num1 = num1 + 2;
num2 -= 2; // num2 = num2 - 2;
  • 비교 연산자
    • 대소 비교 연산자 : boolean 을 제외한 타입 사용
      > < <= >=
    • 등가 비교 연산자 : 모든 타입 사용
      == != 동등하면 trun, 그렇지 않으면 false
  • 논리 연산자 : 공통적으로 boolean 타입 반환
    && -AND 연산자
    || - OR 연산자
    ! - NOT 연산자


    && : 피연산자 두 개가 모두 true일 때 true 반환
    두 개 중 하나라도 true가 아닐 시 false 반환
    || : 피연산자 둘 중 하나라도 true면 true 반환
    모두 false 인 경우에만 false 반환
    ! : true와 false를 반대로 바꾸는 연산자
  • 연산자 우선순위

📔 콘솔 입출력

  • 콘솔 출력
  1. 출력하기 : System.out.print()
    단순히 출력하고 줄바꿈 x
  2. 출력하고 줄 바꿈 : System.out.println()
    출력하고 줄바꿈한다.
  3. 형식대로 출력 : System.out.printf()
    지시자를 이용해 변수의 값을 여러 형식으로 출력
System.out.printf("%s%n", "Hello JAVA");//줄바꿈이 된다.
  • 콘솔 입력
import java.util.Scanner;                 // Scanner 클래스를 가져온다.

Scanner scanner = new Scanner(System.in); // Scanner 클래스의 인스턴스를 생성
String inputValue = scanner.nextLine();   // 입력한 내용이 inputValue에 저장

System.out.println(inputValue);           // 입력한 문자열이 출력

문자열 입력 : nextLine()
정수형 입력 : nextInt()
실수형 입력 : nextFloat()

회고

오늘은 드디어 자바 파트에 들어갔다. 힘들거라고 생각했지만 생각보다 분량이 너무너무너무 많아서 힘들었다,,,페어분이랑 문제 풀이도 했는데 간단하다고 생각했는데 막상 코드로 써보려니 잘 안되었다. 내일은 제어문이라 더 힘들것같다,, 학습 분량이 너무 많다ㅠㅠ

profile
코린이의 공부 일지

0개의 댓글