Java의 정석 강의로 Java 학습하기

김민석·2026년 2월 17일

산술변환 규칙

  • 작은거 -> 큰거
  • int보다 작은거 int로 바뀜

사칙연산자 주의사항

byte a = 10;
byte b = 20;
byte c = a+b;
System.out.print(c); 

이렇게 하면 컴파일 에러 발생 byte는 int 보다 작으므로 int로 변환되어 int 로 되는데
c 에 int를 담을 수 없어 타입 명시를 해줘야함 byte c = (byte) (a+b);

long c = 1000000 * 200000;

오버 플로우 발생함. 이러한 경우 하나의 값에 (long)으로 타입 변환 해줘야함.
그럼 long int 만 되어도 long long 으로 변하게됨.

char c1 ='a';
char c2 = c1+1;
char c2 = 'a'+1;

char + int 는 int + int 로 변하게됨. 그래서 c2 에서 컴파일 에러 발생
'a' +1 는 에러가 발생하지 않음. 왜냐 컴파일러 최적화 때문에 에러가 발생하지 않음.

문자간의 뺼셈

문자간의 뺼셈은 숫자로 변환되어 뺄셈이 진행됨.

'd' - 'a' = 3 

비교연산자 - float 와 double

같은 값일경우 float 와 double을 비교하면 false가 나옴.
이유는 float 가 double로 바뀌는데 바뀌면 값이 다름.
그래서 true 가 나오게 하려면 직접 double을 float로 바꾸면 true 가 나옴.

문자열 비교 equals(),equalsIgnoreCase()

equals는 두 문자열이 아예 같은 경우 true
equalsIgnoreCase는 대소문자 비교를 하지않고 두 문자열을 비교 후 true

비트 연산자 (2진수)

|(OR 연산자) : 둘중에 하나가 1이면 1, 아니면 0
&(AND 연산자) : 둘다 1이면 1 아니면 0
^(XOR 연산자) : 두개가 다르면 1 아니면 0
~을 붙이면 ! 와 같이 기능한다 반대로 1은 0 0은 1

쉬프트 연산자 >>, <<

8을 2진수로 하면 000010000 8 << 2 2자리 왼ㄴ쪽으로 이동
=> 00100000 => 즉 32가 된다.

배열

같은 타입의 여러 변수를 하나로 묶은 것
배열 길이는 생성 후 변경불가

int[] sccore;
score = new int[5] // 
int [] score = {1,2,3,4,5}; // 초기화 

배열 출력

for 문을 사용해도 되지만 System.out.print(Arrays.toString(score)); 하면 출력됨

배열 복사

System.arraycopy()로 배열을 복사할 수 있음.

System.arraycopy(num,0,newNum,num.length);

num의 0번 index 부터 newNum의 0번 index 부터 num.length만큼 카피한다.

String Class

"abc".charAt(2); // 'c'
"abcdef".substring(1,4); // 'bcd'
"abc".toCharArray(); // ['a','b','c']

객체지향 프로그래밍 (OOP)

  1. 코드의 재사용성이 높다. (상속)
  2. 코드의 관리가 용이(유지보수)
  3. 신뢰성이 높은 프로그래밍 가능 (캡슐화)

클래스와 객체

서로 관련된 것들을 하나의 묶음으로 다뤄서 복잡도를 낮추는 것.?
클래스는 설계도 객체는 제품
클래스 -> 객체 인스턴스화 시켜 객체로 만듬.
객체는 변수와 메서드로 이루어짐


클래스 안에 속성(변수) 및 기능(메서드)가 존재

객체의 생성 및 사용

Tv t;
t = new Tv();
t.channel = 7; // 변수
t.channelDown(); //메서드

클래스의 객체를 참조하기 위한 참조 변수 선언 후 0
클래스의 객체를 생성, 그 후 변수 및 메서드를 사용할 수 있음.

Tv t;
t1 = new Tv();
t2 = new Tv();
t2 = t1; 

t2 = t1 을 하면 t1 이 저장하고 있는 값(주소)을 t2에 저장
그리고 t2는 접근이 불가해짐 그래서 가비지 컬렉터가 자동적으로 t2 메모리를 제거시킴.

변수의 종류

int i; // 인스턴스 변수
static int c; // 클래스 변수(공유변수)
  • 클래스 변수는 항상 사용가능하다.
  • 인스턴스 변수는 객체 생성 후 사용가능.
  • 인스턴스 변수는 개별적인 것 클래스 변수는 공유(공통)인 것
profile
나만의 기록장

0개의 댓글