728x90
모듈
- java9에서 도입된 개념
- 패키지와 이미지등의 리소스를 담은 컨테이너
- 모듈 파일(.jmod)
└ 개발자가 쓰고 싶은 영역만 모듈로 묶음(모듈화)
- 메모리 제약 감소
- 필요한 요소만 사용 가능
자바 플랫폼
- 자바의 개발 환경(JDK)와 자바의 실행 환경(JRE)를 지칭한다.
- 자바 API 의 모든 클래스가 여러 개의 모듈로 재구성된다.
자바 실행 환경 비교
자바 모듈화의 목적
- 자바 컴포넌트들을 필요에 따라 조립하여 사용하기 위함
- 컴퓨터 시스템의 불필요한 부담 감소
기본 주요 패키지
java.lang
- 자바 language 패키지java.util
- 자바 유틸리티 패키지java.io
- 키보드, 모니터, 프린터, 디스크 등에 입출력을 할 수 있는 클래스와 인터페이스 제공java.awt
- 자바 GUI 프로그래밍을 위한 클래스와 인터페이스 제공javax.swing
- 자바 GUI 프로그래밍을 위한 스윙 패키지
Object 클래스
java.lang
패키지에 포함- 모든 클래스의 슈퍼 클래스
- 모든 클래스에 강제 상속
- 모든 객체가 공통으로 가지는 객체의 속성을 나타내는 메소드 보유
Ex1
class Point {
private int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
public class ObjectPropertyEx {
public static void print(Object obj){
System.out.println(obj.getClass().getName());
// 클래스 명을 받아와 출력
System.out.println(obj.hashCode());
// 해시 코드 : 객체를 생성할 때 고유하게 부여되는 객체의 ID값
// (출력 시 마다 다르게 나온다.)
System.out.println(obj.toString());
// 객체를 문자열로 만들어서 출력
System.out.println(obj);
}
public static void main(String[] args){
Point p = new Point(2,3);
print(p);
}
}
💡 toString() 이 반환하는 문자열
public String toString(){
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
💡 보통 프로그램 작성 시 _toString()_을 오버라이딩해, 사용한다.
Ex2. toString() 의 오버라이딩
class Point {
private int x, y;
public Point(int x, int y){
this.x = x;
this.y = y;
}
public String toString(){
return "Point(" + x + "," + y +")";
}
}
public class ToStringEx {
public static void main(String[] args){
Point p = new Point(2,3);
System.out.println(p.toString());
System.out.println(p);
System.out.println(p + "입니다.");
}
}
객체 비교 레퍼런스 equls()
boolean equals(Object obj)
- (a == b) : false | (a == c) : true
- (a.equals(b) : true | (a.equals(c) : true
- 객체 내의 내용물 비교
- 주소 값 비교의 경우에는 '== 연산자'를 사용한다.
class Point {
private int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
Point a = new Point(2, 3);
Point b = new Point(2, 3);
Point c = a;
if (a == b) // false
System.out.println("a==b");
if (a == c) // true
System.out.println("a==c");
Ex3. equals() 의 오버라이딩
class Point {
private int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public boolean equals(Object obj) {
Point p = (Point)obj;
if(x == p.x && y == p.y) return true;
else return false;
}
}
public class EqualsEx {
public static void main(String[] args){
Point a = new Point(2,3);
Point b = new Point(2, 3);
Point c = new Point(3,4);
if(a == b)
System.out.println("a==b");
if(a.equals(b))
System.out.println("a is equal to b");
if(a.equals(c))
System.out.println("a is equal to c");
}
}
Wrapper 클래스
- 이름이 Wrapper 인 클래스는 존재하지 않는다.
- 기본 타입의 값을 객체로 다룰 수 있도록 하기 위해 사용된다.
- Java 9 부터 생성자를 이용한 객체 생성은 불가하다.
- 기본 타입의 값으로 Wrapper 객체 생성
Integer i = Integer.valueOf (10);
Character c = Character.valueOf('c');
Double f = Double.valueOf(3.14);
Boolean b = Boolean.valueOf(true);
- 문자열로 Wrapper 객체 생성
Integer I = Interger.valueOf("10");
Double d = Double.valueOf("3.14");
Boolean b = Boolean.valueOf("false");
Float f = Float.valueOf((double) 3.14);
// Float 객체는 double 타입의 값으로 생성 가능
Ex4
public class WrapperEx {
public static void main(String[] args){
System.out.println(Character.toLowerCase('A'));
char c1 = '4', c2 = 'F';
if(Character.isDigit(c1))
System.out.println(c1 + "는 숫자");
if(Character.isAlphabetic(c2))
System.out.println(c2 + "는 영문자");
System.out.println(Integer.parseInt("-123"));
System.out.println(Integer.toHexString(28));
System.out.println(Integer.toBinaryString(28));
System.out.println(Integer.bitCount(28));
Double d = Double.valueOf(3.14);
System.out.println(d.toString());
System.out.println(Double.parseDouble("3.14"));
boolean b = (4>3);
System.out.println(Boolean.toString(b));
System.out.println(Boolean.parseBoolean("false"));
}
}
박싱과 언박싱
- JDK1.5 부터 자동 박싱과 자동 언박싱이 가능하다!
Integer ten = 10; //(자동 박싱) Integer ten = Integer.valueOf(10);
int n = ten; //(자동 언박싱) int n = ten.intValue();
- 박싱(boxing): 기본 타입의 값을 Wrapper 객체로 변환
- 언박싱(unboxing): Wrapper 객체에 들어 있는 기본 타입의 값을 빼내는 것
Ex5
public class AutoBoxingUnBoxingEx {
public static void main(String[] args) {
int n = 10;
Integer intObject = n;
System.out.println("intObject = " + intObject);
int m = intObject + 10;
System.out.println("m = " + m);
}
}
String 객체
- java.lang 패키지 내에 포함된 클래스
- String 클래스는 하나의 문자열 표현
- String 생성자
String 생성 방법
- 리터럴로 생성
- JVM이 리터럴을 관리하고 리터럴 테이블로 관리된다.
- 동일한 리터럴 공유 가능
- String 객체로 생성
- 힙 메모리에 String 객체가 생성된다.
- String 객체는 수정이 불가하다.
String s = new Stiring("Hello");
String t = s.concat("World!");
- String 비교시 반드시 equals()를 사용
💡 '==' 연산자는 Call by Reference방식으로 사용되므로 문자열 비교에는 사용하면 안된다.
(주소값이 같을 경우 true반환)
문자열 연결
- 피연산자에 문자열이나 객체가 포함되어 있는 경우
- 객체.toString()을 호출하여 문자열로 변환하여 연결한다.
- 기본 타입 값은 문자열로 변환하여 연결한다.
- String concat(String str)
- 기존 String 객체에 연결되지 않고 새로운 스트링 객체를 리턴한다.
StringBuffer 클래스
: 가변 크기의 문자열 저장 클래스
- Java.lang 패키지내에 포함
- String 클래스와 달리 문자열 변경 가능
- StringBuffer 객체의 크기는 스트링 길이에 따라 가변적
StringBuffer sb = new StringBuffer("java");
주요 메소드
StringBuffer 메소드 활용
StringTokenizer 클래스
: 하나의 문자열을 여러 문자열로 분리
String query = "name=kim&addr=seoul&age=21";
StringTokenizer st = new StringTodenizer(query, "&");
- 문자열을 분리할 때 사용되는 기준 문자 : 구분자(delimiter)
- 토큰(token) : 구분 문자로 분리된 문자열
- String 클래스의 split() 메소드를 이용하여 동일한 구현 가능
생성자
주요 메소드
Ex6
import java.util.StringTokenizer;
public class StringTokenizerEx {
public static void main(String[] args){
StringTokenizer st = new StringTokenizer("홍길동/장화/홍련/콩쥐/팥쥐", "/");
while(st.hasMoreTokens())
System.out.println(st.nextToken());
}
}
Math 클래스
- java.util.Random 클래스
- 다양한 형태로 난수 발생 가능
#난수 발생
- static double random()
- 0.0 이상 1.0 미만의 임의 double 값 반환
- 0에서 100사이 10개의 난수 발생
for(int x=0; x<10; x++) {
int n = ( int Math.random ()*100 + 1); // n 은 [1~100] 사이의 랜덤 정수
System.out.println(n);
}
Calendar 클래스
- java.util 패키지 내에 포함
- 시간과 날짜 정보 저장 및 관리
아래 노션 페이지에 자바 공부 내용에 대해 업로드 합니다!
수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑
개발 환경
작성 플랫폼
728x90
'🧑💻 Language > Java' 카테고리의 다른 글
[Java] 14. 스윙 (0) | 2021.06.05 |
---|---|
[Java] 13. GUI (0) | 2021.06.01 |
[Java] 11. 모듈과 패키지 (2) | 2021.05.26 |
[Java] 10. 인터페이스 (0) | 2021.05.26 |
[Java] 9. 추상 메소드와 추상 클래스 (0) | 2021.05.16 |