들어가며
수강 2일차이다. 수업은 9시 30분부터 시작한다. 1시간정도 일찍 강의실에 도착해 어제 배웠던 것을 복습했다. 전공자는 32명중 5명이 있다고 한다. 실력은 전공유무를 떠나 개인이 역량 차이가 났다. 각자 하기 나름인 것 같다.
수업내용
변수의 선언과 초기화 (variable declaration and initialization)
변수 선언(Variable declare) 방법은에 세가지 있다.
첫번째 방법
변수를 먼저 선언하고 선언한 변수에 값을 초기화하는 방법
int num; //타입 변수명; 변수 선언
num = 10; // 변수명 = 값; 초기화
변수를 선언할 때는 변수의 타입을 먼저 명시하고, 변수명을 지정한다. 타입에는 정수형, 실수형, 논리형, 문자열 등 다양한 타입이 있다.위 예문에서 int는 자료형(data type)이고 num은 임의로 설정한 변수명이다. int형의 num이라는 메모리가 생성되었다. 여기서 num이라는 이름의 변수를 선언했다고 말한다. 문장 마지막에 세미콜론을 꼭 붙혀줘야 에러가 나지 않는다. 다음으로 변수를 초기화 해준다. 초기화는 변수에 처음으로 값을 저장하는 것을 말한다. 변수를 초기화할 때는 변수명 뒤에 등호(=)를 사용하여 값을 지정한다.
num이라는 변수에 10 이라는 값을 할당하여 초기화해주었다. 지역 변수는 초기화하지 않고 사용시 컴파일 오류가 발생할 수 있으므로 유의해야한다.
두번째 방법
변수를 선언과 동시에 초기화 하는 방법
int num = 10;// 변수 선언과 함께 초기화
위와 같이 변수 선언과 동시에 초기화 하는 것도 가능하다.
세번째 방법
동시에 동일한 타입의 변수를 여러개 선언하는 방법
int num1,num2=100,num3;
콤마(,)로 구분하여 변수를 동시에 여러개 선언 및 초기화를 할 수 있다. 단, 동시에 여러개의 변수를 선언하고 한다면 동일한 자료형이어야한다.
유의사항
항상 = (대입(할당)연산자의 왼쪽에는 값을 변경할 수 있는 변수가 와야한다.오른쪽에는 값이나 값이 저장된 변수가 온다.
자바에서 변수를 선언할 때는 다음과 같은 명명 규칙을 따른다.
1. 변수명은 영어, 숫자, 언더바(_), 달러 기호($)로 구성될 수 있다. 변수명은 영어로 시작해야 하며, 대소문자를 구분한다.
2. 변수명은 예약어(reserved word)로 사용되지 않도록 해야한다. 예약어란, 이미 특정한 의미로 사용되고 있어 다른 용도로 사용할 수 없는 단어를 말한다. 예를 들면, int, float, boolean 등은 자바에서 이미 타입 이름으로 사용되고 있으므로 변수명으로 사용할 수 없다.
2. 변수명은 의미 있는 이름으로 지정해야 한다. 변수의 역할이나 의미를 나타내는 이름을 지정하면 코드를 이해하기 쉬워진다.
3. 변수명은 Camel Case 표기법을 따른다. Camel Case 표기법이란, 여러 단어로 이루어진 변수명에서 첫 번째 단어를 제외한 나머지 단어의 첫 글자를 대문자로 표기하여 변수명을 작성하는 방식을 말한다. 예를 들어, numberOfStudents, phoneNumber와 같이 변수명을 작성할 수 있다.
4. 클래스 변수와 상수는 대문자로 작성하며, 단어 사이에 언더바(_)를 사용하여 구분한다. 예를 들어, MAX_NUMBER와 같이 변수명을 작성할 수 있다.
5. 변수명의 길이는 적당하게 설정해야 한다. 변수명이 너무 짧으면 의미를 알기 어렵고, 변수명이 너무 길면 코드가 지저분해진다. 보통 변수명의 길이는 10자 이내로 작성하는 것이 좋다.
[자바의 명명규칙]
int 1num; // [x],
int value#; // [x]
int underbar_,dollar$; //[o]
int class; [x] // 예약어
int cLass; [o] // 엄격한 대소문자 구분
변수의 타입
변수는 값을 저장할 때 사용되며, 각각의 변수는 데이터 타입을 가지고 있다. 자바에서 사용할 수 있는 변수 타입의 종류는 기본형 변수와 참조형 변수가 있다. 먼저 기본형 변수를 학습하고 참조형 변수는 나중에 배운다고한다.
기본형(Primitive Type) 변수의 종류
- 정수형 : byte, short, int, long
- 실수형 : float, double
- 문자형 : char
- 논리형 : boolean
기본형 변수는 해당하는 값을 직접 저장한다. 예를 들어, 정수형 변수 int number = 10;과 같이 값을 지정해주면, number 변수에는 정수형 데이터인 10이 저장된다.
참조형(Reference Type) 변수
참조형 변수는 객체의 주소를 저장한다. 자바에서는 클래스, 인터페이스, 배열 등이 참조형 변수로 사용된다. 참조형 변수는 객체를 생성한 후 변수에 객체의 주소를 저장한다.
정수형
자바에는 다양한 종류의 정수형 타입이 있다. 각 타입은 사용할 수 있는 범위와 메모리 크기가 다르다.
- byte : 1바이트의 메모리를 사용하며, -128부터 127까지의 값을 저장할 수 있다.
- short : 2바이트의 메모리를 사용하며, -32,768부터 32,767까지의 값을 저장할 수 있다.
- int : 4바이트의 메모리를 사용하며, -2,147,483,648부터 2,147,483,647까지의 값을 저장할 수 있다. 자바에서 가장 일반적으로 사용되는 정수형 타입이다.
- long : 8바이트의 메모리를 사용하며, -9,223,372,036,854,775,808부터 9,223,372,036,854,775,807까지의 값을 저장할 수 있다. long 타입은 int 타입보다 큰 범위의 값을 저장할 수 있다.
byte b1; // 변수선언
byte = 128; // [x] 128은 int형 상수로 대입이 불가능하다.
자료형 연산규칙
자바 언어에서는 다양한 자료형을 지원하며, 이들 간에는 연산이 가능하다. 이 때 연산 규칙이 있다..
같은 자료형 간 연산
같은 자료형의 변수나 상수끼리는 자유롭게 연산이 가능하다.예를 들어, int 변수끼리의 덧셈 연산(int + int)은 가능합니다.
연산 결과는 같은 자료형이 된다. 단, int형보다 작은 자료형(byte,short,char)들끼리 연산 결과는 int형으로 자동 형변환되어 계산된다. 기본 자료형 중 수치형의 정수형의 대표 자료형은 int이기 떄문이다. ex. int(4byte) + short(2byte) = int(4byte)
연산결과로 byte, short, char를 쓰고자 한다면 형변환을 해주어야 한다.
byte a = 10, b = 20;
byte c = (byte) (a + b);
short x = 100, y = 200;
short z = (short) (x + y);
서로 다른 자료형 간 연산
서로 다른 자료형의 변수나 상수끼리도 연산이 가능하다.이 때 자바에서는 데이터 손실을 방지하기 위해 자동 형변환(casting)이 이루어진다. 작은 크기의 자료형에서 큰 크기의 자료형으로 자동 형변환이 이루어집니다. 예를 들어, int와 double의 덧셈 연산(int + double)은 int가 double로 자동 형변환되어 이루어진다.
형변환 연산
서로 다른 자료형 간에 형변환을 통해 연산이 가능하다. 이 때 '형변환 연산자'를 사용해준다.
int intValue = 10;
double doubleValue = 3.14;
double result = (double) intValue + doubleValue;// (형변환 연산자) 사용
연습문제 1
국어,영어,수학 점수 및 점수 총합을 저장할 수 있는 변수 4개를 선언하라(int형 사용). 국어에는 90, 영어는 89, 수학은 79을 저장하라. 국영수 점수와 총합을 출력하라..
풀이
int kor,eng,math,total;
kor = 90;
eng = 89;
math = 79;
total = kor + eng + math;
System.out.println("국어:"+kor+",영어:"+eng+",수학:"+math+",총점:"+total);
콘솔 출력값 : 국어:90,영어:89,수학:79,총점:258
실수형
실수형에서 대표 자료형은 double이다. 소수점이 붙으면 무조건 double형으로 인식한다. 단, 소수점이 붙지 않은 값은 float에 담을 수 있다.정수형과 실수형을 연산시 연산결과는 실수형이다(실수형이 정수형보다 큰 그릇이라고 생각하자). 정수형(long) : 8byte, float(실수형):4byte. 둘이 더하면 float이 된다.
//long형과 float형 연산결과는??
long ln = 100;
float f1 = 200;
//long ln1 = ln + f1; [x] long형과 float형 연산결과는 float이다.
//해결방법1] 연산결과인 float형에 저장
float f2 = ln + f1; //[o]
//방법2]연산결과를 long형으로 형변환
long ln1 = (long)(ln + f1);
//방법3]f1만 long형으로 형변환
ln1 = ln+(long)f1;
//tip)주로 소수점 이하를 제거하고자 할때 int 형으로 형변환하면 된다.
float kor=99,eng=80,math=96;
float avg = (kor+eng+math)/3;
System.out.println("평균:"+avg);
System.out.println("평균(소수점제거):"+(int)avg);
소수점이 붙지 않은 값은 float형에 담을 수 있다.
float f3 = 3.14; //[x] 3.14는 double형 상수
float f3 = 100;// [o] int형 상수 100을 float형 변수 f3에 저장
float형에 실수를 담을 수 없을까?
f3=(float)3.14; // 방법1. 형변환하는 방법
f3=3.14F;//방법2.실수 숫자뒤에 f나 F를 붙혀준다(권장)
연습문제2. 반지름이 10인 원의 면적을 구해라. 단, 면적을 저장하는 변수의 타입을 3가지 형태(int/float/double)의
자료형에 저장하여 출력하고 소수점을 제거하라. 단, 아래의 변수 radius와 pi를 사용해서 구해라( 원의 면적:반지름*반지금*3.14)
풀이
int radius = 10;
double pi = 3.14;
//면적을 저장하는 변수
int iarea;
float farea;
double darea;
iarea = (int)(radius*radius*pi);
System.out.println("iarea="+iarea);
farea = radius*radius*(float)pi;
System.out.println("farea="+(int)farea);
darea = radius*radius*pi;
System.out.println("darea="+(int)darea);
아스키 코드 ASCII (American Standard Code for Information Interchange,미국 정보 교환 표준 부호)
아스키(ASCII) 코드는 영문 알파벳, 숫자, 그리고 일부 특수 문자 등을 컴퓨터에서 처리하기 위해 사용되는 7비트 문자 인코딩 체계입니다. 즉, 이진수로 표현될 수 있는 128개의 문자를 정의하고 있습니다. 예를 들어, 대문자 A는 아스키 코드에서 65, 소문자 a는 97입니다.
이진수는 컴퓨터에서 데이터를 저장하고 전송하는 데 사용되는 가장 기본적인 형태의 데이터 표현 방식입니다. 따라서 아스키 코드는 컴퓨터에서 문자를 처리하고 통신하는 데 필수적인 기초적인 도구로 사용됩니다.
최근에는 아스키 코드보다 더 많은 문자를 표현할 수 있는 유니코드(Unicode)가 널리 사용되고 있습니다.
문자형 char
char형은 2바이트(16비트) 크기의 정수 데이터 타입입니다. char형 변수는 유니코드(Unicode) 문자 집합에서 사용 가능한 모든 문자를 저장할 수 있습니다.
유니코드는 세계의 모든 문자를 표현하기 위한 국제 표준 문자 집합으로, ASCII 코드보다 훨씬 많은 문자를 지원합니다. 자바에서 char형은 Unicode 문자를 표현하기 위해 사용됩니다.
char형은 작은 따옴표('')를 사용하여 표시됩니다. 예를 들어, 'A'는 문자 A를 나타내며, '가'는 한글 문자 가를 나타냅니다.
자바에서는 char형 변수를 다양한 방식으로 사용할 수 있습니다. 예를 들어, 문자열에서 문자 하나를 추출하거나, 문자열을 char형 배열로 변환하거나, 파일에서 문자를 읽어들이는 등의 작업에 사용됩니다.
char형 사용 유의 사항
//char ch1="가";/ /[x]"가"는 문자열 즉 String타입
//char ch1 = '가나';// [x]문자는 반드시 하나여야 한다.
※아스키(혹은 유니) 코드값(십진수)을 char형으로 형변환 하면 해당 아스키(혹은 유니)코드값에 일치하는 문자로 바꾼다.
반대로 어떤 문자를 int형으로 형변환하면 그 문자의 코드값(아스키 혹은 유니코드)을 알 수 있다.
char형에 값(데이터) 저장하는 방법은?
1.' '으로 감싸서 하나의 문자를 저장한다.
2. 십진수 혹은 16진수로 저장한다
3. \\u16진수형태의 값을 저장 한다.
4. 십진수로 저장시 그 숫자는 아스키코드 혹은 유니코드값이 된다.
논리형(boolean)
논리형(boolean)은 true 또는 false 값을 갖는 데이터 타입입니다. 논리형 변수는 조건식에서 주로 사용되며, true 또는 false 값을 가지며, 해당 값에 따라 프로그램의 흐름이 결정됩니다.
논리형 변수는 논리 연산자를 사용하여 조건식을 평가하는 데 매우 유용합니다. &&(논리 곱, AND), ||(논리 합, OR), !(논리 부정, NOT) 연산자를 사용하여 논리형 변수를 조합할 수 있습니다.
예를 들어, 두 개의 논리형 변수 A와 B가 있을 때, A && B는 A와 B가 모두 true인 경우에만 true를 반환하며, A || B는 A 또는 B 중에서 하나 이상이 true인 경우 true를 반환합니다. 또한, !A는 A가 false인 경우 true를 반환하며, A가 true인 경우 false를 반환합니다.
논리형 변수는 if 문, while 문, for 문 등의 제어문에서 조건식으로 사용되며, 메서드의 반환값으로도 사용될 수 있습니다. 예를 들어, boolean 타입의 메서드는 true 또는 false 값을 반환할 수 있습니다.
문자열 타입(String Type)
- String형 : 문자열을 저장할 수 있는 참조형 데이터 타입이다.
- 자바에서 문자열을 나타낼 대는 " "(Double quotation)감싼다.
- 참조형과 기본형 사이에는 형변환(TypeCasting)이 불가능하다.
- 문자열에 +연산기호가 사용될때는 문자열 연결을 의미한다.
- 문자열+숫자는 문자열이 된다.
- String 타입은 자바 기본 타입에 속하지 않는 참조 타입이다.
- 자바의 문자열은 String 객체로 생성되고 객체의 주소에 저장된다.
FormatString(형식 문자열)
- 출력형식을 지정하기 위한 문자열이다.
- 변환지시어(Conversion Specifier)를 사용해서 원하는 출력 형식을 만들 수 있다.
- 변환지시어를 쓸 수 있는 메소드가 정해져있다.
- 주요 변환 지시어
%d : 정수값 출력시(byte, short, int, long)
%f : 실수값 출력시(float, double)
%c : 한 문자 출력시(char)
%b : boolean형 출력시
%s : 문자열 출력
%n : 줄바꿈(\r\n도 가능)
%% : %리터럴을 의미
- 형식문자열에서 데이터 출력시 자릿수 지정 가능하다.
- 예) %숫자d
%4c : 한문자를 출력하는 데 전체 자리수는 4
%5d : 정수 숫자를 출력하는 데 전체 자리수는 5
%6.2f% : 실수를 출력하는데 소수점 둘째짜리까지만 출력하고 전체 자리수는 6(소수점 포함) 자릿수 지정시 값을 오른쪽부터 채운다. 음수(-)를 붙이면 왼쪽부터 채운다.
Escape 문자
- Escape 문자: 특정 형식에 맞게 출력하기 위해 사용하는 문자
- 특정 문자 앞에 백슬래쉬(\)를 붙이면 그 특정 문자는 어떤 특수한 기능을 한다.
- Escape 문자는 모든 " "안에서 사용할 수 있으며 소문자로 사용해야한다.
- \n : 줄바꿈(line feed)기능
- \r : 커서를 해당 줄에서 맨 처음으로(carrige return)
- \t : 탭키 만큼 띄어쓰기 기능
- \' : single quotation 표시한다. 문자열을 '(싱글쿼테이션)으로 감싸도 되는 곳에서는 의미 있다.
- \" :double quotaion표시한다. "을 문자열의 시작/끝을 의미하는 문자가 아님을 컴파일러에게 알려준다.
- \\ : 뒤에 \은 이스케이프 문자 역할을 하는 특수문자가 아니라는 것을 컴파일러에게 알려주는 기능을 한다.
상수(Constant)
- 변수는 변하는 수이다. 하지만 프로그램에서는 변하지 않는 수도 필요하다. 우리 주변에 불변의 값들이 있다. 예를 들면, 수학에서 사용되는 원주율이나 지구의 무게 및 둘레 등이 있을 것이다. 이렇게 변하지 않는 값을 저장하는 필드를 '상수'라고 한다.
- 상수 : 저장된 값이 절대 변하지 않는 메모리의 한 종류로 final 예약어를 사용해 선언한다.
- 선언방법 : final 자료형 변수명 = 초기값;
- 상수는 객체마다 저장할 필요가 없고, 여러개의 값을 가져도 안되기 때문에 static이면서 final인 특성을 가져야 한다.
- 상수명은 보통 대문자로 선언한다. 여러 단어를 연결하는 경우에_기호를 사용하면 보기 좋다.
- 상수는 프로그램의 가독성을 높이고 유지 보수시에도 유리하다.
- 고정된 데이터를 상수로 선언한다.
- 클래스 안이 아닌 곳에서 선언된 변수나 상수를 지역변수 혹은 지역상수라고 한다.
- 특정 블락(지역)에서 선언된 변수나 상수를 지역변수 혹은 지역 상수라고 한다.
- 클래스 안에서 상수를 선언할때는 반드시 선언과 초기화하거나 초기화하지 않을시는 생성자에서 초기화 해야한다. 선언과 동시에 값을 지정하는 것이 좋다.
- 메소드(즉 지역)안에서 상수를 선언할 대는 초기화를 사용전에만 해주면 된다. (보통 메소드(지역) 안에서는 상수선언을 잘 안한다. 주로 클래스 안에서 상수를 선언한다.
- 상수 선언후 프로그램 실행 중간에 값을 변경하면 오류가 발생한다.
- final 예약어는 변수,메서드, 클래스에 사용할 수 있다.
'TIL' 카테고리의 다른 글
[23.03.17.] 국비지원 풀스택 개발자 과정 - Day 8 (0) | 2023.03.18 |
---|---|
[23.03.14.] 국비지원 풀스택 개발자 과정 - Day 5 (0) | 2023.03.15 |
[23.03.13.] 국비지원 풀스택 개발자 과정 - Day 4 (0) | 2023.03.15 |
[23.03.10.] 국비지원 풀스택 개발자 과정 - Day 3 (형변환, 연산자, 조건문) (0) | 2023.03.15 |
[23.03.08] 국비지원 풀스택 개발자 과정 - Day 1 (1) | 2023.03.14 |
댓글