โš™๏ธ backend/โ˜•๏ธ java

Day02. ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ

dev!n 2023. 7. 7. 08:54

tip๐Ÿ’ก mac์˜ finder์—์„œ ์ˆจ๊น€ ํด๋” ๋ณด๊ธฐ command+shift+.

์ž๋ฐ” ๊ธฐ๋ณธ ๋ฌธ๋ฒ•

Method

์ž‘์„ฑ ๋ฐฉ๋ฒ•

/* syntax */
modefiers returnType methodName(parameters) {
	[return ๊ฐ€์ง€๊ณ  ๋‚˜๊ฐˆ ๊ฐ’;] // [์ƒ๋žต ๊ฐ€๋Šฅ]
}
  1. modefiers(0๊ฐœ ์ด์ƒ) ์ œํ•œ์ž
    1. access modefier ์ ‘๊ทผ ์ œํ•œ์ž
      • public ์–ด๋””์„œ๋‚˜ ์•„๋ฌด๋‚˜
      • protected ํด๋”๊ฐ€ ๋‹ฌ๋ผ๋„ ์ƒ์†๊ด€๊ณ„๋ฉด ์–ด๋””์„œ๋‚˜
      • ( ) ๊ฐ™์€ ํŒจํ‚ค์ง€๋ผ๋ฉด ์•„๋ฌด๋‚˜
      • private ํ•˜๋‚˜์˜ ๊ฐ์ฒด ์•ˆ์—์„œ๋งŒ. ์ด๊ฑธ ๋ถ™์—ฌ์ฃผ๋ฉด ์€๋‹‰=์บก์Šํ™”
    2. ๊ธฐํƒ€ ์ œํ•œ์ž
      • static ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ์ ‘๊ทผ
      • final ์ƒ์†, ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๊ธˆ์ง€
      • abstract
      • syncronized
      • default
  2. returnType ๋ฐ˜ํ™˜ ๋ฐ์ดํ„ฐํƒ€์ž…
    • void ๋ฆฌํ„ด ๊ฐ’์ด ์—†๋‹ค
    • primitive type ex) int, double, char
    • object type ex) String, ์‚ฌ์šฉ์ž ์ •์˜ ํด๋ž˜์Šค ๋ฐ์ดํ„ฐํƒ€์ž…
    • ๋ฆฌํ„ดํ•  ๊ฒŒ ๋งŽ๋‹ค๋ฉด Array, Collections
  3. methodName
    • ์ด๋ฆ„ ๊ทœ์น™ camelCase
  4. parameter ๋งค๊ฐœ๋ณ€์ˆ˜
    • datatype variableName

ํ˜ธ์ถœ ๋ฐฉ๋ฒ•

์ˆœ์„œ๋Œ€๋กœ ํ™•์ธ

  1. static method
    1. ClassName.method([์ธ์ˆ˜, ...]);
    2. ex) int i = Integer.parseInt(stringVarible);
    • ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜๋กœ ์ ‘๊ทผํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค cf) 2. ์ผ๋ฐ˜์ 
    • ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์—์„œ ์ค‘์š”ํ•˜๊ฒŒ ์“ฐ์ž„
    • ์‚ฌ์šฉ ์—ฌ๋ถ€์™€ ์ƒ๊ด€ ์—†์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๋ฏ€๋กœ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„
    • static ์•ˆ์—์„œ non static์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ. this ์“ธ ์ˆ˜ ์—†์Œ. ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋‹ค๋ฆ„.
    // java.lang
    public final class Math {
    	public static double random() {
    		// ๋žœ๋ค ์ˆซ์ž ๋ฐ˜ํ™˜
    	}
    }
    
    public final class Integer {
    	public static int parseInt(String s) {
    		// ์ •์ˆ˜ ๋ฐ˜ํ™˜
    	}
    
    	public static String toString(int i) {
    		// ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜
    	}
    }
    
  2. ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด๋ถ€ method
    1. this.methodName([์ธ์ˆ˜, ...]);
    2. this ←→ super
      • ๋‚˜ ←→ ๋ถ€๋ชจ
      • this.fieldName, this.methodName, this(๊ฐ’, ...) ์ƒ์„ฑ์ž ๊ตฌํ˜„๋ถ€ ์ฒซ๋ฒˆ์งธ ์ค„์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
      • super.fieldName, super.methodName, super(๊ฐ’, ...)
  3. ์ผ๋ฐ˜์ 
    1. ํ˜ธ์ถœํ•˜๋ ค๋Š” method๋ฅผ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” class ์ƒ์„ฑ(new)
      1. ClassName classVariable = new ClassName([์ƒ์„ฑ์ž ์ „๋‹ฌ๊ฐ’]);
    2. ์ƒ์„ฑ๋œ ๊ฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ method๋ฅผ ํ˜ธ์ถœ
      1. classVariable.methodName([์ธ์ˆ˜, ...]);
    • ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋งŒ์„ ํ•„๋“œ(์†์„ฑ)๋ผ๊ณ  ํ•œ๋‹ค ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ๊ทธ๋ƒฅ ๋ณ€์ˆ˜
    • ์ž๋ฐ”์˜ ์‹œ์ž‘๊ณผ ๋ main method
      • public void main์„ ์ฐพ์•„์„œ ๊ฑฐ๊ธฐ์„œ๋ถ€ํ„ฐ ์‹œ์ž‘๋จ.
      • stack์— ์Œ“์ž„.

Java file

ํ•œ ํŒŒ์ผ ์•ˆ์—

  1. ์—ฌ๋Ÿฌ ๊ฐœ์˜ class ์ž‘์„ฑ ๊ฐ€๋Šฅ
  2. public class๋Š” ํ•˜๋‚˜๋งŒ ์ž‘์„ฑ ๊ฐ€๋Šฅ
  3. public class๋Š” ๋ฐ˜๋“œ์‹œ ํŒŒ์ผ๋ช…๊ณผ ๊ฐ™์•„์•ผ ํ•œ๋‹ค!
  4. public class ์•ˆ์— main method ์ž‘์„ฑ
    1. ์‹œ์ž‘ํ•˜๋ ค๋ฉด main method๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”
    2. ์‹œ์ž‘ํ•˜๋ ค๋Š” class์˜ ์ด๋ฆ„์œผ๋กœ ํŒŒ์ผ๋ช…์„ ์ง€์ •ํ•˜๊ณ  ๊ทธ class ์•ˆ์— main method ์ž‘์„ฑ
  5. modefier๋Š” public or (default)
  • ๋ชจ๋“  Java ๊ฐ์ฒด๋Š” Object๋ฅผ ์ƒ์† ๋ฐ›๋Š”๋‹ค

์—ฐ์‚ฐ์ž

+ ์‚ฐ์ˆ  ์—ฐ์‚ฐ ๋˜๋Š” ๋ฌธ์ž์—ด ๊ฒฐํ•ฉ

5 + 2 -> 5(int)
"5" + 2 -> 52(String)
"2" + 5 -> 25(String)
"5" + "2" -> 52(String)

'5' + 2 -> 55(int)
'A' + 2 -> 67(int)

/* ์—ฐ์‚ฐํ•˜๋ ค๋ฉด ์ตœ์†Œํ•œ 4bytes์˜ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค */
byte a=3, b=2; // -128~127
int c = a+b;
byte d = (byte)a+b;

+cf) ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„

Static

Class

ํด๋ž˜์Šค ์•ž์— static ๋ถˆ๊ฐ€. ๋‹จ inner class์—๋Š” ๊ฐ€๋Šฅ.

class A { // outer
	static class B { // inner
		// class ๊ด€๊ณ„ is Class, has Class ์„œ๋กœ ์ž์›์„ ์ „๋‹ฌํ•˜๋Š” ํŒจํ„ด์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค
		// ์ž์› ์ „๋‹ฌ์ด ๋ถˆํŽธํ•  ๋•Œ outer class์˜ ๋ชจ๋“  field(์ „์—ญ๋ณ€์ˆ˜), method์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค
		
		// ์ž๋ฐ”๋Š” ๊ฐ์ฒด์ง€ํ–ฅ(์žฌ์‚ฌ์šฉ)์ด ๋ชฉ์ ์ธ๋ฐ ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค๋ฉด 
		// ๋…๋ฆฝ์ ์œผ๋กœ ์“ธ ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ 
	}
}

cf) event(android)

Variable

์ง€์—ญ๋ณ€์ˆ˜

  • method ๋‚ด๋ถ€
  • ์„ ์–ธ๋œ ์˜์—ญ(method) ๋‚ด์—์„œ๋งŒ
  • ์ œํ•œ์ž ๋ถˆ๊ฐ€
  • ์‚ฌ์šฉ ์ „ ๋ฐ˜๋“œ์‹œ ์ดˆ๊ธฐํ™”

์ „์—ญ๋ณ€์ˆ˜ field

  • class ๋‚ด๋ถ€
  • ๋ชจ๋“  method์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ์ œํ•œ์ž ๊ฐ€๋Šฅ
    • ๊ฐ์ฒด ์ƒ์„ฑ ์•ˆํ•˜๊ณ  ๊ฐ์ฒด ์ด๋ฆ„์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
    • ๊ฐ™์€ class๋“ค์ด ๊ณต์œ ํ•˜๋Š” ๊ณต์œ  ๋ณ€์ˆ˜
    • spring
      • DI ๊ฐœ๋…์— ์˜ํ•ด ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๋งŒ๋“ ๋‹ค. ์‚ฌ์ „ ์ดˆ๊ธฐํ™”.
      • ๊ธฐ๋ณธ์ธ ๋งŒํผ ๋งŽ์ด ์“ฐ์ธ๋‹ค.
      • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ด์ .
  • ์ง€์—ญ๋ณ€์ˆ˜์™€ ์ด๋ฆ„์ด ๊ฐ™์„ ๋•Œ ๊ตฌ๋ถ„ this.์ „์—ญ๋ณ€์ˆ˜
  • ์ƒ์„ฑ ์‹œ์ ์— ์ž๋™ ์ดˆ๊ธฐํ™”
    • 0์— ์ค€ํ•˜๋Š” ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋จ
    • int ⇒ 0 | double ⇒ 0.0 | char ⇒ โ‚ฉu0000 | boolean ⇒ false | String ⇒ null

Method

  • ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ClassName.methodName([paramater, ...]);
  • static method ์•ˆ์—์„œ
    • non-static method ํ˜ธ์ถœ ๋ถˆ๊ฐ€
    • this ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ ์•ˆ๋จ

Block

  • ๋ฐฐํฌ ์‹œ ์‚ฌ์ „ ์ž‘์—…
    • db ์—ฐ๊ฒฐ, ์„œ๋ฒ„ ์ž‘๋™, ์‚ฌ์ „ ์ดˆ๊ธฐํ™” ๋“ฑ ์ผ๋ จ์˜ setting
    • ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๋„๋ก
static {
		System.out.println("static ๋จผ์ €");
}

์ž…๋ ฅ

Java 5.0 ์ดํ›„๋กœ Scanner ์ œ๊ณต

๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋‚ผ ๋•Œ ํ˜„์ €ํ•œ ์†๋„ ์ฐจ ⇒ iostream ์‚ฌ์šฉ

๋ฐ˜๋ณต๋ฌธ์ด 1์–ต๋ฒˆ ๋Œ๋ฉด ๋Œ€๋žต 1์ดˆ

java.util.Scanner

Scanner sc = new Scanner(System.in);
sc.nextInt(); 
sc.next(); 
sc.nextLine();

๋‹ค ์ง€์›ํ•ด์ค˜์„œ ์‰ฝ๋‹ค. ํ•˜์ง€๋งŒ ์†๋„๊ฐ€ ์ŠคํŠธ๋ฆผ์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ˜„์ €ํžˆ ๋Š๋ฆผ.

java.io.BufferedReader

InputStream → Reader → Buffered ๊ฐ€๊ณต. ๋‹คํ˜•์„ฑ, ์ƒ์† ๊ด€๊ณ„์ผ ๋•Œ

  1. byte ๋‹จ์œ„
    1. InputStream
    2. OutputStream
    file ์ „์†ก, ๋™์˜์ƒ,๋ณด์กฐ, filter stream ์žˆ์Œ
  2. Inputstream ——> new InputStreamReader(InputStream is);
  3. ๋ฌธ์ž๋‹จ์œ„๋กœ ๋ณ€ํ™˜ ํ•„์š”
  4. ๋ฌธ์ž ๋‹จ์œ„
    1. Reader
    2. Writer
    ์ฑ„ํŒ…,์†๋„๋ฅผ ์œ„ํ•ด ๊ถŒ์žฅ
  5. InputStreamReader ——> new BufferedReader(new InputStreamReader(System.in))
  6. ํ•œ๊ธ€์ฒ˜๋ฆฌ 2byte

์ฐธ๊ณ  ๋งํฌ

http://www.tcpschool.com/java/java_api_string

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Scanner.html

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/BufferedReader.html