java import문






import android.view.*;


- * 는 패키지에 속하는 모든 클래스들을 의미한다.


- 단, import문으로 지정된 패키지의 하위 패키지의 클래스들은 포함되지 않는다.




> 따라서 하위 패키지의 클래스를 사용하기 위해서는 import문을 1번 더 사용하여서 선언해주어야 한다.




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

Java Overloading vs. Overriding [오버로딩 vs. 오버라이딩]  (0) 2020.03.19
Java Annotation 어노테이션  (0) 2020.03.19
Java 상수 static final  (0) 2020.03.18
Java Singleton(싱글톤)  (0) 2020.03.17
Java static 정적 변수, 메소드  (0) 2020.03.17

Java 상수 static final






상수 static final


- final은 단어뜻대로 값을 한번 초기화하면 이후 수정할 수 없다.


- 그렇다면 final로 선언하면 상수라고 할 수 있지만, 생성자에서 초기화할 때 다른 값으로 초기화하면 인스턴스마다 다른 값을 갖게되어 상수의 의미와 맞지 않는다.


- 따라서 상수를 만들기 위하여 final이면서 static이여야 한다.





코드1

결과1


- static이여서 인스턴스 없이 사용할 수 있으며 final이라서 값을 변경할 수 없다.









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

Java Annotation 어노테이션  (0) 2020.03.19
Java import  (0) 2020.03.18
Java Singleton(싱글톤)  (0) 2020.03.17
Java static 정적 변수, 메소드  (0) 2020.03.17
Java 배열 기본값, 배열 복사  (0) 2020.03.16

Java Singleton(싱글톤)




Singleton(싱글톤)

- 프로그램에서 단 하나의 인스턴스만 만들수 있도록 보장해야 하는 경우 이 인스턴스를 싱글톤(Singleton)이라 한다.


- 클래스 외부에서 생성자를 호출할 수 없도록 제한해야 한다.





- 외부에서 생성하지 못하도록 클래스 내부에서 private 접근의 인스턴스를 생성하고, 생성자를 private로 선언한다.


- 마지막으로 생성한 private 객체를 return해주는 static 메소드를 만들어 객체를 리턴해준다.

코드1





- 생성자를 private로 선언했으므로 new로 인스턴스를 생성하려고 하면 에러가 발생한다.


- static 메소드인 getSingle을 이용하여 인스턴스를 가져올 수 있다.

코드2

결과1




- 결과1을 보면 ss와 ss2가 같은 것을 확인할 수 있으며 단 하나의 인스턴스만 생성된다.


간단히 보자면 인스턴스를 하나 생성 후 인스턴스를 생성할 수 없도록 막고 생성한 인스턴스를 가져와 사용할 뿐이다.







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

Java import  (0) 2020.03.18
Java 상수 static final  (0) 2020.03.18
Java static 정적 변수, 메소드  (0) 2020.03.17
Java 배열 기본값, 배열 복사  (0) 2020.03.16
Java 향상된 for문, label  (0) 2020.03.16

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