IT/JAVA
[JAVA] 자바 length 와 size 의 차이
IDE를 사용하다보니 나도 모르게 length와 size를 구분안하고 있었다. 그래서 알아보니 딱 이 세가지만 구분하면 될 것 같다. 1. length -배열의 길이를 알고 싶을 때 2. length -문자열의 길이를 알고 싶을 때 3. size() -컬렉션 타입의 길이를 알고 싶을 때 예시를 확인해보자. 추가적으로 검색하다 알아두면 좋을 스택오버플로우 질문글. https://stackoverflow.com/questions/20192843/difference-between-size-and-length-methods 출처 : stackoverflow 요약 immutable한 성격의 객체에는 length mutable한 성격의 객체에는 size 문자열,배열은 immutable(불변) Collection타입..
[JAVA] Math.max와 Math.min으로 값 비교하기
Math.max(파라미터 1, 파라미터 2) : 인자1과 인자2 중 큰 값을 리턴 Math.min(파라미터 1,파라미터 2) : 인자1과 인자2 중 작은 값을 리턴 파라미터에는 int, double, float 등 다양한 타입을 넣어 비교 가능합니다. class Compare{ public static void main(String args[]) { Math.max(3.14,5.18); -> 5.18 Math.min(33,77) -> 33 } }
[JAVA]기본형과 참조형 데이터 타입의 모든
기본적으로 JAVA는 기본형 타입과 참조형 타입 2종류가 존재합니다. 기본형 타입 그리고, 기본형 타입을 다시 4타입으로 나눌 수 있습니다. 정수형 타입 : byte(1byte), short(2byte), int(4byte), long(8byte) 실수형 타입 : float(4byte), double(8byte) 문자형 타입 : char(2byte) 논리 타입: boolean(1byte) 참조형 타입 참조형 타입은 위의 기본형 타입 뺀 모든 형태(type)를 참조형 타입으로 볼 수 있습니다. 기본형 빼고 다라니 너무한가요? 다들 아시다시피, 우리가 코드를 짤 때 기본형 이외에 수 많은 변수형태들을 만들어내기 때문에 딱 국한지어 말을 할 수 없다고 생각합니다. 그래도 크게 범주를 나눠본다면 배열(array..
[JAVA] 상속관계를 통한 final 연산자 맛보기
[예시컨셉] 한국에 여행 온 American이 있다. 한 외국인은 한국말을 배워 "안녕하세요!"라는 말을 할 수 있지만, 다른 외국인은 하지 못한다. 1. 클래스 American 2.메소드 greeting으로 hello~~를 출력하게 함. 1.상속관계 이용 Korea가 Amercian 상속받음 [korea 자손 /Amercian 조상 (미국계 한국인 느낌) 2.오버라이딩 hello~대신 안녕하세요! 를 출력하게 덮어씌움 3.출력값 안녕하세요! *Amercian클래스 앞에 final연산자를 사용* final을 붙임으로써 아래 사진에 생긴 코드의 변화를 살펴보자 Amercian에 빨간줄이 그어짐. final이 클래스에 붙으면 상속이 불가능하다는 것을 알 수 있다. 이번엔 greeting 메소드 앞에 fina..
[JAVA] Mac에서 이클립스 사용하기 - src,bin 파일
이클립스에서 프로젝트를 형성 시, bin 과 src 파일이 형성되는데 무엇일까? src는 우리가 코드를 적은 소스파일이 저장되는 곳! bin은 binary파일로 JVM(자바가상머신)이 이해하는 코드가 들어가는 곳!
[JAVA] 자바 생성자에 대한 모든 것
먼저, new 연산자와 생성자의 구분을 하자. Card c1 = new Card(); - new : new 연산자라고 불리며, 인스턴스를 생성 - Card() : 생성자라고 불리며, 인스턴스 변수를 초기화하는 '인스턴스 초기화 메소드' 생성자란 인스턴스를 생성하는 것이 아닌 인스턴스를 초기화해주는 메소드이다. 생성자는 원래, 모든 클래스에는 하나 이상은 존재해야한다. 그런데 클래스에 생성자가 정의되지 않은 경우에는 컴파일러가 대신 '기본 생성자'를 제공해준다. 그래서 생성자를 몰랐던 우리가 생성자를 정의하지 않고도, 인스턴스를 생성할 수 있었던 것이다! 결국 둘 다 동일한 형태라고 보면 된다. class Card { int number; String name; } class Card { int numbe..
[JAVA] 오버로딩에 대해서
오버로딩(overloading) 또는 메소드 오버로딩(method overloading)이라고 한다. 한 클래스 내에 같은 이름의 메소드를 여러 개 정의한다는 의미 보통 하나의 메소드 이름에 하나의 기능만을 구현하는게 일반적이지만, 하나의 메소드 이름으로 여러 기능을 구현하는게 편한 경우가 있다. 우리가 대표적으로 사용하는 println메소드를 살펴보자 예시 void println() void println(boolean x) void println(char x) 보다시피 차이점이 있다면 매개 변수의 차이가 존재한다. 내부적으로, 우리는 하나의 메소드 이름 println을 이용해 매개변수만 바꿔 편리하게 여러 기능을 이용했다는 점을 인지하고 조건을 살펴보자. 오버로딩의 조건 1. 메소드 이름은 같게 2...
[JAVA] print, println, printf의 구분
system.out.print 형식(int, float, double 등)에 구애받지 않는 문자를 그대로 출력하고 싶을 때 사용한다. 엔터 입력시 버퍼(buffer)에 \n(개행문자)는 포함 안됨.(엔터 누르는 순간 엔터는 입력 안됨) 그래서 줄바꿈 필요 없을 때 println말고 print 사용하면 된다. system.out.println print와 동일하게 형식(int, float, double 등)에 구애받지 않는 문자를 그대로 출력하고 싶을 때 사용한다. 차이점은 엔터 입력시 버퍼(buffer)에 \n(개행문자)가 같이 들어간다. (엔터 누르는 순간 엔터도 입력된걸로 간주) system.out.printf print 와 println과 달리 형식을 신경써야할 때 사용(int, long, floa..
[C와 JAVA] JAVA는 포인터가 없다?
C언어를 공부하다 JAVA로 넘어온 나에게는 포인터가 없는게 어색했다. C언어에서 포인터와 JAVA의 참조형 변수의 다른 점을 살펴보자 C언어 int c; int pointer = &c; *pointer = 3; 포인터를 이용해 직접 메모리 주소에 접근을 할 수 있고, 주소 안의 메모리에 직접 접근을 해서 사용할 수가 있다. 단, 임의의 메모리 값을 사용할 수 있다는 건 임베디드 환경에서는 필요하지만, 윈도우와 같은 OS환경에서 특정 메모리 주소의 어떤 값을 사용한다는 것은 시스템 폭주를 야기할 수 있다고 한다. JAVA int[] Java = new int[3]; Java는 메모리 주소라고 생각을 해야한다. Java라는 참조 변수에는 힙(heap)영역에 할당된 int형 배열을 가르키고만 있다. 여기서 ..
[객체 관련 용어 정리] 객체(Object) 인스턴스(instance) 클래스(Class)를 관계를 통해 알아보자
먼저, 약간의 설명을 곁들이자면 객체지향이론을 실제 세계의 사물(객체)들을 그대로 옮겨놓은 것이라고 이해하는 편이 가장 쉽다. 예를 들어, 지금 보고 있는 핸드폰, 노트북 등을 모두 객체라고 할 수 있다. 그 객체들은 끊임없는 상호작용 속에서 발생한다. 객체 > (인스턴스) > 클래스 이 세 가지(객체, 인스턴스, 클래스)의 관계를 위와 같은 포함관계로 나타낼 수 있다.(인스턴스를 괄호 친 이유는 조금 이따 이해될 것이다.) 객체란 "실제로 존재하는 것" 이다 클래스란 " 객체를 정의해 놓은 것" or "객체의 설계도면"이다. 객체와 클래스의 관계를 실생활 속에서 예를 들면 다음과 같다. Object(객체) Class(클래스) TV TV설계도 인스턴스란 "클래스로부터 만들어진 객체를 그 클래스의 인스턴스..