JAVA

<JAVA_PreClass_231005목>

Technoqueen_X 2023. 10. 5. 13:53
728x90
반응형

사용하고자 하는 데이터의 종류가 매우 중요함
숫자인가? 날짜인가? 문자인가? -> 데이터타입
 
데이터타입 클래스(=함수or변수) = return값
함수or변수(사용자정의=식별자) = return값
= 을 대입연산자라고 함.

대입연산자의 왼쪽은 무조건 변수여야 함.
대입연산자의 오른쪽은 변수가 와도 되고 값도 올수있음.

관계연산자 : >, <, >=, <=, ==(같다), !=(같지않다)

사칙연산 : +, *, /, %(나머지)

삼합연산자 = 조건 ? 참:거짓;
 
-----------------------------------

Data Type (무조건 변수 선언과 함께 오는 것, 데이터 타입을 담는 과정이 변수 선언, 
변수선언 시작을 숫자로 할 수 없음, 변수의 특수문자는 영문자+언더바_ 이것만 됨.
변수명으로 원래 자바에 있는 명령 예를들면 if 같은거(예약어) 안됨)
 
-----------------------------------
 
함수 : 미리 만들어놓은 프로그램, 모듈 이라고도 표현 함. 하나의 기능이라고 표현하기도 함.
뭔가의 기능을 하는게 함수인데 반환값이 있을수도 or 없을수도 있음.
ex) 자판기(함수) -> 동전 넣으면 초코우유가 나옴(변환값,반환값,return값)
 
-----------------------------------

변수 (변하는 수, variable, 공간의 이름)

- 뒤에있는 값을 앞에 넣어라 라는 뜻. 
- stack에 저장됨.

-----------------------------------

함수와 변수 구별방법
함수는 ()가 꼭 따라오고 변수는 없음.
ctrl+space 했을 때 ()가 붙어있으면 함수, 없으면 변수

-----------------------------------
 
사용자정의, 식별자 = 내가 만들어쓰는 이름. (ex: class명)

-----------------------------------

println() 이라는 함수의 return타입은 string 이기 때문에 결과값이 항상 문자로 나오는 것.
 
-----------------------------------

데이터 타입의 기본형(값저장) : 8가지
 
1) 숫자
- 정수형 : byte(1byte=8bit), short(2byte=16bit,디테일한 작은 작업할 때)
/int(대부분의 숫자 커버 4byte=32bit), long(8byte=64bit), char
- 실수형 : float(4byte=32bit), double(8byte=64bit)
 
1byte = 0~255 (그러나 음수를 사용하는 순간부터 숫자 유효범위가 반으로 갈림 -128~127 이런식으로)
2진수 : 0과1
10진수 : 1, 2, 4, 8, 16, 32, 64, 128, 256
 
저장크기 (작은거->큰거순)
bit(2진수로 표현 -> 0아니면1) < ★byte(8bit) < KB < MB < GB < TB < PB


1,024 KB = 1MB
1,024 MB = 1GB
1,024 GB = 1TB
1,024 TB = 1PB (PB는 아직 상용화 전)

2) 문자 : char(캐릭터=2byte=다국적언어가 지원된다는 말), char는 숫자로도 표현이 가능
 
- 아스키코드(ASCII) -> 숫자,특수문자,영문자 = 1byte
- unicode (UTF-8) : 2byte(숫자,특수문자,영문자+다국적언어도 가능하게끔) 
ex) JAVA = 2byte

3) 논리형 : boolean (true || false)

데이터 타입의 참조형(문자열(String)을 의미= 클래스,배열, " " 로 표현함, 대문자로 무조건 시작함)
프로그램에서 주소가 저장되는 곳. 캐릭터char 인 ' ' 랑 차이가 있다는 것에 주의!
 
-----------------------------------
 
데이터타입 우선순위

1. 정수와 실수가 만나면 실수가 된다. 실수 우선. (정수 <실수)
2. 작은크기와 큰 크기가 만나면 큰 크기가 된다. (작은크기 < 큰크기)

-----------------------------------

형 변환에 대한 정리

1. boolean(논리형)을 제외한 나머지 7개의 기본형들은 서로 형 변환이 가능.
2. 기본형과 참조형 간에는 서로 형 변환이 되지 않음.
3. 서로 다른 타입의 변수간의 연산에는 형 변환이 요구되지만
값의 범위가 작은 타입에서 큰 타입으로의 변환은 생략할 수 있음. 
데이터타입의 우선순위에서는 큰놈이 작은놈보다 당연히 힘이 세다고 생각하면 됨.

-----------------------------------

저장장치

* 주 기억장치(=RAM=메모리) : 전원을 끄면 없어지기에 휘발성이라고 함.
우리가 사용하는 모든 프로그램은 메모리에 있어야 한다.
용량에 한계가 있음. 물리적으로 저장하는게 아니기 때문.
메모리가 꽉차서 잘 안돌아고 골골대는걸 crash가 일어난다고 함.

* 보조 기억장치 : 어딘가에 물리적으로 저장하는 대신 영구적임. 
ex) HDD(Hard Disk Drive)->USB or SDD

-----------------------------------

로컬(내자리)
리모트(내자리 아닌 곳)

-----------------------------------

*메모리

- static
- stack(변수가 저장되는 곳) : ex) 주소 
- heap(객체가 저장되는 곳) : ex) 구로디지털단지 대륭빌딩

-----------------------------------

JAVA에서 제어블럭 범위는 { } 까지.
모든 변수는 자기제어블럭{ }을 빠져나가는 순간 사라짐.(소멸)

ctrl+space 누르면 그 뒤에 쓸 수 있는 명령들 (Library를 확인할 수 있음.)
JAVA에서 System.out.println()을 더 빠르게 입력할 수 있는 단축키는
이클립스 에서  syso+ctrl+space 하면 System.out.println함수 자동완성
이클립스에서 /* */ 이렇게 하면 * * 사이는 모두 주석처리 되는 것 

-----------------------------------

<삼항연산자>

 

삼항연산자 => 조건 ? 참:거짓;

(조건식) ? A : B

'?'를 기준으로 조건식이 true일 경우에는 A 코드를, false일 경우에는 B 코드를 수행

int max = k > n ? k : n; // max 변수에 k와 n 중에서 큰 값을 저장하는 코드

//문제 : k와 n중에서 큰값을 max 변수에 넣어서 출력하시오.
int k = 10;
int n = 15;

// 풀이 :
int max = k > n ? k : n; // max 변수에 k와 n 중에서 큰 값을 저장하는 코드
// k와 n의 값을 비교
// k가 n보다 크면 max에 k를 저장,
// k가 n보다 작거나 같으면 max에 n을 저장.
System.out.println("큰값은->" + max);

// 답 :
"큰값은->15
 
-----------------------------------
 
int a = 10

++a ; (전위연산자) : 1증가 하고 사용이 됨 (++a <=10 ----> 답은 False) // 답 : 11
전위연산자는 변수의 값을 먼저 1 증가시킨 다음, 그 결과를 변수에 대입함.
 
예시)
int x = 10;
int y = ++x; // 전위 연산자 사용
System.out.println(y); // 11
System.out.println(x); // 11

a++ ; (후위연산자) : 사용이 되고 1 증가 ( a++ <=10 ----> 답은 False) // 답 : 11
후위연산자는 변수의 값을 1씩 증가시키지만, 그 결과를 변수에 대입하진 않음.
대신 증가하기 전의 값을 반환함.
 
예시)
int x = 10;
int y = x++; // 후위 연산자 사용
System.out.println(y); // 10
System.out.println(x); // 11

예를들어 10을 나타내는 변수 x가 있을 때,
전위연산자를 사용하면 11로 증가하고
후위연산자를 사용하면 10으로 유지된다.

전위연산자를 사용하는 이유는
변수의 값을 증가시킨 결과를 즉시 사용하고 싶을 때,
변수의 값을 증가시킨 횟수를 세고 싶을 때.

결론적으로, 전위연산자 후위연산자 둘다 변수의 값을 1씩 증가시키지만
동작 방식이 다른 것이 핵심!!
변수 값을 먼저 증가시키고 -> 변수에 대입하면 전위연산자
변수 값을 증가시키지만 -> 변수에 대입하지 않으면 후위연산자

-----------------------------------
 
a+=2; a에 2를 더하고 값을 구해라
a*=2; a에 2를 곱하고 값을 구해라
왼쪽에 오는 부호를 계산해서 그다음 오른쪽 오는 부호를 계산한다고 생각하면 쉬움.
 
<연습문제>
 
// 문제 : 
int a = 4;
int b = 3;
System.out.println("a+b="+ a + b); 

// 답 : a+b=43
 
// 문제 : 
int a = 4;
int b = 3;
System.out.println("a+b="+(a + b)); // *우선순위를 만드려면 ()를 쳐주면 됨.

 
// 답 : a+b=7
 
// 문제 : 
int a = 10;
int before = ++a;
System.out.println(before);
 
// 답 : 11
 
// 문제 : 
int a = 10;
int after = a++;
System.out.println(after);
 
// 답 : 11
 
// 문제 : 
int a = 10;
boolean decide = ++a <=10;
System.out.println(decide);
 
// 답 : false
 
// 문제 : 
int a = 10;
boolean decide = a++ <=10;
System.out.println(decide);
 
// 답 : false
 
// 문제 : 
int i = 10;
int sum; //0부터 시작
sum = ++i + i++;
System.out.println(sum); 
 
// 답 : 22 (11+11)
 
// 문제 : 
int i = 10;
int sum; //0부터 시작
sum = ++i + ++i;
System.out.println(sum); 
 
// 답 : 23 (11+12)
 
// 문제 : 
int i = 10;
int j= 10;
int sum; //0부터 시작
sum = ++i + j++;
System.out.println(i); // 답 : 11
System.out.println(j); // 답 : 11
System.out.println(sum);
 
// 답 : 21 (11+10)

-----------------------------------
 
a == 10  : a가 10과 같은가? (boolean) 

a && b : a와 b 두 조건을 다 충족시키는가? (and)
a || b : a나 b 둘중 하나라도 충족시키는가? (or)
 
하나라도 참이면 참 = or
모든 조건을 다 충족시켜야 참 = and
 
<연습문제>
 
// 문제 : 
int a = 4;
int b = 3;
if ((a > 5) || (b>=3))
    System.out.println("참");
else
    System.out.println("거짓");
 
// 답 : 참
 
// 문제 : 
int a = 4;
int b = 3;
if ((a > 5) && (b>=3))
   System.out.println("참");
else
   System.out.println("거짓");
 
//답 : 거짓
 
// 문제 : 
int a = 4;
int b = 3;
if (!(a > 5) && (b>=3))
   System.out.println("참");
else
   System.out.println("거짓");
 
// 답 : 참
 
// 문제 :
int a, s, m, d;
a=s=m=d=10;

a +=10;
s -=10;
m *=10;
d /=10;
 
답 : 
System.out.println(a); // return값 20
System.out.println(s); //  return값 0
System.out.println(m); // return값 100
System.out.println(d); // return값 1
 
-----------------------------------
 
<연습문제>
 
// 문제 : 
short i = 10;
i = 1004;
System.out.println(i);
 
// 답 : 1004

// 문제 : 
char a = 'A'+1;
System.out.println((int)a); // 강제 형변환, 무조건 되는건 아님. 안되는건 에러표시가 남.
 
// 답 : 66
 
// 문제 : 
byte p = 10;
int m = 100;
System.out.println(p+m);
 
// 답 : 110

// 문제 : 
char c = '흥';
System.out.println((int)c);
 
// 답 : 55141
 
// 문제 : 
boolean t = true;
System.out.println(!(t)); // !를 찍어주면 not (결과를 뒤집는다.)
 
// 답 : false

// 문제 : 
int num = 10+20;
boolean pan; //boolean 타입의 변수를 선언
pan = num > 10; //boolean 타입의 변수에 조건식의 결과 대입
System.out.println("pan="+pan);
 
// 답 : pan=true
 
// 문제 : 
String str = "홍동우";
System.out.println(str);
 
// 답 : 홍동우

728x90
반응형

'JAVA' 카테고리의 다른 글

<JAVA_PreClass_231012목>  (2) 2023.10.12
<JAVA_PreClass_231011수>  (2) 2023.10.11
<JAVA_PreClass_231010화>  (0) 2023.10.10
<JAVA_PreClass_231006금>  (0) 2023.10.06
<JAVA_PreClass_231004수>  (0) 2023.10.04