[JAVA] 기초 (자바란?, 변수, 연산자)

김채원·2025년 2월 24일
0
post-thumbnail

1. 자바란?

a.자바가 생겨난 이유

☕ 자바(Java)는 왜 생겼을까?
자바는 1990년대 초반 "더 강력하고, 더 유연한 프로그래밍 언어"를 만들기 위해 개발되었습니다.
당시 가장 널리 쓰이던 언어는 C, C++였지만, 이 언어들은 메모리 관리, 이식성 문제, 복잡한 문법 등의 한계를 가지고 있었습니다.
자바는 이런 문제를 해결하면서도 인터넷 시대에 적합한 언어로 설계되었습니다. -chatGPT

b.자바의 특징

  • 플랫폼 독립성
    Write once run everywhere라는 슬로건을 걸고 나온 자바는
    슬로건만큼이나 독립적인 플랫폼을 가짐 (어떠한 운영체제라도 구현 가능)

=> JDK
자바 프로그램을 개발할 때 필요한 개발 도구 모음

=> javac(자바 컴파일러)
파일을 바이트코드(.class)로 변환해줌

=> JVM
자바 가상 환경으로써 바이트코드를 읽어서 해석하고 프로그램을 실행

  • 객체지향언어
    모든 것이 객체(class)라는 개념을 기반으로 설계됐으며 캡슐화, 상속, 다형성 같은 OOP 개념을 지원

  • 거대한 생태계
    오랜 시간 동안 꾸준히 발전해왔으며 웹 개발, 서버 개발, 데이터 처리 등 다양한 분야에서 사용됨

2. 컴퓨터의 기억 방식

a. 컴퓨터의 기억 방식

  • 주 기억장치 (뇌)
    메모리(RAM - Random Access Memory)
    특징 => 휘발성, 빠른 속도

  • 보조 기억장치 (메모)
    하드디스트(HDD/SSD)
    특징 => 영구저장, 속도 느림

구분종류특징
RAM주 기억장치휘발성, 빠름
HDD/SSD보조 기억장치영구저장, 느림

b. 컴퓨터가 메모리를 관리하는 방법

컴퓨터의 메모리는 1 Byte 단위로 주소가 매겨져 관리됨 (1 Byte = 8 Bit)
Bit란 ? 메모리의 최소 저장 단위
1 Bit에는 2개의 데이터중 하나를 저장할 수 있음 (0,1)

c. 메모리를 절약하려면 ?

-> 필요한 데이터의 크기를 판단하고 적당한 크기를 활용해 데이터를 저장하는 것이 좋음

3.JAVA 프로젝트 관리

  • 기본적으로 낙타표기법(camelCase) 사용
    ex) firstName lastName

  • 패키지 이름

규칙나쁜 예시좋은 예시
소문자만 활용(권장)⚠️chapTer1✅chapter1
숫자로 시작 금지❌ 1chapter✅ chapter1
특수문자 사용 금지❌ chapter#1✅ chapter1
예약어 사용 금지❌class, ❌public, ❌static
  • 클래스 이름
규칙나쁜 예시좋은 예시
대문자로 시작❌myNewClass✅MyNewClass
카멜케이스❌ My_new_class✅ MyNewClass
숫자로 시작 금지❌1MyNewClass✅ MyNewClass
특수문자 사용 금지❌ My#New#Class✅ MyNewClass
예약어 사용 금지❌ Class, ❌ Public, ❌ Static

4.변수

a. 변수란?

-> 데이터를 컴퓨터에 저장하기 위한 공간 (데이터 저장 공간을 만드는것)

b.작성방식

마찬가지로 낙타표기법 사용

변수타입 변수명 ;
ex) int intNumber;

초기화는 0으로 됨

int a = 3;
a= 10;

위처럼 재정의 가능

c. 자료형(DataType): 메모리를 사용하는 단위

자료형종류범위ByteBit
boolean논리형true/false18
char문자형0 ~ 65535 유니코드 값216
byte정수형-128 ~ 12718
short정수형-32,768 ~ 32,767216
int정수형-2,147,483,648 ~ 2,147,483,647432
long정수형-9,233,372,036,854,775,808 ~
9,233,372,036,854,775,807864
float실수형약 소수점 6~7자리까지432
double실수형약 소수점 15~17자리까지864

d. 형변환(캐스팅)

  • 다운캐스팅
    큰 데이터 -> 작은 데이터로 담을 때 사용 (데이터 손실 주의)
double doubleNum = 3.1;
int intNum = (int)doubleNum;

명시적 변환 o

  • 업캐스팅
    작은 데이터 -> 큰 데이터
int intNum = 3;
double doubleNum = intNum;

명시적 변환 필요 x

5.입출력 - 프로그램과 사용자 간의 대화

a. 출력하기

  • 출력이란? : 컴퓨터가 결과를 콘솔(화면)에 보여주는 것을 의미
System.out.print();
System.out.println();
  • print와 println의 차이
출력 방법설명
System.out.print()줄 바꿈 없이 출력
System.out.println()출력 후 줄 바꿈

print()는 개행문자 (\n)가 생략된 것

b. 입력받기

  • 입력이란? : 데이터를 자바 세상으로 전달하는 것 -> 객체 (Scanner 사용)

  • 스캐너(Scanner) 객체 생성

Scanner scanner = new Scanner(System.in);

스캐너를 사용하려면 스캐너 변수를 먼저 생성해줘야함
이 후 스캔한 값 변수에 담기

import java.util.Scanner;

int scan = scanner.nextInt();

스캐너를 사용하려면 import 반드시 되어야함

6.연산자 - 계산의 시작

a. 기본연산자 (+, -, *, /)

int a = 5;
int b = 2;

int sum = a + b; //7

int sub = a - b; //3

int mul = a * b; //10

int div = (double) (a / b); //2.5

일반적인 연산자 사용 가능
나눗셈의 경우 소숫점 활용을 위해 캐스팅 해줘야함

b. 나머지 연산자 (%)

int a = 5;
int b = 2;
int mod = a % b; //1

a를 b로 나누고 남은 값을 반환해줌
(홀수나 짝수를 찾아야할 경우 유용하게 사용)

c.대입 연산자 & 복합 대입 연산자 (+=, -=, *=, /=)

int a = 5;

a += 1; //6
a -= 1; //5
a *= 2; //10
a /= 2; //5
a %= 2; //1

a의 값을 계산 후 다시 할당해줌
a += 1;은 a = a + 1; 과 같음

d.증감 연산자 (++, --)

  • 전위 증감 연산자
++a;
--a;

연산 후 값을 활용

  • 후위 증감 연산자
a++;
a--;

값 활용 후 연산

e. 비교 연산자 (>, <, >=, <=)

int a = 1;
inb b = 2;

a > b
a < b
a >= b
a <= b

true false로 반환 (boolean 타입으로 값 받아줘야함)

f.논리연산자 (&&, ||, !)

int a = 1;
int b = 2;

a > 0 && b > 0
a > 0 || b < 0
a != b

마찬가지로 boolean 타입으로 반환

g. 문자열 비교 (.equals)

문자열은 (==) 사용이 아닌 .equals로 비교
동등성 & 동일성
클래스에서 적으면 더 좋을 내용이지만 간략하게 정리하자면

  • (==)는 두 객체가 동일한가를 판별
    ex) int형 변수 a와 b의 값이 일치하는지를 확인함

  • (.equals)는 두 객체가 논리적으로 동등한가를 판별
    String은 객체이므로 참조값을 가지고 있음
    (==)연산자를 사용하게 되면 같은 문장이더라도 안에 들어있는 참조가 다르므로 무조건 false 반환
    (.equals)를 사용하게 되면 String 객체안에 toString()이 오버라이딩 되어있으므로 객체에 대한 참조가 아닌 참조 안에 들어있는 hashcode의 값이 동일한지를 확인

h. 연산자 우선순위

산술 -> 비교 -> 논리 -> 대입 순으로 진행

boolean result = 10 + 5 > 12 && true;
// 실행 순서 (10 + 5) > 12 && true : 산술
// → 15 > 12 && true : 비교
// → true && true : 논리
// → result = true 대입
profile
김채원 판교간다

0개의 댓글