JAVA의 λ³€μˆ˜πŸ™†β€β™‚οΈ

κΉ€λ―Όμ œΒ·2023λ…„ 10μ›” 13일
0
post-thumbnail

λ³€μˆ˜

  • λ³€μˆ˜λŠ” 값을 μ €μž₯ν•  수 μžˆλŠ” λ©”λͺ¨λ¦¬ νŠΉμ • λ²ˆμ§€μ— λΆ™μ΄λŠ” 이름이닀.
  • ν”„λ‘œκ·Έλž¨μ€ λ³€μˆ˜λ₯Ό 톡해 λ©”λͺ¨λ¦¬μ˜ νŠΉμ • λ²ˆμ§€μ— 값을 μ €μž₯ν•˜κ³  읽을 수 μžˆλ‹€.
  • ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” λ©”λͺ¨λ¦¬μ— 값을 μ €μž₯ν•˜κ³  μ‹Άλ‹€λ©΄ λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  λ³€μˆ˜μ— 값을 μ§€μ •ν•˜λ©΄ λœλ‹€.
    • 그러면 λ©”λͺ¨λ¦¬μ— 어디에 μ €μž₯ν•˜κ³  μ–΄λ–€ λ°©μ‹μœΌλ‘œ μ €μž₯ν• μ§€λŠ” ν”„λ‘œκ·Έλž˜λ° 언어와 μš΄μ˜μ²΄μ œκ°€ μ •ν•œλ‹€.

      β†’μžλ°”μ˜ 경우 JVM이 ν•œλ‹€.

  • λ³€μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€λ©΄ 반볡적으둜 μ‚¬μš©ν•΄μ•Ό ν•  λ³€μˆ˜λ₯Ό λ³€κ²½ν•  λ•Œ ν•œλ²ˆμ— λ³€κ²½ κ°€λŠ₯ν•˜λ‹€λŠ” 이점과 λ³€μˆ˜λͺ…μœΌλ‘œ κ·Έ λ³€μˆ˜μ— κ°„λž΅μ μΈ 의미λ₯Ό μ•Œ 수 μžˆλ‹€λŠ” 이점이 μžˆλ‹€.

λ³€μˆ˜μ˜ μ„ μ–Έ

  • λ³€μˆ˜λŠ” β€œ νƒ€μž… λ³€μˆ˜λͺ…; β€œμœΌλ‘œ μ„ μ–Έλœλ‹€.
  • μ„ μ–Έκ³Ό ν•¨κ»˜ μ΄ˆκΈ°ν™”ν•˜κ³  싢을 λ•ŒλŠ” β€œ νƒ€μž… λ³€μˆ˜λͺ… = κ°’; β€œ 으둜 μ΄ˆκΈ°ν™”ν•΄μ£Όλ©° 값을 μ΄ˆκΈ°ν™”ν•  λ•ŒλŠ” λŒ€μž… μ—°μ‚°μž β€œ=”λ₯Ό μ‚¬μš©ν•œλ‹€.
public class Variable {
	public static void main(String[] args) {
		int a = 1;
		double b = 1.1;
		String c = "Hello World";
		double d = 1;
		int e = (int)1.8;//μ†Œμˆ˜μ  버림
		String f = Integer.toString(a);
		}
}
  • λ³€μˆ˜ 이름은 μžλ°” μ–Έμ–΄μ—μ„œ μ •ν•œ κ·œμΉ™μ„ λ”°λΌμ•Όν•œλ‹€.
    • 첫 번째 κΈ€μžλŠ” λ¬Έμžμ΄κ±°λ‚˜ β€˜$’, β€˜_β€™μ΄μ–΄μ•Όν•˜κ³  숫자둜 μ‹œμž‘ν•  수 μ—†λ‹€.
    • μ˜μ–΄ λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•œλ‹€.
    • μ²«λ¬ΈμžλŠ” μ˜μ–΄ μ†Œλ¬Έμžλ‘œ μ‹œμž‘ν•˜λ˜ λ‹€λ₯Έ 단어가 뢙을 경우 첫 문자λ₯Ό λŒ€λ¬Έμžλ‘œ ν•œλ‹€. β†’lowerCamelCase **λ°˜λŒ€λ‘œ 클래슀 λ“± μ²«λ¬Έμžλ„ λŒ€λ¬Έμžλ‘œ μ‹œμž‘ν•˜λŠ” 경우 UpperCamelCase λ˜λŠ” PascalCase라고 ν•œλ‹€.
    • 문자 수 μ œν•œμ€ μ—†λ‹€.
    • μ˜ˆμ•½μ–΄λŠ” μ‚¬μš© ν•  수 μ—†λ‹€.
  • μ˜ˆμ•½μ–΄
    • 이미 ν•΄λ‹Ή ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ 의미λ₯Ό κ°–κ³  μ‚¬μš©λ˜κ³  μžˆλŠ” λ‹¨μ–΄λ‘œ λ³€μˆ˜ μ΄λ¦„μœΌλ‘œ μ‚¬μš©ν•˜κ²Œ λœλ‹€λ©΄ 컴파일 μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.
      • κΈ°λ³Έ νƒ€μž…, μ ‘κ·Ό μ œν•œμž, 클래슀 κ΄€λ ¨λœ 것(extends, enum…), 객체 κ΄€λ ¨λœ 것, λ©”μ†Œλ“œ κ΄€λ ¨λœ 것 λ“±λ“±

** λ³€μˆ˜λͺ…은 λ³€μˆ˜κ°€ μ–΄λ–€ 값을 μ €μž₯ν•˜κ³  μžˆλŠ”μ§€ μ‰½κ²Œ μ•Œ 수 μžˆλ„λ‘ ν•˜λŠ” 편이 μ’‹λ‹€.

λ³€μˆ˜ μ‚¬μš© λ²”μœ„

  • μžλ°”μ˜ λͺ¨λ“  λ³€μˆ˜λŠ” μ€‘κ΄„ν˜Έ {} 블둝 λ‚΄μ—μ„œ μ„ μ–Έλ˜κ³  μ‚¬μš©λœλ‹€.
  • λ©”μ†Œλ“œ 블둝 λ‚΄μ—μ„œ μ„ μ–Έλœ λ³€μˆ˜λ₯Ό 둜컬 λ³€μˆ˜(Local Variable)라 λΆ€λ₯΄κ³  이 둜컬 λ³€μˆ˜λŠ” λ©”μ†Œλ“œ 블둝 λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©λ˜κ³  λ©”μ†Œλ“œ 싀행이 λλ‚˜λ©΄ λ©”λͺ¨λ¦¬μ—μ„œ μžλ™μœΌλ‘œ 사라진닀.
  • μ€‘κ΄„ν˜Έ λ‚΄μ—μ„œ μž‘μ„±λœ λ³€μˆ˜λŠ” μ€‘κ΄„ν˜Έ 블둝 λ‚΄μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜κ³  λ°–μ—μ„œλŠ” μ‚¬μš©ν•  수 μ—†λ‹€.

λ³€μˆ˜μ˜ νƒ€μž…

κΈ°λ³Έ νƒ€μž…

  • μžλ°”λŠ” μ •μˆ˜, μ‹€μˆ˜, 논리값 등을 μ €μž₯ν•  수 μžˆλŠ” κΈ°λ³Έ νƒ€μž…μ„ μ œκ³΅ν•œλ‹€.
  • κΈ°λ³Έ νƒ€μž…
    • μ •μˆ˜ νƒ€μž…
      • byte
        • λ©”λͺ¨λ¦¬ μ‚¬μš© 크기 : 1λ°”μ΄νŠΈ
        • μ €μž₯λ˜λŠ” κ°’μ˜ ν—ˆμš© λ²”μœ„ : -128~127
      • char
        • λ©”λͺ¨λ¦¬ μ‚¬μš© 크기 : 2λ°”μ΄νŠΈ

        • μ €μž₯λ˜λŠ” κ°’μ˜ ν—ˆμš© λ²”μœ„ : 0~65535(μœ λ‹ˆμ½”λ“œ)

          char c1 = 'A'; //문자λ₯Ό 직접 μ €μž₯
          char c2 = 80; //10μ§„μˆ˜λ‘œ μ €μž₯
          char c3 = '\u0041'; //16μ§„μˆ˜λ‘œ μ €μž₯
      • short
        • λ©”λͺ¨λ¦¬ μ‚¬μš© 크기 : 2λ°”μ΄νŠΈ
        • μ €μž₯λ˜λŠ” κ°’μ˜ ν—ˆμš© λ²”μœ„ : -32,768 ~ 32,767
      • int
        • λ©”λͺ¨λ¦¬ μ‚¬μš© 크기 : 4λ°”μ΄νŠΈ

        • μ €μž₯λ˜λŠ” κ°’μ˜ ν—ˆμš© λ²”μœ„ : -2,147,483,648 ~ 2,147,483,647

          int n1 = 0b1101;//2μ§„μˆ˜
          int n2 = 0203; //8μ§„μˆ˜
          int n3 = 300; //10μ§„μˆ˜
          int n4 = 0xBF; //16μ§„μˆ˜
      • 2μ§„μˆ˜, 8μ§„μˆ˜, 16μ§„μˆ˜ μ •μˆ˜λŠ” int μžλ£Œν˜•μ„ μ‚¬μš©ν•˜μ—¬ ν‘œμ‹œν•˜μ§€λ§Œ, 숫자 μ•žμ— μ•½μ†λœ 기호λ₯Ό λΆ™μ—¬μ„œ 이듀을 κ΅¬λΆ„ν•œλ‹€.
      • long
        • λ©”λͺ¨λ¦¬ μ‚¬μš© 크기 : 8λ°”μ΄νŠΈ

        • μ €μž₯λ˜λŠ” κ°’μ˜ ν—ˆμš© λ²”μœ„ : μ•½ -9,223,372,036,854,775,808 ~Β 9,223,372,036,854,775,807

          long l1 = 10;
          long l2 = 20L;
    • μ‹€μˆ˜ νƒ€μž…
      • float

        • λ©”λͺ¨λ¦¬ μ‚¬μš© 크기 : 4λ°”μ΄νŠΈ
        • μ €μž₯λ˜λŠ” κ°’μ˜ ν—ˆμš© λ²”μœ„ : -1.4 10^(-45) ~ 3.4 10^(38)
        • 정밀도(μ†Œμˆ˜μ  μ΄ν•˜ 자리) : 7자리
      • double
        - λ©”λͺ¨λ¦¬ μ‚¬μš© 크기 : 8λ°”μ΄νŠΈ
        - μ €μž₯λ˜λŠ” κ°’μ˜ ν—ˆμš© λ²”μœ„ : -4.9 10^(-324) ~ 1.8 10^(308)
        - 정밀도(μ†Œμˆ˜μ  μ΄ν•˜ 자리) : 15자리

        float f1 = 3.14f;
        double d1 = 3.14;
    • 논리 νƒ€μž…
      • boolean

        boolean b = true;

μ°Έμ‘° νƒ€μž…

  • μ°Έμ‘° νƒ€μž…μ€ 객체의 λ²ˆμ§€λ₯Ό μ°Έμ‘°ν•˜λŠ” νƒ€μž…μ„ λ§ν•œλ‹€.
  • λ°°μ—΄ νƒ€μž…, μ—΄κ±° νƒ€μž…, 클래슀, μΈν„°νŽ˜μ΄μŠ€κ°€ μžˆλ‹€
  • μ°Έμ‘° νƒ€μž…μΈ λ°°μ—΄, μ—΄κ±°, 클래슀, μΈν„°νŽ˜μ΄μŠ€ λ³€μˆ˜λŠ” λ©”λͺ¨λ¦¬μ˜ λ²ˆμ§€λ₯Ό λ³€μˆ˜ μ•ˆμ— μ €μž₯ν•œλ‹€.
  • λŒ€ν‘œμ μΈ μ°Έμ‘° νƒ€μž…μΈ String 클래슀λ₯Ό 보면 μ•„λž˜μ™€ 같이 String νƒ€μž…μœΌλ‘œ μ„ μ–Έλ˜μ–΄ μžˆλŠ” λ¬Έμžμ—΄μ΄ μžˆλ‹€κ³  생각해보면 이 λ¬Έμžμ—΄μ„ name에 λŒ€μž…ν•œ 것 처럼 λ³΄μ΄μ§€λ§Œ name은 β€œκΉ€λ―Όμ œβ€κ°€ μ €μž₯λ˜μ–΄ μžˆλŠ” 객체의 μ£Όμ†Œκ°’μ„ 가지고 있고 name λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œλ§ˆλ‹€ 이 μ£Όμ†Œλ₯Ό μ°Έμ‘°ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” ν˜•νƒœμ΄λ‹€.
    String name = "κΉ€λ―Όμ œ";
    • κΈ°λ³Έ νƒ€μž…μ€ λ³€μˆ˜μ— 직접 값을 μ €μž₯ν•˜μ§€λ§Œ 이와 같은 μ°Έμ‘°νƒ€μž… λ³€μˆ˜λŠ” λ³€μˆ˜μ— 객체 μ£Όμ†Œκ°’μ„ μ €μž₯ν•˜κ³  λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œλ§ˆλ‹€ 객체λ₯Ό μ°Έμ‘°ν•˜μ—¬ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— 이λ₯Ό μ°Έμ‘° νƒ€μž… λ³€μˆ˜λΌκ³  ν•œλ‹€.
    • 기본적으둜 λ³€μˆ˜λŠ” μŠ€νƒμ˜μ—­μ— μ €μž₯λœλ‹€. κΈ°λ³Έ νƒ€μž… λ³€μˆ˜λŠ” 직접 값을 μ €μž₯ν•˜μ§€λ§Œ μ°Έμ‘° νƒ€μž… λ³€μˆ˜λŠ” μ£Όμ†Œλ₯Ό μ €μž₯ν•˜μ—¬ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œ νž™ μ˜μ—­μ— λ“€μ–΄κ°€μ„œ μ£Όμ†Œμ— μ €μž₯된 객체λ₯Ό μ°Έμ‘°ν•΄ μ‚¬μš©ν•œλ‹€.

μ°Έμ‘° λ³€μˆ˜μ˜ ==,β‰ μ—°μ‚°

  • κΈ°λ³Έ νƒ€μž… λ³€μˆ˜μ˜ ==, ≠연산은 λ³€μˆ˜μ˜ 값이 같은지λ₯Ό κ²€μ‚¬ν•˜μ§€λ§Œ μ°Έμ‘° νƒ€μž… λ³€μˆ˜λ“€ κ°„μ˜ ==,β‰  연산은 λ™μΌν•œ 객체λ₯Ό μ°Έμ‘°ν•˜λŠ”μ§€λ₯Ό κ²€μ‚¬ν•œλ‹€.
  • μ°Έμ‘° νƒ€μž… λ³€μˆ˜μ˜ 값은 νž™ μ˜μ—­ 객체 μ£Όμ†Œμ˜ λ²ˆμ§€λ₯Ό κ°–κ³  μžˆμœΌλ―€λ‘œ ==,β‰  연산은 κ²°κ΅­ λ²ˆμ§€ 값을 λΉ„κ΅ν•˜λŠ” 것이 λœλ‹€. β†’λ™μΌν•œ λ²ˆμ§€ 값을 κ°–κ³  μžˆλ‹€λŠ” 것은 λ™μΌν•œ 객체λ₯Ό μ°Έμ‘°ν•œλ‹€λŠ” μ˜λ―Έμ΄λ‹€.
String str1 = "κΉ€λ―Όμ œ";
String str2 = "κΉ€λ―Όμ œ";
if (str1==str2){
    System.out.println("κ°™λ‹€");
}
-> κ°™λ‹€.
  • μœ„ str1κ³Ό str2λŠ” 같은 객체λ₯Ό μ°Έμ‘°ν•œλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.
  • 값이 같은지 비ꡐ할 λ•ŒλŠ” equals λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•΄μ£Όλ©΄ λœλ‹€.

nullκ³Ό NullPointException

  • μ°Έμ‘° νƒ€μž… λ³€μˆ˜λŠ” νž™ μ˜μ—­μ˜ 객체λ₯Ό μ°Έμ‘°ν•˜μ§€ μ•ŠλŠ” 뜻으둜 null 값을 κ°€μ§ˆ 수 μžˆλ‹€.
  • null값도 μ΄ˆκΈ°κ°’μœΌλ‘œ μ‚¬μš©λ  수 있기 λ•Œλ¬Έμ— null둜 μ΄ˆκΈ°ν™”λœ μ°Έμ‘° λ³€μˆ˜λŠ” μŠ€νƒ μ˜μ—­μ— μƒμ„±λœλ‹€.
String str = null;
System.out.println(str);
-> null
  • μ°Έμ‘°λ³€μˆ˜κ°€ null을 κ°€μ§ˆ λ•ŒλŠ” μ°Έμ‘° 객체가 μ—†μœΌλ―€λ‘œ λ³€μˆ˜λ₯Ό 톡해 객체λ₯Ό μ‚¬μš©ν•  μˆ˜λŠ” μ—†λ‹€.
  • null μƒνƒœμ—μ„œ 객체의 λ°μ΄ν„°λ‚˜ λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ NullPointException이 λ°œμƒν•œλ‹€.
    String str = null;
    System.out.println(str.length());
    ->Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "str" is null

νƒ€μž… λ³€ν™˜

  • 데이터 νƒ€μž…μ„ λ‹€λ₯Έ 데이터 νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 것
byte a = 10;
int b = a; //λ³€μˆ˜ b에 int νƒ€μž…μœΌλ‘œ 10 μ €μž₯
  • μžλ™ νƒ€μž… λ³€ν™˜
    • μžλ™μœΌλ‘œ νƒ€μž… λ³€ν™˜μ΄ μΌμ–΄λ‚˜λŠ” 것
    • κ°’μ˜ ν—ˆμš© λ²”μœ„κ°€ μž‘μ€ νƒ€μž…μ΄ ν—ˆμš© λ²”μœ„κ°€ 큰 νƒ€μž…μœΌλ‘œ μ €μž₯될 λ•Œ λ°œμƒ
    • κ°’μ˜ ν—ˆμš© λ²”μœ„
      • byte<short<int<long<float<double
    • μ •μˆ˜ νƒ€μž…μ΄ μ‹€μˆ˜ νƒ€μž…μœΌλ‘œ μ €μž₯될 κ²½μš°μ—λŠ” 무쑰건 μžλ™ νƒ€μž… λ³€ν™˜μ΄ μΌμ–΄λ‚œλ‹€.
  • κ°•μ œ νƒ€μž… λ³€ν™˜
    • κ°’μ˜ ν—ˆμš© λ²”μœ„κ°€ 큰 νƒ€μž…μ΄ ν—ˆμš© λ²”μœ„κ°€ μž‘μ€ νƒ€μž…μœΌλ‘œ κ°•μ œλ‘œ λ‚˜λˆ μ„œ μ €μž₯ν•˜λŠ” 것

    • κ°•μ œ νƒ€μž… λ³€ν™˜μ€ μΊμŠ€νŒ… μ—°μ‚°μž ()λ₯Ό μ‚¬μš©ν•˜λŠ”λ° ()μ•ˆμ—λŠ” λ³€ν™˜ν•  νƒ€μž…μ΄ λ“€μ–΄κ°„λ‹€.

      int i = 65;
      char c = (char) i;
      System.out.print(c) //"A" 좜λ ₯
profile
였늘의 μž‘μ€ ν•˜λ£¨κ°€ μŒ“μ—¬ λ‚΄μΌμ˜ λ‚΄κ°€ λœλ‹€.πŸƒ

0개의 λŒ“κΈ€