2023. 3. 9. 19:18ㆍjava
1. 변수
1-1) 변수의 종류
class 안에 있는 변수를 전역변수
메서드에서 선언한 변수를 지역변수
혼동할 수 있는 개념으로 다른 클래스에서 같은 변수이름 선언 가능
1-2) 변수의 명명 규칙
첫 글자에 숫자 시작이나, 특수문자( _ $) 이 두 가지 말고는 사용 불가
변수명은 명사형 ex) sevice
잘못된 변수 선언 ex) int 4you, int sharp#4, int public(예약어 등등) 사용 불가
1-3) 변수 표기법
1. 카멜 표기법=>'firstName'
2. 스네이크 표기법=>'first_name'
3. 파스칼 표기법=> First Name
1-4) 변수의 자료형(Data Type)
기본 자료형과 참조 자료형으로 나뉨
primitive Type(기본자료형):ex) 정수형, 실수형, 문자형, 논리형
정수형:
byte: 1byte
short: 2byte
int: 4byte
long: 8byte
실수형:
float: 4byte
double: 8byte
문자형: char 한 글자만 사용가능 ex) 'a'
논리형 boolean: true, false (1bit)
디폴트는 int, double
2. 정수형 연산
2-1) 큰 자료형과 작은 자료형의 연산 결과는 큰 자료형을 따름
ex) int + byte = int , int + short =int
(4byte)+(1byte)= (4byte), (4byte)+(2byte)= (4byte)
2-2) 작은 자료형끼리의 연산 결과는 int형이 된다.
byte b2=20,
short b3 =30;
int num;
b2 + b3 = num;
(byte) +(short) = (int)
short s1=1000, s2=2000;
num = s1 + s2;
(int) = (short) + (short)
2-3) int형끼리의 연산, long형끼리의 연산
int +int= int , long+long=long
2-4) long형 상수라는 것을 알려주기 위해 숫자 뒤에 l(소문자), L을 붙임.(대부분 L)
ex) long ln1=2200000000L;
2-5) 숫자 앞에 0이 붙으면 8진수를 의미한다.
ex) num2 = 0412; => 4*8^2 + 1*8^1+2*8^0=256+8+2
2-6) 숫자 앞에 0x(0X)가 붙으면 16진수를 의미
ex) num3 = 0x10A; => 1*16^2 + 0*16^1 + A(10)*16^0 = 256+0+10
2-7) 실수형의 대표자료형은 double
정수형과 실수형의 연산 결과는 실수형
2-8) 형변환
float f3 = 100;
결과 :100.0
float표기
f3= (float)3.14; or f3=3.14F; => 이것은 float형 상수를 뜻함
문제)
/*
* 반지름이 10인 원의 면적을 구해라 단, 면적을 저장하는 변수의 타입을 3가지 형태(int/float/double)의 자료형에 저장하여
* 출력하여라 그리고 소수점을 제거하여라 원의 면적:반지름*반지름*3.14 단, 아래의 변수 radius 와 pi를 사용해서 구해라
*/
int radius = 10;
double pi = 3.14;
// 면적을 저장하는 변수
int iarea;
float farea;
double darea;
// iarea = radius*radius*(int)pi;//300
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);
console)
iarea=314
farea=314
darea=314
d1 = 0.1;
d2 = 0.2;
System.out.println(d1 + d2);// 예상:0.3, 실제:0.30000000000000004 Floating Point Error(부동소수점)
System.out.println(d1 * d2);// 예상:0.02, 실제:0.020000000000000004
System.out.println(d1 + d2 == 0.3);// false
console)
0.30000000000000004
0.020000000000000004
false
***Floating Point Error를 막기 위해 ==>
BigDecimal big1 = new BigDecimal("0.1");
BigDecimal big2 = new BigDecimal("0.2");
BigDecimal big3 = big1.add(big2);
/*
* BigDecimal타입1.compareTo(BigDecimal타입2) 값이 같으면 0 BigDecimal타입1이 가리키는 값이 더 크면 1
* BigDecimal타입1이 가리키는 값이 더 작으면 -1
*
*/
System.out.println(big3);
System.out.println(big3.compareTo(new BigDecimal("0.3")) == 0);// true
console)
0.3
true
3.Reference Type(참조 자료형):ex) 클래스형, 인터페이스형, 배열, String
String Type: 기본 자료형이 아닌 문자열을 저장할 수 있는 데이터 타입
표기는 ""
문자열 +숫자는 문자열이 된다
ex)
int number=99;
String strNumber = "100";
System.out.println(strNumber+number);//문자열 + 숫자 =>"100" +99 =>"10099"
4.Constant(상수)
public static final int A = 10;
절대로 변하지 않는 불변의 값
상수로 정의 시에는 키워드 final을 변수명 앞에 붙인다
상수는 보통 대문자로 정의, public static을 함께 사용
상수는 프로그램 중간에 값을 변경하면 에러
상수는 반드시 초기화를 하여야 한다.
ex) public static final int MY_CONSTANT=10;
int num;
public void Hap(){
num=20;
MY_CONSTANT = 20;//에러
System.out.println(num+MY_CONSTANT);
}
5. 형변환(Type Cating)
묵시적 형변환:작은 범위의 데이터를 큰 범위의 할당하는 경우와 같이 값의 변화가 발생하지 않는 변환
=> 할당 공간만 커지는 거라 소실되는 값이 없음
변수명 앞에 (데이터형)을 지정
ex) double d = 12.34;
int i =1234;
//double > int : 이것을 묵시적 형식 변환이라 한다.
d=i;
System.out.println(d);//1234.0 => 정수형이 실수형으로 바꿨지만 int는 4byte double은 8byte 할당 공간이 커짐
d=12.34;
i=(int)d;
System.out.println(i);//12
6. 이스케이프 문자
출력 시 사용되는 escape문자이다.(특별한 기능)
\n: 줄 바꿈, 그리고 커서는 줄 바꿈 한 줄의 처음에 위치
\t: 탭키만큼 들여 쓰기, 즉 스크린 커서를 탭키만 큼 옮김
\r: 캐리지리턴(동일한 줄의 맨 앞으로 커서 옮김, 줄 바꿈은 안됨)
콘솔에서 테스트해야 함, 이클립스에서는 \r과 \n이 동일한 결과를 내보냄
단, java로 텍스트파일 생성 시(자바 IO이용) \r\n으로 줄 바꿈 처리해야
메모장이나 editplus에서 똑같이 줄 바꿈 처리가 잘된다.
(왜냐하면 키보드의 엔터키는 \r\n 임으로)
System.out.println("국어t영어t수학");
col) 국어t영어t수학
System.out.println("국어\t영어\t수학");
col) 국어 영어 수학
*키보드의 엔터키는 \r\n임
\': 작은따옴표 문자 자체 표현: 싱글쿼테이션으로 불림
\": 큰따옴표 자체 문자 표현: 더블쿼테이션으로 불림
ex)
System.out.println("나의 닉 네임은 \'스마트 보이\' 입니다");
col) 나의 닉 네임은 '스마트 보이' 입니다
이렇게 '를 글자 그대로 보여주기 위한 \' ~ \'이다
System.out.println("나의 닉 네임은 \"스마트 보이\" 입니다");
col)나의 닉 네임은 "스마트 보이" 입니다이렇게 "를 글자 그대로 보여주기 위한 \"~\"이다.문제)
System.out.println("D:\nDrive\table");
col)
D:
Drive able
\n은 줄 바꿈, \t는 탭키 한번 누른 것을 뜻한다.
'java' 카테고리의 다른 글
6일차 2023-03-15 Java (0) | 2023.03.15 |
---|---|
5일차 2023-03-14 Java (2) | 2023.03.14 |
4일차 2023-03-13 Java (0) | 2023.03.13 |
3일차 2023-03-10 Java (1) | 2023.03.10 |
1일차 2023-03-08Java (0) | 2023.03.08 |