[혼공자] 1주차_Java

jini·2025년 7월 6일
0

혼자공부하는자바

목록 보기
1/6

🧊 1주차 미션

기본: JDK 설치 화면 인증하기

선택: p.110 (02-3) 확인 문제 9번에 들어갈 코드를 2가지 이상 작성해보기

var1부터 var4까지 + 연산을 수행해서 int 타입 result 변수에 9가 저장되도록 [ ] 에 들어갈 코드를 작성해보세요.

long var1 = 2L;
float var2 = 1.8f;
double var3 = 2.5;
String var4 = "3.9";
int result = [  ];
System.out.println(result);

 

CODE 1

int result = (int)(var1 + var2 + (int)var3 + Double.parseDouble(var4));;
  • (int)var3 = 2
  • Double.parseDouble(var4) = 3.9
  • 2 + 1.8 + 2 + 3.9 = 9.7
  • (int)9.7 = 9

 

CODE 2

int result = (int)var1 + (int)var2 + (int)(var3 + Double.parseDouble(var4));
  • (int)var1 = 2
  • (int)var2 = 1
  • var3 + 3.9 = 6.4 → (int)6.4 = 6
  • 2 + 1 + 6 = 9

 

🧊 자바

프로그래밍 언어

컴퓨터에서 실행하는 프로그램은 특정 목적을 수행하도록 프로그래밍 언어로 작성된 소스를 기계어로 컴파일 한 것

기계어(Machine Language)
컴퓨터가 이해할 수 있는 언어로, 0과 1로 이루어진 이진 코드를 사용

  • 사람이 이해할 수 없고, 반대로 사람이 사용하는 언어는 컴퓨터 입장에서 보면 이해할 수 없는 문자의 집합
  • 사람과 컴퓨터가 대화하기 위해서는 사람의 언어와 기계어의 다리 역할을 하는 프로그래밍 언어가 필요

 

소스 파일(Source File)
프로그래밍 언어로 작성한 파일로, 컴퓨터가 바로 이해할 수 없으므로 컴파일(Compile) 과정을 통해 0과 1로 이루어진 기계어 파일로 번역한 후에 컴퓨터에서 사용

 

프로그래밍 언어

  • Java : Embedded, 웹, 안드로이드 소프트웨어 개발 분야
  • C / C++ : 하드웨어 장치 제어 및 Embedded SW 분야
  • C++ / C# : 데스크탑 앱 또는 ASP.NET 기반 웹 SW 분야
  • Python : 빅데이터 분석 및 머신러닝 SW 분야

 

🧊 변수와 타입

변수(variabble)

값을 저장할 수 있는 메모리의 특정 번지에 붙이는 이름

변수 선언
변수를 사용하기 위해서는 먼저 변수를 선언
변수에 어떤 타입의 데이터를 저장할 것인지, 변수 이름이 무엇인지 결정

int x;
int y;

// 콤마를 이용해서 한꺼번에 선언 
int x, y;

 

변수 이름 규칙
첫 번째 글자는 문자이거나 '$', '_' 이어야 하고 숫자로 시작할 수 없으며, 특수 문자가 포함되면 안됨

  • 가능 : price, $price, _companyName
  • 불가능 : 1v, @speed, $#value

영어 대소문자를 구분

  • firstname과 firstName은 다른 변수

첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자를 대문자로 함

  • maxSpeed, firstName, carBodyColor

자바 예약어는 사용 불가능

  • 예약어 : 이미 해당 프로그래밍 언어에서 의미를 갖고 사용되고 있는 단어
분류예약어
기본 타입boolean, byte, char, short, int, long, float, double
접근 제한자private, protected, public
클래스와 관련된 것class, abstract, interface, extends, implements, enum
객체와 관련된 것new, instanceof, this, super, null
메소드와 관련된 것void, return
제어문과 관련된 것if, else, switch, case, default, for, do, while, break, continue
논리값true, false
예외 처리와 관련된 것try, catch, finally, throw, throws
기타package, import, synchronized, final, static

 

값 저장
변수에 값을 저장할 때에는 대입 연산자(=) 사용

  • 변수 초기화 : 변수에 최초로 값이 저장될 때 변수가 생성
  • 변수가 초기화되면 메모리 번지 정보를 갖게 되고, 해당 메모리 번지에 값이 저장
int score;   // 변수 선언
score = 90;  // 값 저장

// 선언과 동시에 초기값 제공
int score = 90;

 

변수 사용 범위
자바의 모든 변수는 중괄호 블록 내에서 선언되고 사용

  • 로컬 변수 : 메소드 블럭 내에서 선언된 변수, 메소드 블록 내부에서만 사용되고 메소드 실행이 끝나면 메모리에서 자동으로 없어짐
public class VariableExample {
	public static void main(String[] args) {
    	int value = 10;
        int sum = value + 20;
        System.out.println(sum);
    }
}

 

타입

기본 타입
정수, 실수, 논리값을 저장할 수 있는 타입

  • 정수 타입 : byte, char, short, int, long
  • 실수 타입 : float, double
  • 논리 타입 : boolean

 

정수 타입

타입메모리 사용 크기저장되는 값의 허용 범위
byte1byte(8bit)-2^7 ~ (2^7 - 1), ~128 ~ 127
short2byte(16bit)-2^15 ~ (2^15 - 1), -32,768 ~ 32,767
char2byte(16bit)0 ~ 65535(유니코드)
int4byte(32bit)-2^31 ~ (2^31 - 1), -2,147,483,648 ~ 2,147,483,647
long8byte(bit)-2^63 ~ (2^63 - 1), -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

 

정수 리터럴
2진수 : 0b / 0B로 시작하고, 0과 1로 구성

0b1011 -> 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2 ^ 0 -> 11
0b10100 -> 1 * 2^4 + 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 0 * 2 ^ 0 -> 20

8진수 : 0으로 시작하고 0 ~ 7 숫자로 구성

013 -> 1 * 8^1 + 3 * 8^0 -> 11
0206 -> 2 * 8^2 + 0 * 8^1 + 6 * 8^0 -> 134

10진수 : 소수점이 없는 0 ~ 9 숫자로 구성

12
365

16진수 : 0x / 0X로 시작하고, 0 ~ 9 사이의 숫자와 A, B, C, D, E, F 또는 a, b, c, d, e, f로 구성

0xB3 -> 11 * 16^1 + 3 * 16^0 -> 179
0x2A0F -> 2 * 16^3 + 10 * 16^2 + 0 * 16^1 + 15 * 16^0 -> 10767

 

char 타입
하나의 문자를 작은따옴표로 감산 것을 문자 리터럴이라고 하며, 유니코드로 변환되어 저장

  • unicode : 세계 각국의 문자를 2byte로 표현할 수 있는 숫자(0 ~ 65535)로 매핑한 국제 표준 규약
char var1 = 'A';   // unicode: 65
char var2 = 'B';   // unicode: 66
char var3 = '가';  // unicode: 44032
char var4 = '각';  // unicode: 44033

 

String 타입
큰따옴표로 감싼 문자들

String var1 = "A";
String var2 = "홍길동";

 

이스케이프 문자

  • \t : 탭만큼 띄움
  • \n : 줄 바꿈(라인 피드)
  • \r : 캐리지리턴
  • \" : " 출력
  • \' : ' 출력
  • \\ : \ 출력
  • \u16진수 : 16진수 유니코드에 해당하는 문자 출력

 

실수 타입
소수점이 있는 실수 리터럴 저장

타입메모리 사용 크기저장되는 값의 허용 범위(양수 기준)정밀도(소수점 이하 자리)
float4byte(32bit)(1.4 10^-45) ~ (3.4 10^38)7자리
double8byte(64bit)(4.9 10^-324) ~ (1.8 10^308)15자리

 

논리 타입
참과 거짓을 의미하는 논리 리터럴로 true와 false를 사용

  • boolean : 1byte
boolean stop = true;
boolean state = false;

 

🧊 연산자 종류

  • 연산자(operator) : 연산에 사용되는 표시나 기호
  • 피연산자(operand) : 연산자와 함께 사용되는 데이터
  • 연산식(expression) : 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것
연산자 종류연산자피연산자 수산출값기능
산술+, -, *, /, %이항숫자사칙연산 및 나머지 계산
부호+, -단항숫자음수와 양수의 부호
문자열+이항문자열두 문자열을 연결
대입=, +=, -=, *=, /=, %=이항다양우변의 값을 좌변의 변수에 대입
증감++, --단항숫자1만큼 증가/감소
비교==, !=, >, <, >=, <=, instanceof이항boolean값의 비교
논리!, &, \|, &&, \|\|단항, 이항boolean논리 부정, 논리곱, 논리합
조건(조건식) ? A : B삼항다양조건식에 따라 A 또는 B 중 하나를 선택

 

단항 연산자

피연산자가 단 하나뿐인 연산자

부호 연산자(+, -)
양수 및 음수를 표시(boolean, char 타입을 제외한 나머지 기본 타입에 사용 가능)

  • +(피연산자) : 피연산자의 부호 유지
  • -(피연산자) : 피연산자의 부호 변경

 

증감 연산자(++, --)
변수의 값을 1 증가(++)시키거나 1 감소(--)시키는 연산자(boolean 타입을 제외한 모든 기본 타입의 피연산자에 사용 가능)

  • ++(피연산자) : 다른 연산을 수행하기 전에 피연산자의 값을 1 증가시킴
  • --(피연산자) : 다른 연산을 수행하기 전에 피연산자의 값을 1 감소시킴
  • (피연산자)++ : 다른 연산을 수행한 후에 피연산자의 값을 1 증가시킴
  • (피연산자)-- : 다른 연산을 수행한 후에 피연산자의 값을 1 감소시킴
int x = 1;
int y = 1;
int result1 = ++x + 10;  // 12
int result2 = y++ + 10;  // 11

 

논리 부정 연산자(!)
true를 false로, false를 true로 변경하기 때문에 boolean 타입에만 사용 가능

  • !(피연산자) : 피연산자가 true(false)이면 false(true) 값을 산출

 

이항 연산자

피연산자가 2개인 연산자

산술 연산자(+, -, *, /, %)
boolean 타입을 제외한 모든 기본 타입에 사용 가능

  • (피연산자) + (피연산자) : 덧셈 연산
  • (피연산자) - (피연산자) : 뺄셈 연산
  • (피연산자) \* (피연산자) : 곱셈 연산
  • (피연산자) / (피연잔사) : 왼쪽 연산자를 오른쪽 피연산자로 나눗셈 연산
  • (피연산자) % (피연산자) : 왼쪽 피연산자를 오른쪽 피연산자로 나눈 나머지를 구하는 연산

 

문자열 결합 연산자(+)
피연산자 중 한 쪽이 문자열이면 + 연산자는 문자열 결합 연산자로 사용되어, 다른 피연산자를 문자열로 변환하고 서로 결합

String str1 = "JDK" + 6.0;  // JDK6.0
String str2 = str1 + " 특징";  // JDK6.0 특징

 

비교 연산자(<, <=, >, >=, ==, !=)
피연산자는 대소(<, <=, >, >=) 또는 동등(==, !=)을 비교해서 true/false를 산출(대소 연산자는 boolean을 제외한 기본 타입에 사용할 수 있고, 동등 연산자는 모든 타입에 사용 가능)
흐름 제어문인 조건문(if), 반복문(for, while)에서 주로 이용되어 실행 흐름을 제어할 때 사용

  • (피연산자1) == (피연산자2) : 두 피연산자의 값이 같은지를 검사
  • (피연산자1) != (피연산자2) : 두 피연산자의 값이 다른지를 검사
  • (피연산자1) > (피연산자2) : 피연산자1이 큰지를 검사
  • (피연산자1) >= (피연산자2) : 피연산자1이 크거나 같은지를 검사
  • (피연산자1) < (피연산자2) : 피연산자1이 작은지를 검사
  • (피연산자1) <= (피연산자2) :피연산자1이 작거나 같은지를 검사

 

논리 연산자(&&, ||, &, |, ^, !)
boolean 타입만 사용 가능

AND(논리곱) : 피연산자 모두가 true일 경우에만 연산 결과가 true

  • true && / & true -> true
  • true && / & false -> false
  • false && / & true -> false
  • false && / & false -> false

OR(논리합) : 피연산자 중 하나만 true이면 연산 결과는 true

  • true || / | true -> true
  • true || / | false -> true
  • false || / | true -> true
  • false || / | false -> false

XOR(배타적 논리합) : 피연산자가 하나는 true이고 다른 하나가 false일 경우에만 연산 결과가 true

  • true ^ true -> false
  • true ^ false -> true
  • false ^ true -> true
  • false ^ false -> false

NOT(논리 부정) : 피연산자의 논리값을 바꿈

  • !true -> false
  • !false -> true

대입 연산자(=, +=, -=, *=, /=, %=)
오른쪽 피연산자의 값을 왼쪽 피연산자인 변수에 저장 (오른쪽 피연산자는 리터럴 및 변수, 다른 연산식이 올 수 있음)

  • 단순 대입 연산자(=) : 단순히 오른쪽 피연산자의 값을 변수에 저장
  • 복합 대입 연산자 : 정해진 연산을 수행한 후 결과를 변수에 저장

 

삼항 연산자

3개의 피연산자를 필요로 하는 연산자(? 앞의 조건식에 따라 : 앞뒤의 피연산자가 선택됨)
조건식(피연산자1) ? 값 또는 연산식(피연산자2) : 값 또는 연산식(피연산자3)

  • 조건식을 연산하여 true가 나오면 삼항 연산자의 결과를 피연산자 2, false가 나오면 삼항 연산자의 결과는 피연산자3
// 삼항 연산자
int score = 95;
char grade = (score > 90) ? 'A' : 'B';

// if문
int score = 95;
char grade;
if (score > 90) {
	grade = 'A';
} else {
	grade = 'B';
}

0개의 댓글