[Chapter 05] μ°Έμ‘° νμ
Chapter 05 μ°Έμ‘°νμ
5.1 λ°μ΄ν° νμ λΆλ₯
λ°μ΄ν° νμ μ ν¬κ² κΈ°λ³Ένμ , μ°Έμ‘°νμ μΌλ‘ λλλ€
κΈ°λ³Ένμ
μ μ νμ byte, char, short, int, long
μ€μ νμ float, double
λ Όλ¦¬ νμ boolean
μ°Έμ‘° νμ β μ°Έμ‘° νμ μ΄λ κ°μ²΄μ λ²μ§λ₯Ό μ°Έμ‘°νλ νμ
λ°°μ΄ νμ , μ΄κ±° νμ , ν΄λμ€, μΈν°νμ΄μ€
κ°μ²΄λ? λ°μ΄ν°(νλ)μ λ©μλ(μ€ν λΈλ) μΌλ‘ ꡬμ±λ λ©μ΄λ¦¬.
κΈ°λ³Ένμ κ³Ό μ°Έμ‘°νμ μ μ°¨μ΄λ, μ μ₯λλ κ° μ΄λ€. κΈ°λ³Ένμ μλ κ°μ΄ μ§μ μ μ₯λμ§λ§, μ°Έμ‘° νμ μλ heap μμμ μ μ₯λ λ²μ§μ£Όμκ° μ μ₯λλ€.
μ¦, κΈ°λ³Ένμ μ stack μμμ λ³μμ κ°μ΄ μ§μ μ μ₯ λμ§λ§, μ°Έμ‘° νμ μ stack μμμ λ³μκ° heap μμμ μκΈ°λ κ°μ²΄μ μ£Όμκ° μ μ₯λλ€.
5.2 λ©λͺ¨λ¦¬ μ¬μ© μμ
- μλ°μμλ java λͺ λ Ήμ΄λ‘ JVMμ΄ κ΅¬λλλ©΄ μ΄μ체μ μ ν λΉλ°μ λ©λͺ¨λ¦¬μμμ ꡬλΆνλ€.
- λ©μλ(Method) μμ
λ°μ΄νΈμ½λ νμΌμ΄ μ μ₯λλ μμ - ν(heap) μμ
κ°μ²΄κ° μμ±λλ μμ - μ€ν(Stack) μμ
κΈ°λ³Έ νμ λ³μμ, μ°Έμ‘° νμ λ³μκ° μμ±λκ³ μ κ±°λλ€.
μ¦ .java λΌλ μμ€νμΌμ΄ μ»΄νμΌ λλ©΄, .class λΌλ λ°μ΄νΈ μ½λνμΌμ΄ λ©μλ μμμ μ μ₯λλ€. (JVMμ΄ .class νμΌμ μ€νμν€κΈ° μνμ¬ λ©μλ μμμ μ¬λ¦¬λ κ³Όμ μ λ‘λ©Loading μ΄λΌκ³ νλ€.)
μ¬κΈ°μ λ©μλ μμμ ν΄λμ€λ κ° λ°μ΄νΈ μ½λ λ³λ‘ λ§λ€μ΄μ§λ©°, λ©μλ μ½λλ 1κ°μ΄μ§λ§, μμ±μ μ½λμ μλ κ°μ²΄μ κ²½μ° ν μμμ μμ±λλ©° , μ¬λ¬κ° κ°μ§μ μκ³ , ν΄λΉ κ³Όμ μμ νμν λ³μκ° μ€ν μμμ μμ±λλ€.
5.3 μ°Έμ‘° νμ λ³μμ ==, β μ°μ°
- μ°Έμ‘° νμ λ³μμμμ ==, β μ°μ°μ λ³μκ° μ°Έμ‘°νκ³ μλ λ²μ§λ₯Ό λΉκ΅νλ κ² μ΄λ€.
5.4 nullκ³Ό NullPointerException
- μ°Έμ‘° νμ λ³μκ° μμ§ λ²μ§λ₯Ό μ μ₯νκ³ μμ§ μλ€λ λ»μΌλ‘ null(λ) κ°μ κ°μ§μ μλ€.
- NullPointerException μ κ²½μ° μ°Έμ‘° λ³μκ° κ°μ²΄λ₯Ό μ°Έμ‘°νκ³ μμ§ μλκ²μ λνλΈλ€.
int[] intArray = null;
intArray[0] = 10; //NullPointerException -> μ°Έμ‘°λ³μκ° κ°μ²΄λ₯Ό μ°Έμ‘°νκ³ μμ§ μꡬλ.
String str = null;
System.out.println("μ΄ λ¬Έμ μ:" + str.length()); //NullPointerException
//μλ μλ μμ°λ κ°μ²΄μ λ©λͺ¨λ¦¬λ₯Ό μ κ±°ν λ μ¬μ©νκΈ°λ νμλ€.
String hobby = "μ¬ν";
hobby = null;
5.5 λ¬Έμμ΄(String) νμ
- μλ°μ λ¬Έμμ΄μ String κ°μ²΄λ‘ μμ±λλ€.
String name; //String νμ
μ nameλ³μ μ μΈ
name = "νκΈΈλ"; //name λ³μμ λ¬Έμμ΄ λμ
String hobby = "μ¬ν"; //λ³μ μ μΈ, λ¬Έμμ΄ λμ
λ¬Έμμ΄ λΉκ΅
- μλ°λ λ¬Έμμ΄ λ¦¬ν°λ΄μ΄ λμΌνλ€λ©΄ κ°μ κ°μ²΄λ₯Ό 곡μ νλ€, νμ§λ©΄ new μ°μ°μλ₯Ό ν΅νμ¬ λ€λ₯Έ κ°μ²΄λ₯Ό λ§λ€μ μλλ° μ΄λ₯Ό κ°μ²΄ μμ± μ°μ°μ λΌκ³ νλ€.
String name1 = "νκΈΈλ";
String name2 = "νκΈΈλ";
// name1κ³Ό name2 λ κ°μ κ°μ²΄λ₯Ό μ°Έμ‘°νλ€. name1 = name2
String name1 = new String("νκΈΈλ");
String name2 = new String("νκΈΈλ");
// name1μ΄ μ°Έμ‘°νλ κ°μ²΄μ, name2κ° μ°Έμ‘°νλ κ°μ²΄λ λ€λ₯΄λ€ name1 != name2
- λ¬Έμμ΄ μμμλ 리ν°λ΄λ§ λΉκ΅νκΈ° μν΄μλ equals() λ©μλλ₯Ό μ¬μ©νλ€.
boolean result = str1.equals(str2); //str1 μλ³Έ λ¬Έμμ΄κ³Ό, str2μ λΉκ΅ λ¬Έμμ΄μ΄ κ°μμ§ κ²μ¬
//String λ³μλ λΉ λ¬Έμμ΄("")μ λμ
νμ¬ equalsμ λΉκ΅ν μλ μλ€.
λ¬Έμμ΄ μΆμΆ
- νΉμ λ¬Έμμ λ¬Έμλ₯Ό μ»κ³ μΆμλ charAt() λ©μλ μ¬μ©
String subject = "μλ° νλ‘κ·Έλλ°";
char charValue = subject.charAt(3);
//charValue = "ν"
λ¬Έμμ΄ κΈΈμ΄
- λ¬Έμμ΄μμ λ¬Έμμ κ°μλ₯Ό μ»κ³ μΆλ€λ©΄ length() λ©μλ μ¬μ© β 곡백λ ν¬ν¨
String subject = "μλ° νλ‘κ·Έλλ°";
int length = subject.length();
//length = 8
λ¬Έμμ΄ λ체
- νΉμ λ¬Έμμ΄μ λ€λ₯Έ λ¬Έμμ΄λ‘ λ체νκ³ μ ν λ replace() λ©μλ μ¬μ©
String oldStr = "μλ° νλ‘κ·Έλλ°";
String newStr = oldStr.replace("μλ°", "JAVA");
//newStr = JAVA νλ‘κ·Έλλ°
β μ¬κΈ°μ μ€μν λΆλΆμ νλ² λ§λ€μ΄μ§ κ°μ²΄λ μμ μ΄ λΆκ°λ₯νλ€. λ°λΌμ oldStrμ κ°μ²΄λ₯Ό μμ νλ κ²μ΄ μλλΌ, μλ‘μ΄ κ°μ²΄ newStrμ λ§λλ κ²μ΄λ€.
λ¬Έμμ΄ μλΌλ΄κΈ°
- νΉμ μμΉμμ λ¬Έμμ΄μ μλΌλ΄κ³ κ°μ Έμ€κ³ μΆλ€λ©΄ substring() λ©μλλ₯Ό μ¬μ©νλ€.
String ssn = "221228-1234567";
String firstNum = ssn.substring(0,6); //0λ² indexμμ μμνμ¬, 6λ²μ§Έ κΉμ§ μλ₯Έλ€
String secondNum = ssn.substirng(7); //7λ² indexμμ λκΉμ§ μλ₯Έλ€
//firstnum = "221228"
//secondNum = "1234567"
λ¬Έμμ΄ μ°ΎκΈ°
- λ¬Έμμ΄μ μ°Ύλλμλ 2κ°μ§ λ°©λ²μ΄ μλ€. indexOf()λ©μλμ, contains()λ©μλ
String subject = "μλ° νλ‘κ·Έλλ°";
int index = subject.indexOf("νλ‘κ·Έλλ°");
//index = 3 λ¬Έμμ΄μ΄ μλ€λ©΄ -1μ 리ν΄, λ¬Έμμ΄μ΄ μλ€λ©΄ μμνλ index λ₯Ό 리ν΄
boolean result = subject.contains("νλ‘κ·Έλλ°");
//result = True λ¬Έμμ΄μ΄ ν¬ν¨λμ΄ μλ€λ©΄ true, μλλ©΄ false
λ¬Έμμ΄ λΆλ¦¬
- λ¬Έμμ΄μ΄ νΉμ ν ꡬλΆμλ‘ κ΅¬λΆλμ΄ μμλ, split()λ©μλλ₯Ό μ΄μ©νμ¬ λλλ€.
String board = "λ²νΈ,μ λͺ©,λ΄μ©,κΈμ΄μ΄";
String[] arr = board.split(",");
//arr -> "λ²νΈ" "μ λͺ©" "λ΄μ©" "κΈμ΄μ΄" κ° μ μ₯μ΄ λλ€.
// μ΄λ κ² λλλ κ°κ°μ tokenμ΄λΌκ³ λΆλ₯Έλ€.
5.6 λ°°μ΄(Array) νμ
- λ³μλ νλμ κ°λ§ μ μ₯ν μ μμ§λ§, λ°°μ΄μ κ²½μ° μ°μλ 곡κ°μ κ°μ λμ΄μν€κ³ , κ° κ°μ indexλ₯Ό λΆμ¬ν μλ£κ΅¬μ‘° μ΄λ€.
- λ°°μ΄μ
κ°μ νμ μ κ°λ§ κ΄λ¦¬
νλ€. - λ°°μ΄μ
κΈΈμ΄λ λ리거λ μ€μΌμ μλ€.
- λ°°μ΄μ
λ°°μ΄ λ³μ μ μΈ
- λ°°μ΄μ μ¬μ©νκΈ° μν΄μλ λ°°μ΄ λ³μλ₯Ό μ μΈ νμ¬μΌ νλ€.
2κ°μ§ λ°©λ²μ΄ μμ§λ§ κ΄λ‘μ μΌλ‘ 1λ²μ λ§μ΄ μ¬μ©νλ€.
1)
νμ
[] λ³μ;
int[] intArray;
double[] doubleArray;
String[] strArray;
2)
νμ
λ³μ[];
int intArray[];
double doubleArray[];
String strArray[];
//λ°°μ΄ μ체λ κ°μ²΄μ΄λ―λ‘, ν μμμ μμ±λλ©° nullλ‘ μ΄κΈ°ν ν μλ μλ€.
int[] intArray = null;
κ° λͺ©λ‘μΌλ‘ λ°°μ΄ μμ±
νμ
[] λ³μ = {κ°0, κ°1, κ°2, κ°3, ...}
int[] intarr = {1,2,3,4,5};
- μ£Όμμ¬ν
μΌλ° λ³μμ²λΌ
νμ
[] λ³μ;
λ³μ = {κ°1, κ°2, κ°3....} μΌλ‘ μ μ₯ν μ μ
μ³. // μ»΄νμΌ μλ¬ λ°μ
λ³μ = new νμ
[] {κ°1, κ°2, κ°3 ...}; //μΌλ‘ λμ
String[] names = null;
names = new String[] {"κ°λλ€", "λΌλ§λ°", "μ¬μμ"};
- λ©μλμ λ§€κ°λ³μκ° λ°°μ΄νμ μΌλλ λμΌνλ€.
//λ©μλ μ μΈ
void printItem(int[] scores){...}
//μλͺ»λ λ©μλ νΈμΆ
printItem({10, 20, 30}); //μ»΄νμΌ μλ¬
//μ¬λ°λ₯Έ λ©μλ νΈμΆ
printItem( new int[] {10, 20, 30});
new μ°μ°μλ‘ λ°°μ΄μμ±
- λ°°μ΄ νλͺ© κ°μ κΈ°λ³Έκ°μΌλ‘ μ΄κΈ°νν μν β μ¦ κ°μ΄ μ£Όμ΄μ§μ§μκ³ κΈΈμ΄λ§ μ ν΄μ λ°°μ΄μ λ§λ μν
νμ
[] λ³μ = new νμ
[κΈΈμ΄];
int[] intarr = null;
intarr = new int[5]; // κΈΈμ΄κ° 5μΈ intνμ
μ intarrλ°°μ΄ μμ±
-> λ°°μ΄ μμλ 0μ μλ―Ένλ κΈ°λ³Έ κ°μΌλ‘ μ΄κΈ°ν λλ€.
λ°°μ΄ κΈΈμ΄
- λ°°μ΄μ κΈΈμ΄μ κ²½μ° λ¬Έμμ΄μ κΈΈμ΄λ₯Ό ꡬνλ λ°©λ²κ³Ό λΉμ·νλ€.
λ°°μ΄λ³μ.length; -> forλ¬Έμμ μ 체 λ°°μ΄ νλͺ©μ λ°λ³΅ν λ μμ£Ό μ¬μ©λλ€.
5.7 λ€μ°¨μ λ°°μ΄
- λ°°μ΄νλͺ©μ λλ€λ₯Έ λ°°μ΄μ΄ λμ λ κ² μ λ€μ°¨μ λ°°μ΄μ΄λΌ λΆλ₯Έλ€.
λ³μ[1μ°¨μμΈλ±μ€][2μ°¨μμΈλ±μ€][3μ°¨μμΈλ±μ€]
κ° λͺ©λ‘μΌλ‘ λ€μ°¨μ λ°°μ΄ μμ±
νμ
[][] λ³μ ={
{κ°1, κ°2, κ°3, ...}, //1μ°¨μ λ°°μ΄μ 0 μΈλ±μ€
{κ°4, κ°5, κ°6, ...}, //1μ°¨μ λ°°μ΄μ 1 μΈλ±μ€
..
};
new μ°μ°μλ‘ λ€μ°¨μ λ°°μ΄ μμ±
- 1μ°¨μ λ°°μ΄κ³Ό λμΌνκ² κ°μ΄ μκ³ κΈΈμ΄λ§ μ ν κ²½μ°
νμ
[][] λ³μ = new νμ
[1μ°¨μμ][2μ°¨μμ];
->
int[][] scores = new int[2][3];
5.8 κ°μ²΄λ₯Ό μ°Έμ‘°νλ λ°°μ΄
- κΈ°λ³Έ νμ λ°°μ΄μ κ° νλͺ©μ μ§μ κ°μ μ μ₯νμ§λ§, μ°Έμ‘° νμ (ν΄λμ€, μΈν°νμ΄μ€) λ°°μ΄μ κ° νλͺ©μ λ°°μ΄μ λ²μ§λ₯Ό μ μ₯νλ€.
5.9 λ°°μ΄ λ³΅μ¬
- λ°°μ΄μ κ²½μ° ν λ² μμ±λλ©΄ κΈΈμ΄λ₯Ό λ³κ²½ν μ μλ€. λ°λΌμ λ λ§μ μ μ₯ 곡κ°μ΄ νμνλ€λ©΄ λ ν° κΈΈμ΄μ λ°°μ΄μ μλ‘ λ§λ€κ³ μ΄μ μ λ°°μ΄μ 볡μ¬νμ¬μΌ νλ€. λνμ μΌλ‘ systemμ arraycopy() λ©μλκ° μλ€.
int[] oldIntArray = {1,2,3}; //κΈΈμ΄κ° 3μΈ λ°°μ΄
int[] newIntArray = new int[5]; //κΈΈμ΄κ° 5μΈ λ°°μ΄ μμ±
for (int i = 0; i<oldIntArray.length; i++){
newIntArray[i] = oldIntArray[i];
} //λ°°μ΄ λ³΅μ¬
-> Systemμ arraycopy()λ©μλ
System.arraycopy(μλ³Έ λ°°μ΄, μλ³Έ λ°°μ΄ λ³΅μ¬ μμ μΈλ±μ€, μλ°°μ΄, μλ°°μ΄ λΆμ¬λ£μ μΈλ±μ€, 볡μ¬νλͺ©μ);
System.arraycopy(oldIntArray, 0, newIntArray,0, oldIntArray.length);
5.10 λ°°μ΄ νλͺ© λ°λ³΅μ μν ν₯μλ forλ¬Έ
- ν₯μλ forλ¬Έμ κ²½μ° μ¦κ°μ μ μ¬μ©νμ§ μκ³ , νλͺ©μ κ°μλ§νΌ λ°λ³΅ν λ€ μλμΌλ‘ forλ¬Έμ λΉ μ Έλκ°λ€.
for( (2)νμ
λ³μ: (1)λ°°μ΄){
(3)μ€νλ¬Έ;
}
int[] scores = {10,20,30,40,50};
int sum = 0;
for (int score: scores){
sum += score;
}
//sum -> 150
5.11 main() λ©μλμ String[] λ§€κ°λ³μ μ©λ
- ν°λ―Έλμμ νλ‘κ·Έλ¨μ μ€νν λ μꡬνλ κ°μ΄ μμμλ μλ€. μ΄λ μ¬μ©
java sum 10 20 -> 10κ³Ό 20μ΄ λ©μΈ λ©μλμ String νμ
λ§€κ°λ³μλ‘ μ λ¬λλ€
public static void main(String[] args){..}
μ¬κΈ°μμ 10κ³Ό 20μ
String x = args[0];
String y = args[1]; λ‘ μ λ¬λλ€.
5.12 μ΄κ±°(Enum) νμ
- μ΄κ±° Enumνμ μ κ²½μ° μ νλ λͺ©λ‘μμ κ°μ μ¬μ© ν λ μ¬μ©νλ€.
- μμΌ(7), μ΄λ κ³μ (4) λ±μ μλ‘ λ€μ μκ³ , μ΄κ±° νμ μ μ΄λ¦μ 첫 λ¬Έμλ₯Ό λλ¬Έμλ‘ νκ³ μΊλ© μ€νμΌλ‘ μ§μ΄μ£Όλκ²μ΄ κ΄λ‘ μ΄λ€.
Week.java
MemberGrade.java
ProductKind.java
public enum Week {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}