티스토리 뷰

Java와 C의 차이점, Java에서 주의할점

18.11.17) 오랫동안 C언어를 주로 사용해오다, 올해 Java로 바꾸며 헷깔렸던 점들과 언어 차이, 주의할 점 등을 정리

  • 메모리 구조와 Garbage Collection 개념
  • 8개의 '기본형변수' : 실제값 저장 / 나머지 '참조형변수' : 어떤값의 주소값 저장
    이때 C와 달리, 참조형변수들간엔 연산불가.
  • ex. Date today = new Date(); // Date객체를 생성후, 그 주소를 참조형변수 today에 저장
  • 상수는 선언과 동시에 초기화 해야함
    ex. final int MAX_SPEED = 100;
  • long, float은 리터럴에 접미사 붙이는 것 유의.
  • 연산이 수행되며, 나도 모르게 형변환이 수행되는 경우가 있다. 주의.
    ex. 7 + "7" => "77"
    ex. byte a = 10;
        byte b = 20;
        byte c = a+b; // Error: 덧셈수행하며 a와b가 int형으로 바뀌어버림
  • C와 달리, char을 %d로 출력불가. (int)로 명시적 형변환 해줘야함
  • Scanner
  • 실수형(double, float)은 오차범위로 값이 의도치않게 나올수있으니, 조작할때 좀더 세심히.
  • 문자열 비교는 equals()를 사용하자
  • 논리연산자(||, &&)는 좌측값이 true/false가 되면 우측연산을 실행하지않는다. 필요성이 없어졌으니
  • break문은 자신과 가장 가까운 반복문(if문 아님)을 탈출한다
  • 배열을선언한후,생성을 해야한다.
    선언하는것은 단지 배열을 다루기위한 참조변수를 위한 공간이 만들어지는 것 뿐,
    생성해야 비로소 값을 저장할 수 있는 공간이 만들어진다.
    ex. int[] score;
      score = new int[5];
    => 간략히 한줄로 가능,
      int[] score = new int[5];
    => 선언,생성과 동시에 초기화도 가능,
      int[] score = new int[] {50, 60, 70, 80, 90};
    => ㄴ이 경우, new int[] 생략가능 (선언/생성 따로하거나, add메서드 사용하는 경우 불가능)
      int[] score = {50, 60, 70, 80, 90};
  • 배열에서 참조변수값을 바로 출력하면, 참조변수에 저장된 배열의 주소값이 출력될것같지만 의외로 아니다. 타입@주소 형식으로 나온다.
    ex. int[] arr = {1, 2, 3};
      System.out.println(Arrays.toString(arr));
    =>> [I@주소값
    • 그런데 이와중에 예외적으로, char배열은 각 요소가 나란히 출력되게 설정되어서 출력됨ㅇㅇ
  • String 클래스 = char배열에 + 기능(메서드)를 추가한 것.
    C에선 문자열을 주로 char배열로 다루나, Java에선 좀더묶어서 String클래스로 주로 다룬다.
  • String객체(문자열)는 내용을 변경할 수 없다! 읽기만 가능
    변경가능한 문자열은 StringBuffer 클래스 사용.
    ex. String str = "java";
    str = str + "123";   // "java123"이라는 새로운 문자열이 str에 저장되는 것임
    System.out.println(str);
  • public static void main(String[] args) { ...를 통해 커맨드라인에서 입력받는경우, 숫자를 입력해도 문자열로 처리되므로 주의
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함