Java static 정적 멤버 변수, 메소드





static(정적) 멤버 변수, 메소드

- static은 '고정된' 의미로서 클래스에 고정된 값, 함수로서 인스턴스를 생성하지 않고도 사용할 수 있다.


- static 변수는 선언 시 초기화 하거나 static 블록 부분에서 초기화 되어야만 한다.


- static 메소드는 인스턴스를 생성하지 않고도 사용할 수 있으므로 그 클래스의 static 변수가 아닌 멤버 변수는 사용할 수 없다.


코드1

결과1



- 사용하기 위해서는 '클래스이름.변수이름' '클래스이름.메소드이름' 처럼 사용한다.



 인스턴스마다 공통된 변수나 메소드를 static으로 생성한다.






'JAVA > 기초' 카테고리의 다른 글

Java 상수 static final  (0) 2020.03.18
Java Singleton(싱글톤)  (0) 2020.03.17
Java 배열 기본값, 배열 복사  (0) 2020.03.16
Java 향상된 for문, label  (0) 2020.03.16
Java 형변환  (0) 2020.03.15

Java 배열 기본값, 배열 복사





1. 배열 타입별 기본값


- 배열을 생성한 후 default 값으로 자동으로 초기화 된다.

 종류

타입

default 값

 정수형

 byte[]

0

 short[]

0

 char[]

'\u0000'

 int[]

0

 long[]

0L

 실수형

 float[]

 0.0F

 double[]

 0.0

 논리형

 boolean[]

false

 참조형

 클래스

null






2. 배열 복사. 얕은 복사 vs. 깊은 복사


1) 얕은 복사

- 얕은 복사일 경우 기종의 항목들을 참조하는 또하나의 객체를 만들 뿐이다.



- 코드1을 보면 new_arr = old_arr로 복사 후 new_arr[1]의 값을 바꾸었다.

- 이후 old_arr의 요소들을 확인해보면 old_arr[1]의 값이 바뀐 것을 확인할 수 있다.

코드1

결과1

- 따라서 얕은 복사는 같은 값들을 참조하는 다른 이름의 객체를 만든 것 뿐이다.





2) 깊은 복사

- 깊은 복사를 해주기 위해서는 크게 2가지 방법이 있다.

 > for문을 사용하여 일일이 값을 초기화 해준다.

 > System.arraycopy()를 사용한다.



- 코드2는 System.arraycopy()를 사용하였다.

System.arraycopy(복사 할 배열, 시작 index, 복사 받는 배열, 시작 index, 길이[복사할 개수])



코드2

결과2




- 깊은 복사는 얕은 복사와 달리 새로운 값을 같으므로 new_arr 요소의 값을 변경하여도 old_arr의 요소가 변하지 않는다.







'JAVA > 기초' 카테고리의 다른 글

Java Singleton(싱글톤)  (0) 2020.03.17
Java static 정적 변수, 메소드  (0) 2020.03.17
Java 향상된 for문, label  (0) 2020.03.16
Java 형변환  (0) 2020.03.15
Java 데이터 타입  (0) 2020.03.15

Java 향상된 for문, label



1. 향상된 for문

- 배열이나 컬렉션 객체를 쉽게 처리하기 위하여 사용할 수 있다.

- 기존 for문과 달리 추가적인 변수와 증감식을 사용하지 않는다.

- 반복 횟수는 배열이나 객체의 길이만큼 반복한다.


코드1


결과1




2. Label(이름)

- 중첩된 for문에서 break를 해줄 때 사용할 수 있다.

- 결과2를 보면, break를 사용하면 안쪽의 for문만 종료된다.


코드2

결과2


- 하지만 label을 지정해주고 break Out;을 해줌으로써 바깥의 for문이 종료되도록 만들 수 있다.

코드3

결과3





'JAVA > 기초' 카테고리의 다른 글

Java static 정적 변수, 메소드  (0) 2020.03.17
Java 배열 기본값, 배열 복사  (0) 2020.03.16
Java 형변환  (0) 2020.03.15
Java 데이터 타입  (0) 2020.03.15
JAVA(자바) - Stack(스택)  (0) 2019.05.16

Java 형변환





1. 자동 형변환

> 큰 크기 타입 = 작은 크기 타입; 


: 작은 크기의 타입이 큰 크기의 타입에 저장될 때 발생한다.



ㄴ 타입 크기 비교

byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)


ㄴ 연산 시에도 이러한 자동 형변환이 일어나는데, 연산을 한다면 작은 타입이 큰 타입으로 형변환되어 연산을 한다.

예를 들어 [int형 + double형]을 연산하면 작은 타입의 int형이 double형으로 형변환하여 연산되고 double형을 결과로 얻는다.


ㄴ char형은 범위가 0~65535으로 음수 저장이 불가능하다. 따라서 byte나 short형을 char형으로 자동 형변환 하려고 하면 에러가 발생한다.






2. 강제 형변환

> 작은 크기 타입 = (작은 크기 타입) 큰 크기 타입; 


: 자동 형변환와 달리 큰 크기 타입을 작은 크기 타입으로 형변환한다. 크기가 적어짐으로써 저장된 값이 손상될 수도 있으므로 사용할 때는 주의하여야 한다.






'JAVA > 기초' 카테고리의 다른 글

Java static 정적 변수, 메소드  (0) 2020.03.17
Java 배열 기본값, 배열 복사  (0) 2020.03.16
Java 향상된 for문, label  (0) 2020.03.16
Java 데이터 타입  (0) 2020.03.15
JAVA(자바) - Stack(스택)  (0) 2019.05.16

Java 데이터 타입





기본 타입

 종류

타입 

크기 

값 범위 

 정수

byte

1 byte

-2^7~ 2^7-1 [-128~127] 

short

2 byte

-2^15 ~ 2^15-1 

char

2 byte

0~ 2^16-1 [0~65535] 

int

4 byte

-2^31 ~ 2^31-1 

long

8 byte

 -2^63 ~ 2^63-1

 실수

float

4 byte

 

double

8 byte

 

 논리

boolean

1 byte

 


1. 자바는 기본적으로 정수 연산을 int 타입으로 수행하므로 

[byte형 변수 + byte형 변수]의 결과를 byte형 변수에 저장하려고 하면 에러가 발생한다.


2. char형 변수를 초기화 할 때, char c = '' 식으로 빈 문자로 초기화 한다면 에러가 발생한다.






타입 별 범위 값

타입 

최소값 상수

최대값 상수

byte

Byte.MIN_VALUE

Byte.MAX_VALUE

short

Short.MIN_VALUE

Short.MAX_VALUE

int

Integer.MIN_VALUE

Integer.MAX_VALUE

long

Long.MIN_VALUE

 Long.MAX_VALUE

float

Float.MIN_VALUE

Float.MAX_VALUE

double

Double.MIN_VALUE

 Double.MAX_VALUE









'JAVA > 기초' 카테고리의 다른 글

Java static 정적 변수, 메소드  (0) 2020.03.17
Java 배열 기본값, 배열 복사  (0) 2020.03.16
Java 향상된 for문, label  (0) 2020.03.16
Java 형변환  (0) 2020.03.15
JAVA(자바) - Stack(스택)  (0) 2019.05.16

+ Recent posts