티스토리 뷰
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];
=> ㄴ이 경우, new int[] 생략가능 (선언/생성 따로하거나, add메서드 사용하는 경우 불가능)int[] score = new int[] {50, 60, 70, 80, 90};
int[] score = {50, 60, 70, 80, 90};
- 배열에서 참조변수값을 바로 출력하면, 참조변수에 저장된 배열의 주소값이 출력될것같지만 의외로 아니다. 타입@주소 형식으로 나온다.
ex. int[] arr = {1, 2, 3};
=>> [I@주소값System.out.println(Arrays.toString(arr));
- 그런데 이와중에 예외적으로, 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) { ...를 통해 커맨드라인에서 입력받는경우, 숫자를 입력해도 문자열로 처리되므로 주의
'General, Java' 카테고리의 다른 글
Java) package, class/instance (0) | 2019.09.14 |
---|---|
Java) enum을 활용해 if문 없애기 (with Calculator 예제) (0) | 2019.09.14 |
Java Project에서 main()의 위치에 대해 (0) | 2019.09.14 |
Java) Thread간 실행순서 with Sleep() (0) | 2019.09.14 |
JUnit과 assert의 다양한 활용법들 (0) | 2019.09.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- mysql
- javascript
- graph
- queue
- socket
- Data Structure
- webhacking.kr
- 회고
- bfs
- Android
- FRAGMENT
- git
- Java
- OneToMany
- JPA
- 개발자
- 프로그래머스
- 리버싱
- 우아한 테크코스
- Vo
- dfs
- Stack
- sort
- 웹해킹
- reversing
- brute-force
- C
- Algorithm
- 해외여행
- Android Studio
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함