JAVA 공부

00-JAVA 기초&기본 개념 공부

hakstroy 2025. 3. 9. 12:33

## 자바 기본 개념 복습

1. 자료형 : 자료의 형태(Data Type)
 - "Hello World", "안녕하세요" : 문자열(String)
 - 12, -34, 3.14 : 숫자 자료형(int, double...)
 - true, false : 불리안 자료형(boolean)

2. 자료형 종류
- 기본 자료형 : 실제 데이터 값을 저장하는 타입.

 : (int(정수,4byte), long(정수,8byte), float(실수,4byte),
    double(실수,8byte), boolean(참/거짓,1byte), char(문자,2byte) ...)
참조 자료형 : 데이터가 저장된 메모리 주소 값을 저장

 : (클래스(class), 인터페이스(interface), 배열, 열거형 .. (String))

3. 변수 

- 자료(값)을 저장하기 위한 공간
 ex) int a = 3; [ 자료형 변수명 = 값 ]; <-- 선언과 동시에 초기화
 ex) int a; 

       a=3; [ 선언 따로, 값 저장 따로 ]

4. 변수명

- 값을 가장 잘 표현하는 이름
 : 밑줄(_) , 문자(abc), 숫자(123) 사용 가능(공백은 사용 불가)
 : 밑줄(_) 또는 문자로 시작 가능
 : 한 단어 또는 2개 이상 단어의 연속 (권장 사항)
 : 소문자로 시작, 각 단어의 시작 글자의 대문자(첫 단어 제외)(권장 사항)

 : 예약어 사용 불가 (public, static, void, int, double, 등)
 : 대소문자 구분함 ( myName과 myname은 다른 변수)

5. 상수

- 변하지 않는 값
 ex) final 자료형 변수명 = 값;   

       final int a = 3; 
      : a = 5; //값 변경 불가

6. 형변환

- 정수, 실수, 문자열간의 변환을 한다.
 ex) (자료형) 변수명 or 값
   : int score = 93; 정수에서 실수로 변환을 원한다.
   : float score_f = (float)score; // 변환할 자료형으로 변수 선언 후 (자료형)변수명!
   : double score_d = (double)93; //값

    - int -> long / long -> float / float ->double로 형변환시 (float) 생략이 가능하다 <-- 묵시적 형변환 (=자동 형변환)
    - int -> long / float -> double 데이터 손실 없을 때 자동으로 변환
 ex) double score = 95.5; -> int score = (int)score 할때 데이터 손실 발생!! 생략 불가능 .5가 손실돼서 (명시적형변환)
     : double -> int 소수점 등 손실 발생 가능하다!

 

7. 연산자

- 값의 계산을 위해 사용되는 기호
  : ++num,  --num num의 값 1증가, 1감소 후 다음 작업 실행
  : num++, num-- 작업 후 num의 값 1증가, 1감소


8. 삼항 연산자
- 물음표 왼쪽의 조건이 참이면 : 왼쪽, 거짓이면 : 오른쪽
 ex) 조건?참일 때 : 거짓일 때 
  -- int x = 3;  int y = 5; int max = (x>y)?x:y 

  -- (조건) ? 조건이 참일 때 : 조건이 거짓일 때.


9. 문자열

 - 여러 문자들의 집합이다.
 - String s = "I like Java";
 : 문자열 기능 
  - length() : 길이 ex) s.length();
  - toUpperCase  : 대문자로 ex) s.toUpperCase();
  - toLowerCase  : 소문자로 ex) s.toLowerCase();
  - contains : 포함여부 ex) s.contains("Java"); : s 문자열에 Java가 포함되어 있는지 확인.
  - indexOf : 위치정보 ex) s.indexOf("Java"); : s 문자열에 Java가 어디에 위치되어있는지 확인.
  - lastIndexOf : 마지막 위치정보 ex) s.lastIndexOf("a");  
  - startsWith : 문자열로 시작하는가? ex) s.startsWith("I like"); true
  - endsWith : 문자열로 끝나는가? ex) s.endsWith("."); false
  - replace : 문자열 변환 ex) s.replace("I","You");
  - substring : 문자열 자르기 ex) s.substring(7);
  - trim : 앞뒤 공백 제거 ex) s.trim();
  - concat : 문자열 결합  ex) s.concat(" and Python"); I like Java and Python

10. 정수 비교
 ex) int num1 = 3; 

       int num2 = 3;

       if (num1 == num2)  true

11. 문자열 비교
 ex) String s1 = "Java"; 

       String s2 = "Java" ;

     -- 메모리상으로는 한 곳을 참조한다. 객체 선언을 안 하면 메모리는 같은 곳을 참조한다.

     -- 같은 곳을 바라봐서  [ s1 == s2 : true ] 이렇게 비교하면 안 된다.
 ex) String s1 = new String("Java"); 
 ex) String s2 = new String("Java"); 

   -- 서로 다른 공간에 메모리로 저장한다. 그래서 참조하는 곳은 달라서 비교했을 때 false

   -- s1 == s2 : false (주소비교) == 주소를 비교하는 거고.
   -- s1.eqauls(s2) : 문자열 비교!! true 문자열 같다 (값비교)
 **equalsIgnoreCase()은 대소문자 무시하고 비교한다.


12. 특수 문자

  - 특별한 기능을 수행하는 문자

 

13. IF문

 - 조건에 따른 분기.
방법1) if(조건)
             명령문
방법2) if(조건){

             명령문

           }


14. Switch Case

- 케이스(경우)에 따른 분기.
switch(조건){
      case 값 : 명령문
                     break;

      case 값 : 명령문
                     continue;
                     ...
      default: 명령문
}
break, default 생략도 가능 생략시 다음 문장으로 이동
break, continue

15. for

- 반복문
1) for(선언;조건;증감)
       명령문
2) for(선언;조건;증감){
       명령문1
       명령문2
}
ex) for(int i=0; i<5; i++){
        Sout("안녕");
      }

16. while
1) while(조건)
       명령어
2) while(조건){
      명령어1
      명령어2
 }

ex) int i=0;
      while(i<5){
              sout("안녕");
               i++;
       }
    :  i가 5보다 작다는 조건을 만족하는 동안

17. Do while

- 또 또 다른 반복문
1)do
       명령문
   while(조건);
2) do{
        명령문1
        명령문2
     }while(조건);
일단 한번은 무조건 실행 후 while조건이 만족시 계속 이행
거짓이면 한번만 돌고 넘어간

18. 이중반복문

- 반복문의 중첩
for(int i=0; i<2; i++){
   for(int j=0; j<3; j++){
          sout("안녕");
    }
}
i=0
안녕
안녕
안녕
--------
i=1
안녕
안녕
안녕

Break : 반복문 탈출
ex) 인사를 3번만 해야 한다면? 
for(int = 0; i < 5; i++){
     if(i==3){
          break; (반복문 탈출)
      }
sout("안녕");
}

 

19. Continue

- 반복문 뛰어넘는다.

ex) 3번째 인사는 하지 않으려면 
   for(int = 0; i < 5; i++){
         if(i==2){
                     continue; 인사하지않고 다음 회차로 건너뛰기.
           }
           sout("안녕");
     }


20. Java 배열
[배열]

- 같은 자료형의 값이 여러 개
선언1)
 - 자료형[] 변수명 = new 자료형[크기]
ex) int[] numbers = new int[5];
ex) String[] names = new String[3];
선언2)
변수명[인덱스] = 값;
ex) int[] numbers = new int[5];
- numbers[0] =1;
- numbers[1] =2;
- numbers[2] =3;
...
선언3)
자료형 변수명[] = new 자료형[크기];
ex) int numbers[] = new int[5];
ex) String names[] = new String[3];
선언4)
자료형[] 변수명 = new 자료형[] {값,값2,값3,...}
ex) int[] numbers = new int[]{1,2,3,4,}
ex) String[] names= new String[]{"A","B","C"};
ex) int[] numbers = {1,2,3,4,}
ex) String[] names= {"A","B","C"};
new 자료형[] 생략도 가능


21. 배연 순회

- 반복문을 이용한 배열의 각 요소 접근
방법1)

int[] num = new int[5];
for(int i=0; i<num.length; i++){
...//배열[i]

...//num[i];
}
ex) int[] numbers = {1,2,3,4,5}
for(int i=0; i<numbers.length; i++){
sout(numbers[i]);
}
**sout : system.out.println("");

방법2)
for(int i : 배열){
...//i
}
ex) int[] numbers = {1,2,3,4,5}
for(int number : numbers){
sout(number);
}


22. 다차원 배열

- 2차원 이상의 배열
- (1차원)배열 
변수명[인덱스] = 값;
ex) int[] numbers = new int[5];
numbers[0]=1;
numbers[1]=2;
numbers[2]=3;
numbers 배열 --> 1 | 5 | 10 
(2차원)배열
선언1)
자료형[][] 변수명 = new 자료형[세로][가로];
ex) int[][] numbers = new int[2][5]; 
ㅁ ㅁ ㅁ ㅁ ㅁ (0,0) (0,1), (0,2)~~
ㅁ ㅁ ㅁ ㅁ ㅁ (1,0) (1,1), (1,2)~~ 세로2 , 가로5
numbers[0][2] = 3
선언2)
int[][] numbers = new int[][]{
{1,2,3,4,5}, //세로,가로줄에 들어갈 데이터
{6,7,8,9,10}//세로,가로줄에 들어갈 데이터
}
다차원 배열 순회
for(int i=0; i<세로; i++){
    for(int j=0; j<가로: j++){
       ..// 배열[i][j];
     }
}
int[][] numbers = new int[][]{
{1,2,3,4,5},
{6,7,8,9,10} // 세로는 2, 가로는 5
};

for(int i=0; i<2; i++){
       for(int j=0; j<5: j++){
        ..// 배열[i][j];
      }
}
for(int i=0; i<numbers.length; i++){
          numbers.length - 배열의 세로크기를 알 수 있고
      for(int j=0; j<numbers[i].length; j++){
           numbers[i].length - 배열 세로의 가로크기를 알 수 있다.
            ..// 배열[i][j];
         }