μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Git
- νμ΄μ¬
- Vue.js
- thymeleaf
- Spring
- μ€λΈμ
- MySQL
- springboot
- Postman
- κ°μ¬μ€
- java
- Python
- μκ³ λ¦¬μ¦
- ν΄λ¦° μ½λ
- Codeup
- spring security
- Spring Boot
- JPA
- 둬볡
- ν°μ€ν 리μ±λ¦°μ§
- μ€νλ§
- Gradle
- mariadb
- κΈ°μ΄100μ
- golang
- ν΄λ¦°μ½λ
- go
- μ½λμ
- GitHub
- H2 μ€μΉ
- Today
- Total
nyximos.log
[Java] μλ° λ°μ΄ν° νμ , λ³μ κ·Έλ¦¬κ³ λ°°μ΄ λ³Έλ¬Έ
π©π λͺ©ν
μλ°μ ν리미ν°λΈ νμ , λ³μ κ·Έλ¦¬κ³ λ°°μ΄μ μ¬μ©νλ λ°©λ² μ΅νκΈ°
π©π» νμ΅ν κ²
- ν리미ν°λΈ νμ μ’ λ₯μ κ°μ λ²μ κ·Έλ¦¬κ³ κΈ°λ³Έ κ°
- ν리미ν°λΈ νμ κ³Ό λ νΌλ°μ€ νμ
- 리ν°λ΄
- λ³μ μ μΈ λ° μ΄κΈ°ννλ λ°©λ²
- λ³μμ μ€μ½νμ λΌμ΄ννμ
- νμ λ³ν, μΊμ€ν κ·Έλ¦¬κ³ νμ νλ‘λͺ¨μ
- 1μ°¨ λ° 2μ°¨ λ°°μ΄ μ μΈνκΈ°
- νμ μΆλ‘ , var
π¦ΈβοΈ Primitive Type μ’ λ₯μ κ°μ λ²μ κ·Έλ¦¬κ³ κΈ°λ³Έ κ°
primitive type κΈ°λ³Έν νμ
κ°μ ν λΉν λ λ³μμ μ£Όμκ°μ κ°μ΄ κ·Έλλ‘ μ μ₯λκ³ ,
JVM Runtime Areaμ Stack Areaμ μ μ₯λλ€.
type | size | default value | range | |
λ Όλ¦¬ν | boolean | 1byte | flase | true,false |
μ μν | byte | 1byte | 0 | -128 ~ 127 |
short | 2byte | 0 | -32,768 ~ 32767 | |
int | 4byte | 0 | -2,147,483,648 ~ 2,147,483,647 |
|
long | 8byte | 0L | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
|
μ€μν | float | 4byte | 0.0F | 1.4E-45 ~ 3.4028235E38 |
double | 8byte | 0.0 | 4.9E-324 ~ 1.7976931348623157E308 |
|
λ¬Έμν | char | 2byte (16bit) | '\u0000' | 0 ~ 65,535 (2οΌΎ16 = 65536κ°μ§) |
μ΅μκ°κ³Ό μ΅λκ°μ μΆλ ₯ν΄λ³΄μ.
public class Main {
public static void main(String[] args) {
System.out.println("byte μ΅μκ° : " + Byte.MIN_VALUE);
System.out.println("byte μ΅λκ° : " + Byte.MAX_VALUE);
System.out.println("short μ΅μκ° : " + Short.MIN_VALUE);
System.out.println("short μ΅λκ° : " + Short.MAX_VALUE);
System.out.println("int μ΅μκ° : " + Integer.MIN_VALUE);
System.out.println("int μ΅λκ° : " + Integer.MAX_VALUE);
System.out.println("long μ΅μκ° : " + Long.MIN_VALUE);
System.out.println("long μ΅λκ° : " + Long.MAX_VALUE);
System.out.println("float μ΅μκ° : " + Float.MIN_VALUE);
System.out.println("float μ΅λκ° : " + Float.MAX_VALUE);
System.out.println("double μ΅μκ° : " + Double.MIN_VALUE);
System.out.println("double μ΅λκ° : " + Double.MAX_VALUE);
}
}
κ²°κ³Ό
byte μ΅μκ° : -128
byte μ΅λκ° : 127
short μ΅μκ° : -32768
short μ΅λκ° : 32767
int μ΅μκ° : -2147483648
int μ΅λκ° : 2147483647
long μ΅μκ° : -9223372036854775808
long μ΅λκ° : 9223372036854775807
float μ΅μκ° : 1.4E-45
float μ΅λκ° : 3.4028235E38
double μ΅μκ° : 4.9E-324
double μ΅λκ° : 1.7976931348623157E308
λ²μλ₯Ό λ²μ΄λλ κ°μ λμ νλ©΄ μ΄λ»κ² λ κΉ?
public class RangeTest {
public static void main(String[] args) {
byte num = 1000;
System.out.println(num);
}
}
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from int to byte
νμ μ λ°κΎΈλΌνλ€.
π¦ΈβοΈ Primitive Typeκ³Ό Reference Type
μ μ₯ν κ°μ μ’ λ₯μ λ°λΌ ν¬κ² κΈ°λ³Έν primitive typeκ³Ό μ°Έμ‘°ν reperence type λκ°μ§λ‘ λλλ€.
primitive type
μ€μ κ°(data)μ μ μ₯
μ°μ μ°μ° κ°λ₯
Stackμ μ μ₯
reperence type
μ΄λ€ κ°μ΄ μ μ₯λμ΄ μλ μ£Όμ(memory address)λ₯Ό μ μ₯
null λλ κ°μ²΄μ μ£Όμ(4byte μ μ) μ μ₯
λ§μ½ JVMμ΄ 32bitκ° μλλΌ 64bitλΌλ©΄ μ°Έμ‘°ν λ³μ ν¬κΈ°λ 8byteκ° λλ€.
CμΈμ΄μ λ¬λ¦¬ μ°Έμ‘°ν λ³μ κ° μ°μ°μ ν μ μλ€.
Heapμ μ μ₯
π¦ΈβοΈ λ¦¬ν°λ΄ literal
μμμ λ€λ₯΄λ€.
μμλ κ°μ ν λ² μ μ₯νλ©΄ λ³κ²½ν μ μλ μ μ₯곡κ°
리ν°λ΄μ κ·Έ μμ²΄λ‘ κ°μ μλ―Ένλ κ²μ΄λ€.
μλ¬Έ μ¬μ : λ¬Έμ κ·Έλλ‘μ νν
리ν°λ΄μλ νμ μ΄ μλ€. λ³μμ νμ μ κ°μ νμ (리ν°λ΄ νμ )μ μν΄ κ²°μ λλ€.
리ν°λ΄ | μ λ―Έμ¬ | |
λ Όλ¦¬ν | false, true | |
μ μν | 123, 0b0101, 077, 0xFF, 100L | L |
μ€μν | 3.14, 3.0e8, 1.4f, 0xFF, 100L | f, d |
λ¬Έμν | 'A', '1', '\n' | |
λ¬Έμμ΄ | "ABC", "123", "A", "true" |
// μ μ 리ν°λ΄
int a = 15;
int number = 1_000; // ν° μμ νν λ° μΈμμ μ½κ² νκΈ° μν΄ μΈλλ°λ‘ κ΅¬λΆ κ°λ₯
// μ€μ 리ν°λ΄
double f = 0.1234;
// λ¬Έμ 리ν°λ΄
char a = 'L';
// λ¬Έμμ΄ λ¦¬ν°λ΄
String literal = "hello";
// λ
Όλ¦¬νμ
리ν°λ΄
boolean a = true;
μ μνκ³Ό μ€μνμ νμ μ΄ μ¬λ¬κ°λΌμ μ λμ¬λ μ λ―Έμ¬λ₯Ό λΆμ¬μ νμ μ ꡬλΆνλ€.
μ μν 리ν°λ΄
JDK1.7λΆν° μ μν 리ν°λ΄μ μ€κ°μ ꡬλΆμ(_)λ₯Ό λ£μμ μκ² λμ΄ ν° μ«μλ₯Ό νΈνκ² μ½μ μ μλ€.
int number = 1_000;
int : μμ
long : l λλ L
16μ§μ : 0x λλ 0X (μ λμ¬)
8μ§μ : 0 (μ λμ¬)
μ€μν 리ν°λ΄
float : f
double : d
λ¬Έμν 리ν°λ΄
μμ λ°μ΄νλ‘ λ¬Έμ νλλ§ κ°μΌλ€.
λΉλ¬Έμμ΄μ λ£μ μ μλ€.
μ λμ½λλ‘ λ³νλκ³ μ΄μ§μλ‘ λ³ννμ¬ char νμ λ³μμ μ μ₯λλ€.
μ μ 리ν°λ΄μ μ΄μ©νμ¬ μ λμ½λλ₯Ό char νμ λ³μμ μ§μ λμ νλ κ²λ κ°λ₯νλ€.
(μΆλ ₯ν λ μ λμ½λ λμ½λ© λ°©μμ μ¬μ©νκΈ° λλ¬Έμ΄λ€.)
λ¬Έμμ΄ λ¦¬ν°λ΄
ν° λ°μ΄νλ‘ κ°μΌλ€.
λΉλ¬Έμμ΄μ λ£λ κ²μ΄ κ°λ₯νλ€.
Stringμ ν΄λμ€μ΄λ―λ‘ new μ°μ°μλ₯Ό μ¬μ©ν΄μΌ νμ§λ§ κ°λ¨ν μ¬μ©ν΄λ λλ€.
new μ°μ°μλ₯Ό μ¬μ©ν κ²½μ° λ©λͺ¨λ¦¬ ν λΉμ΄ μ΄λ£¨μ΄μ Έ νμ μλ‘μ΄ String μΈμ€ν΄μ€λ₯Ό μμ±νμ§λ§
λ¬Έμμ΄ λ¦¬ν°λ΄μ μ΄λ―Έ μ‘΄μ¬νλ κ²μ μ¬μ¬μ©νλ κ²μ΄λ€.
String str1 = "abc";
String str2 = "abc";
λ¬Έμμ΄ λ¦¬ν°λ΄ "abc"μ μ£Όμκ° str1κ³Ό srt2μ μ μ₯λλ κ²μ μλ―Ένλ€.
λ¬Έμμ΄ λ¦¬ν°λ΄μ μ»΄νμΌ μμ ν΄λμ€ νμΌμ μ μ₯λλ€. (JVMλ΄μ constant pool)
κ°μ λ΄μ©μ λ¬Έμμ΄ λ¦¬ν°λ΄μ νλ²λ§ μ μ₯λλ€.
λ¬Έμμ΄ λ¦¬ν°λ΄ = String μΈμ€ν΄μ€ = νλ² μμ±μ λ΄μ©λ³κ²½ x = νλμ μΈμ€ν΄μ€ 곡μ νλ©΄ λ¨ !
π€μ charμ μλκ³ Stringμλ§ λΉλ¬Έμμ΄μ λ£μμ μμκΉ?
λ³μ μ μΈμ κ° νμ μ κΈ°λ³Έκ°μΌλ‘ μ΄κΈ°ν νμ§λ§
Stringμ μ°Έμ‘°ν νμ μ null 보λ€λ λΉ λ¬Έμμ΄λ‘
charνμ κΈ°λ³Έκ°μΈ \u0000λμ 곡백μΌλ‘ μ΄κΈ°ν νλ κ²μ΄ 보ν΅μ΄λ€.
π¦ΈβοΈ λ³μ μ μΈ λ° μ΄κΈ°ννλ λ°©λ²
λ³μ
νλμ κ°μ μ μ₯ν μ μλ μ μ₯곡κ°
λ³μμ μΈ
λ³μνμ λ³μλͺ ;
int x;
xλΌλ μ΄λ¦μ κ°μ§ μ μ₯곡κ°μ΄ μκΈ΄λ€.
λ³μλͺ μ¬μ© κ·μΉ
- λ³μλͺ μ μ«μλ‘ μμ x
- _μ $λ¬Έμ μ΄μΈμ νΉμλ¬Έμ μ¬μ© x
- μλ° ν€μλ λ³μλͺ μ¬μ© x (int, class, return λ±λ±)
μ΄κΈ°ν
λ³μλͺ = κ°;
x = 10;
λ³μ xμ 10μ΄ μ μ₯
λμ μ°μ°μ, assignment operator, =
μ€λ₯Έμͺ½μ κ°μ μΌμͺ½μ μ μ₯
μ μΈκ³Ό μ΄κΈ°ν
int x = 10;
2μ°¨μ λ°°μ΄ μ μΈ
λ³΄ν΅ ν μ΄λΈ ννμ λ°μ΄ν°λ₯Ό λ΄λλ° μ¬μ©λλ€.
νμ [ ][ ] λ³μλͺ ;
νμ λ³μλͺ [ ][ ];
νμ [ ] λ³μλͺ [ ];
int[][] score;
int score[][];
int[] score[];
2μ°¨μ λ°°μ΄ μμ±
[ν][μ΄]λ‘ νν
int[][] score = new int[4][3]
4ν 3μ΄, 12κ°μ int κ°μ μ μ₯ν μ μλ 곡κ°μ΄ μκΈ΄λ€.
int κΈ°λ³Έκ°μΈ 0μΌλ‘ μ΄κΈ°ν λλ€.
π¦ΈβοΈ λ³μμ μ€μ½νμ λΌμ΄ννμ
λ³μμ μ€μ½ν
νλ‘κ·Έλ¨μμμ λ³μκ° μ¬μ©κ°λ₯ν λ²μ
λΌμ΄ννμ Lifetime
ν΄λΉ λ³μκ° μΈμ κΉμ§ λ©λͺ¨λ¦¬μ μ΄μμλμ§ μλ―Έ
μ μλ³μ Global variable
ν¨μ λ°μ μ μΈνμ¬ ν΄λμ€ μ 체μμ μ¬μ©κ°λ₯ν λ³μ
ν΄λμ€ λ³μ Class variable
ν΄λμ€ μμμμ μ μΈνμ¬ ν΄λμ€κ° λ©λͺ¨λ¦¬μ λ‘λλ λ μμ±
static μ΄ λΆμ
λͺ¨λ μΈμ€ν΄μ€μ 곡ν΅μ μΌλ‘ μ¬μ©
μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμλ μ¬μ©κ°λ₯
λΌμ΄ννμμ ν΄λμ€κ° λ©λͺ¨λ¦¬μ μ¬λΌκ°νλΆν° νλ‘κ·Έλ¨ μ’ λ£μκΉμ§
μΈμ€ν΄μ€ λ³μ Instance variable
ν΄λμ€ μμμμ μ μΈνμ¬ μΈμ€ν΄μ€κ° μμ±λ λ μμ±
λΌμ΄ννμμ μΈμ€ν΄μ€ μμ±νλΆν° μΈμ€ν΄μ€νν κ°μ²΄κ° μ¬λΌμ§ λκΉμ§
μ§μλ³μ Local variable
ν¨μ μμ μ μΈνμ¬ ν΄λΉ ν¨μ μμμλ§ μ¬μ©κ°λ₯ν λ³μ
λ³μ μ μΈλ¬Έμ΄ μνλμμλ μμ±
λΌμ΄ννμμ λ³μ μ μΈ ν λΈλ‘μ λ²μ΄λ λκΉμ§
π€ static λ³μλ μ μΈμ€ν΄μ€ λ³μλ₯Ό μ°Έμ‘°ν μ μλκ°?
ν΄λμ€ λ³μλ ν΄λμ€κ° λ©λͺ¨λ¦¬μ λ‘λλ λ μμ±λκ³ μΈμ€ν΄μ€ λ³μλ μΈμ€ν΄μ€λ₯Ό μμ±ν λ μμ±λλ€.
π¦ΈβοΈ νμ λ³ν, μΊμ€ν κ·Έλ¦¬κ³ νμ νλ‘λͺ¨μ
νμ λ³ν
λ³μ λλ 리ν°λ΄μ νμ μ λ€λ₯Έ νμ μΌλ‘ λ³ννλ κ²
μλ νμ λ³ν(묡μμ )κ³Ό κ°μ νμ λ³ν(λͺ μμ )μ΄ μλ€.
booleanμ νμ λ³νμ ν μ μλ€.
μλνμ λ³ν
μμ λ°μ΄ν° κ°μ λ ν° λ°μ΄ν° νμ μ ν λΉνλ κ²½μ°μλ§ μΌμ΄λ¨
byteν → shortν → intν → longν → floatν → doubleν
charν → intν
λ©λͺ¨λ¦¬ 곡κ°κ³Όλ λ³κ°λ‘ μλ£νμ΄ ννν μ μλ μ«μμ λ²μκ° κΈ°μ€μ΄λ€.
λ°λΌμ 8byteμΈ long λ³΄λ€ 4byteμΈ floatκ° λ ν¬λ€.(ννν μ μλ μ«μμ λ²μκ° λ ν¬κΈ° λλ¬Έμ)
κ°μ νμ λ³ν
(λ³νν νμ )λ³νν λ°μ΄ν°;
char a = 'a';
int num = 7;
a = (char)num;
μΊμ€ν Casting
κ°μ λ‘ ν° λ°μ΄ν° νμ μ μμ λ°μ΄ν° νμ μΌλ‘ μͺΌκ°μ μ μ₯
λ°μ΄ν°μ μμ€μ΄λ λ³νμ΄ μκΈΈμ μλ€.
νμ νλ‘λͺ¨μ Type promotion
μμ νμ κ° → ν° νμ μ ν λΉ
λ³ν μ ν κ° λμΌ
μλ νλ³ν μΌμ΄λ¨
π¦ΈβοΈ 1μ°¨ λ° 2μ°¨ λ°°μ΄ μ μΈνκΈ°
λ°°μ΄ Array
κ°μ νμ μ λ³μλ₯Ό νλμ λ¬ΆμμΌλ‘ λ€λ£¨λ κ²
// λ°°μ΄μ μ¬μ©νμ§ μμ λ
int score1, score2, score3, score4, score5;
// λ°°μ΄μ μ¬μ©ν λ
int[] score = new int[5];
scoreλ λ°°μ΄μ νμν μ°Έμ‘°λ³μμ΄μ§ κ°μ μ μ₯νκΈ° μν 곡κ°μ μλλ€.
[κ·Έλ¦Ό]
μ μΈ
μμ±λ λ°°μ΄μ λ€λ£° μ°Έμ‘°λ³μλ₯Ό μν κ³΅κ° λ§λ€κΈ°
νμ [ ] λ³μλͺ ;
int[] score;
String[] name;
νμ λ³μλͺ [ ];
int score[];
String name[];
μμ±
μ€μ μ μ₯ κ³΅κ° μμ±
νμ [ ] λ³μλͺ ; // μ μΈ
λ³μλͺ = new νμ [κΈΈμ΄]; // λ°°μ΄μμ±
int[] score;
score = new int[5];
μ μΈκ³Ό μμ±
νμ [ ] λ³μλͺ = new νμ [κΈΈμ΄];
int[] score = new int[5];
μΈλ±μ€ index
λ°°μ΄μ μμλ§λ€ λΆμ¬μ§ μΌλ ¨λ²νΈ
1μλκ³ 0λΆν° μμ
λ°°μ΄μ μμ element
μμ±λ λ°°μ΄μ κ° μ μ₯곡κ°
μ κ·Ό λ°©λ² : λ°°μ΄λͺ [μΈλ±μ€];
λ°°μ΄μ μ΄κΈ°ν
λ°°μ΄μ μμ±κ³Ό λμμ μλμΌλ‘ κΈ°λ³Έκ°μΌλ‘ μ΄κΈ°νλ¨
μνλ κ°μ λ£μ΄ μμ±κ³Ό μ΄κΈ°νλ₯Ό λμμλ κ°λ₯
μ μΈκ³Ό μμ±μ λ°λ‘ ν κ²½μ°μλ newμ°μ°μ μλ΅ λΆκ°λ₯
int[] score = new int[]{ 50, 60, 70, 80, 90 }
// new μ°μ°μ μλ΅κ°λ₯
int[] score = { 50, 60, 70, 80, 90 }
π¦ΈβοΈ νμ μΆλ‘ , var
var
- Java 10μμ λμ λμλ€.
- λ³μλ₯Ό μ μΈν λ νμ μ μλ΅ν μ μλ€.
- μ»΄νμΌλ¬κ° νμ μ μΆλ‘ νλ€. → μΆλ‘ ν μ μλ κ²½μ° μ»΄νμΌ μλ¬
- μ§μλ³μμ΄λ€.
- κ°λ°μκ° μ½κ² νμ μ μ μΆν μ μκΈ° λλ¬Έμ μ΄κΈ°νλ₯Ό λμμ ν΄μ€μΌ νλ€.
- nullλ‘ μ΄κΈ°ν ν μ μλ€. → μ»΄νμΌ μλ¬
- λ°°μ΄κ³Ό Lambdaμ μ¬μ©ν μ μλ€.
νμ μΆλ‘
- μ μ νμ΄νμ μ§μνλ μΈμ΄μμ, νμ
μ΄ μ ν΄μ§μ§ μμ λ³μμ λν΄
μ»΄νμΌλ¬κ° 리ν°λ΄ κ°μ ν΅ν΄ λ³μμ νμ μ μ€μ€λ‘ μ°ΎμλΌ μ μλλ‘ νλ κΈ°λ₯ - νμ
μ λͺ
μνμ§ μμλ λλ€.
- μ½λλμ μ€μΈλ€.
- μ½λμ κ°λ μ±μ λμΌ μ μλ€.
- Java 10λΆν° var κ΅¬λ¬Έμ΄ μκΈ°κ³ μλ° 11 λΆν°λ μ΄λ₯Ό ν΅ν λλ€ νμ
μ§μλ μκ²Όλ€.
μ»΄νμΌλ¬λ κ°λ°μκ° μ λ ₯ν μ΄κΈ°ν κ°μ ν΅ν΄ νμ μ μ μΆνλλ°,
varλ μ»΄νμΌλ¬κ° νμ μ μ μΆν μ μλλ‘ λ°λμ λ°μ΄ν°λ₯Ό μ΄κΈ°ν ν΄μΌ νλ€.
μ°Έμ‘°
2μ£Όμ°¨ κ³Όμ : μλ° λ°μ΄ν° νμ , λ³μ κ·Έλ¦¬κ³ λ°°μ΄
λ¨κΆμ±, μλ°μ μ μ κΈ°μ΄νΈ, λμ°μΆν, 2019
κΈ°λ³Ένκ³Ό μ°Έμ‘°ν - https://velog.io/@doli0913/κΈ°λ³Ένκ³Ό-μ°Έμ‘°ν
νμ λ³ν - https://velog.io/@rabbit/νμ -λ³ν-νμ -μΊμ€ν -νμ -νλ‘λͺ¨μ
var - https://codechacha.com/ko/java-local-variable-type-inference/
νμ
μΆλ‘ - https://velog.io/@bk_log/Java-νμ
-μΆλ‘
'Programming > JAVA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] ν΄λμ€ (0) | 2022.08.05 |
---|---|
[Java] μ μ΄λ¬Έ (0) | 2022.08.04 |
[Java] μ°μ°μ (0) | 2022.02.02 |
[JAVA] JVMμ 무μμ΄λ©° μλ° μ½λλ μ΄λ»κ² μ€ννλ κ²μΈκ° (0) | 2022.01.08 |
[JAVA] μλ°λ? (0) | 2022.01.06 |