Java
Day1
jineric
2023. 1. 14. 16:24
1. JVM(자바 가상 머신)
- 여러 운영체제에서 동일한 실행결과가 나오도록 설계
소스코드 -> 컴파일 -> byte코드로 변환됨(기계어롭 변환) -> jvm에서 실행
.java파일 : 소스코드 , 변경등이 가능하다.
-it회사는 소스코드가 재산, 보안에 신중해야한다. 내 것이 아니다. 회사귀속
.class파일: jvm에서 실행할수있게 하는 파일, 컴파일 후 기계어로 변환된 파일
-class파일을 java파일을 어림잡아 복원하는 해커들이 존재한다.
-ex) 윈도우익스플로어를 개발
2. 자바의 소스코드
public class HelloWorld {
public static void main(String[] args) {
System.out.println("안녕하세요. java!");
System.out.println(100);
}
}
- 파일명과 class명은 동일해야한다.
src내부 파일명과 코드상 class명
- 대소문자가 명확히 구별해야 함
- 문장의 끝은 ;(세미콜론)을 붙여야 한다.
3. 문장의 출력
- System.out.println(); 한 줄 값에 값을 출력한 후. \n을 붙이지 않아도 알아서 줄 바꿈이 됨
- System.out.print(); 한 줄 값에 값을 출력한 후 \n을 붙이지 않으면 줄 바꿈이 안됨 , \n에 의해서 다음 줄값을 출력함
4. 주석문
- 인수인계용도
- 내 코드를 내가 분석하는 시간을 줄이기 위해서
-// : // 부터 라인 끝까지 주석으로 처리
-/* 내용 */ : /*와 */사이에 이쓴ㄴ 모든 범위의 내용을 주석으로 처리
-/** */ : 자바더주석, jsm더 , 주석 자바클래스나 인터페이스, 생성자, 메소드를 설명할때 사용 => 실무에서 주료 사용
5. 변수(Variable)
- 하나의 값을 저장 할 수 있는 메모리 공간
- 변수를 선언하는 방법
데이터타입 변수이름:
int a:
=> 램에 jvm 공간속에 스택영역에 4byte 메모리이름을 a라고 지정
- 데이터 타입(스텍영역에 저장되는 기본테이터타입)
정수(음의 정수 0 양의 정수) : byte(1byte, 2^8, -128~0~127), short(2byte. 2^16, -32768~0~38767), int(4byte, 2^32, 약-21억~0~약21억), long(8byte)
실수(소수점 추가) : float(4byte, 소숫점 6째까지), double(8byte)
문자 : char(2byte)
문자형 '' : 1글자 => 2byte => 유니코드사용 / 아스키코드는 1byte 사용
문자열 (문자배열) " " : 컴퓨터 내부에서는 사실 없다. => char + char + .... => 내부적으로 char를 연결함
string 은 사실 자료형이 아니라 매소드 => char + char + char +.... 이런 형태로 되어있다.
논리 : boolean(1byet => true(=0), fales(=1))
1bit : 0 or 1
1byte : = 8bit = 2^(8) 개의 정보저장가능
byte a = 300; (x)
- 변수이름 작성방법
1. 첫글자는 문자 또는 "$", "_" 를 사용해야한다.
apple, $apple, _apple
2. 첫글자를 숫자로 시작할 수 없다.
1apple(x)
3. 대소문자를 구별
apple 변수와 Apple는 서로 다름
4. 문자수의 길이 제한은 없다.
ajsdkfljas;dlkfjals;djfal; = 10;
5. 예약어는 사용할 수 없다.
true, false, if, while, for.....
=> 해결법 : true1 (숫자를 붙이면 사용가능)
6. 관례) 첫글자는 소문자로 시작, 다른 단어가 붙을 경우 첫글자를 대문자로함 (권장)
myScore, nextCount
***클래스는 대문자로 시작.
-변수의 초기화
int a;
a = 10;
=> 램에 jvm 공간속에 스택영역에 4byte 메모리이름을 a라고 지정 => ㅁㅁㅁㅁ에 맨 오른쪽 부터 체움
=> 각 ㅁ칸 마다 8개의 bit가 존재
=> 10을 오른쪽부터 2진법으로 채운다.
=> 00000000/00000000/00000000/00001010
-변수의 선언 및 초기화
데이터타입 변수이름 = 값;
int a = 10;
-변수는 바뀔수있다.
-변수는 객체일수도있고,,,, 다양한 형태일수 있다.
- 변수의 재대입
변수이름 = 값;
int a = 10;
System,out.println(a); //10
a= 5;
System,out.println(a); //5
a: a는 변수로써 모양의 형태는 문자의 형태이지만 메모리의 주소를 저장함
= : 우측에 있는 값을 왼쪽에 대입해라 즉 x <= 10 형태
6. 연산자 (operator)
- 프로그램에서 데이터를 처리하여 결과를 산출
- 연산에 사용되는 표시나 기호
- 산술연산자
+, -, +, /, %
- 비교연산자
>, <, >=, <=, ==(같다.), !=(다르다.)
=> 비교연산자의 결과는 boolean형
- 증감연산자
변수에 값을 1증가 시키거나 1감소 시키는 연산자
++변수; 다른연산을 수행하기 전에 값을 1증가시킴
--변수; 다른연산을 수행하기 전에 값을 1감소시킴
변수++; 다른연산을 번저 수행한 후 값을 1 증가시킴
변수--; 다른연산을 번저 수행한 후 값을 1 감소시킴
int a = 1;
++a;
Syetem.out.println(a) // 2
int a = 1;
a++;
Syetem.out.println(a) // 2
---------------------------------------
int x = 1;
int result = ++x;
result:2 , x:2
int x= 1;
int result = x++;
result:1, x:1
- 대입연산자
값을 변수에 저장해주는 연산자.
=, +=, -=, +=, /= , %=
int num1 = 10;
num += 1; (=> num = num + 1)
- 논리연산자
&&(and) ||(or) ^(hat) !
AND연산
boolean && boolean
예) 정보처리기사 합격조건 , 로그인
-평균점수 60점 이상
-각 과목당 40점 이상
A && B 결과
t t t
t f f
f t f
f f f
---------------------------------------
OR연산
boolean || boolean
예) 주민등록번호의 성별
1 또는 3 또는 5 또는 7 또는 9 는 남자
2 또는 4 또는 6 또는 8 또는 0 은 여자
A || B 결과
t t t
t f t
f t t
f f f
---------------------------------------
^(햇) xor 연산자
=> 같으면 f
=> 다르면 t
---------------------------------------
! NOT연산
=> 반대로 바꿔줌
!Boolean
!B 결과
t f
f t
- 비트연산자
&, |, ^ , << , >>
메모리가 부족 할 경우를 대비해서 메모리의 2진법을 직접 사용하기 위해서
ex)
10진수 28 => 2진수 11100
1024 512 256 128 64 32 16 8 4 2 1
1 1 1 0 0
10진수 25 => 2진수 11001
1024 512 256 128 64 32 16 8 4 2 1
1 1 0 0 1
-----------------------------------------------------------
&(and) 1 1 0 0 0 => 24
|(or) 1 1 1 0 1 => 29
-----------------------------------------------------------
^ 0 0 1 0 1 => 5
-----------------------------------------------------------
<<(shft) ex) 28<<2 1 1 0 0 0 0 0 => 112
>>(shft) ex) 28>>2 1 1 1 => 7
- 삼항연산자
3개의 피연산자를 필요로 하는 연산자 이며, 앞의 조건식에 따라 : (콜론) 앞뒤의 피연산자가 선택
조건식 ? 값1 : 값2
(결과 boolean)
emo = 10 > 5 ? 😁 : 😍;