본문 바로가기

Java

[자바의 신] 변수 하나에 여러 개의 데이터를 담을 수 없을까? 지금까지 봐온 기본 자료형 8가지(boolean, byte, short, int, long, char, float, double)는 하나의 값만 넣을수 있다. 하나의 변수에 여러개의 값을 넣을 수는 없을까? 가장 일반적인 자료구조중 하나로 '배열'이 있다. 배열은 한가지 타입에 대해서 하나의 변수에 여러개의 데이터를 넣을 수 있다. 배열은 다음과 같이 쓴다. int[] intArray = new int[10]; 또는 int[] intArray; intArray = new int[10]; 위와 같이 초기화 하면 0번방 부터 9번방 까지 총 10칸짜리 int 형태의 방이 생긴다고 생각하면 된다. 명심할 것은 0번방 부터라는것! 0번 방 1번 방 2번 방 3번 방 4번 방 5번 방 6번 방 7번 방 8번 방 .. 더보기
[자바의 신] 연산자? 자바에는 여러가지 종류의 연산자가 있다. 기본연산자 복합 대입 연산자 단항 연산자 비교 연산자 논리 연산자 삼항 연산자 비트 연산자(추후 업데이트) instanceof(추후 업데이트) 1. 기본 연산자 기본 연산자는 boolean을 제외한 기본 자료형을 더하거나 빼는 등의 계산을 위해 사용한다. 참조 자료형은 기본적으로 연산자를 사용할 수 없지만, 예외적으로 String클래스만 + 연산이 가능하다. 대입 연산자(=) int a = 3; 왼쪽의 변수에 오른쪽의 값을 할당(대입)할때 사용. 기본 연산자(+, -, *, /, %) +, - : 양쪽의 값을 더하거나 뺀다. *, / : 양쪽의 값을 곱하거나 나눈다. % : 왼쪽의 값을 오른쪽의 값으로 나눈 나머지 구한다. public class BasicOper.. 더보기
[자바의 신] 자료형이 뭐죠? 우리가 변수를 생성할때 int, String, Bicycle 등등 앞에 붙이는 단어들은 어떤 의미가 있을까? 이 단어들은 해당 변수의 자료형(타입)을 나타낸다. 자바의 자료형(타입)은 크게보면 2가지가 있다. 1. 기본 자료형 2. 참조 자료형 기본자료형과 참조 자료형의 차이는 변수를 초기화 할 때 나타난다. 변수를 초기화 할때, 기본자료형은 new 키워드없이 바로 초기화가 가능하지만, 참조 자료형은 new 키워드와 생성자를 사용한다. 단, String클래스의 경우에는 참조 자료형임에도 new 키워드 없이 초기화 할 수 있다. // 기본자료형의 변수 초기화 int variable = 10; // 참조자료형의 변수 초기화 Bicycle bicycle = new Bicycle(); // 예외 String S.. 더보기
[자바의 신] 변수에도 이름이 있다? 솔직히 매일같이 코드를 치고, 보면서 변수에 이름이 있는줄 몰랐다.. 너무 쉽게쉽게 지나쳐서 그랬나? 자바에는 네가지 변수가 있다. 네가지 변수는 그 용도와 생명주기에 따라서 이름이 다르다. '자바의 신' 책에서 아주 이해하기 쉬운 코드가 있어서 가져왔다. public class 클래스 { int 인스턴스_변수; static int 클래스_변수; public void method(int 매개_변수) { int 지역_변수; Bicycle 지역_변수2 = new Bicycle(); } } 위 예제 하나면 각 변수들의 위치와 생김새를 한번에 이해할수 있다. 아름답다. 그럼 위 코드를 토대로 하나씩 보자. 1. 지역변수 - 메소드안에 선언된 변수 - 메소드 안에서만 유효함. 2. 매개변수 - 메소드를 호출할때 .. 더보기
[자바의 신] 클래스와 객체는 같은건가? 소스코드 - github.com/jeong-woon/TIL/blob/master/godofjava/Bicycle.java - github.com/jeong-woon/TIL/blob/master/godofjava/BicycleFactory.java 지난 글에서 현실세계의 사물(또는 추상적 개념)을 객체지향 프로그램에서 사용하는 객체로 만들기위해 클래스로 만드는 방법을 학습했다. 그러면, 클래스와 객체는 같은걸까? 결론적으로 클래스는 객체가 아니다. 아래 그림을 보자. 자전거 공장에서 자전거를 만들때, 자전거 설계도(A)를 보고 자전거(B)를 만들 것이다. 이 때, A가 클래스에 해당하고, B가 객체(혹은 인스턴스)에 해당한다. 결국 클래스는 객체를 만들기 위한 설계도라고 할 수 있다. 사실 클래스는 그 자.. 더보기
[자바의 신] 객체? 클래스? 메소드? 자바는 객체지향 프로그래밍 언어다. 너무 많이 들어본 말인데, 너무 많은 의미를 숨기고 있다는 느낌이 든다. 객체가 뭐지? - 객체는 현실에 있는 사물(자동차, 스마트폰, 책 등) 또는 추상적 개념(강의, 회원 등)들 모두 '객체(Object)'이다. 객체지향 프로그래밍? 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. - 위키백과, 객체 지향 프로그래밍 다시 말해, 자바는 프로그램을 '객체'들의 상호작용으로 본다. 그러면, 자바는 현실세계의 객체를 어떻게 프로그램으로 가져올까? 클래스? 클래스(class)는 자바의 가장 작은 단위이다. 자바는 현실세계의 객체들.. 더보기
[java] OracleJDK 11 설치 몇해 전부터 자바 유료화에 대한 논쟁이 있었는데, 인프런에서 백기선님 강의를 들으면서 정확히 알게된 부분이 있다. 오라클에서 만든 OracleJDK 11버전부터 상용으로 사용할 경우 유료. 자바라는 언어가 유료라는 말이 절대 아니고, 위의 조건들을 모두 만족할 경우 "JDK(Java Development Kit)"를 쓰는게 유료라는 말이다. JDK를 자세히 보면, JRE + 개발툴(javadoc, javap, javac 등등)을 포함하고, JRE는 JVM + 필수 라이브러리(rt.jar와 같은) 이다. 예를 들어서, OracleJDK11을 쓰고 있지만, 상용으로 사용하지 않으면 유료가 아니다. 반대로 JAVA로 개발 자체를 안하고, 코틀린을 쓰더라도, OracleJDK 11의 JVM을 상용으로 쓰면 유료.. 더보기
[자바의 신] 프로그래밍이 뭐죠? 자바의 신을 읽고 자바를 제대로 학습해보려고 마음 먹었다. 언제까지 갈까 싶지만, 열심히 해보자. 프로그래밍이 뭘까? 자바의 신에서 프로그래밍을 '아이가 아빠에게 신호를 보내 원하는 것을 얻는것' 에 비유하고 있다. 너무 공감했다. 독자님들은 아이가 있는지 모르겠다. 아들이 하나 있는데, 걸핏하면 운다. 일어나면 울고, 혼자 있다가 울고, 누워있다가 울고, 엎드려있다가 운다. 배고프다고 울고, 똥 쌋다고 울고, 아무튼 운다. 그럼 나는 생각한다. 이 신호는 뭘 원하는 걸까? 밥? 기저귀? 잠? 해석을 마치면, 울음을 멈추기 위해 움직인다. 프로그래밍도 이와 같다. 아이가 아빠에게 원하는 것을 알려주는 신호를 주면, 아빠가 그것을 해주기 위해 움직이는 것처럼. 내가 컴퓨터에게 할일을 가르치면, 컴퓨터가 그.. 더보기