[Java] String, StringBuilder, 메서드 체이닝
·
Java
Stringjava에서 String을 만드는 방법에 대해 살펴보자. package stringBuilder;public class StringEx1 { public static void main(String[] args) { String str1 = "스트링1"; //스트링 생성 1 String str2 = new String("스트링2"); System.out.println("str1 = " + str1); System.out.println("str2 = " + str2); }} new String(); 으로 스트링을 생성한 것을 보면 String은 클래스라는 것을 확인할 수 있다. 그러면 str1은 객체가 아닐까? str1의 생성과..
[Java] 불변 객체
·
Java
자바에서 데이터 타입은 크게 기본형과 참조형으로 나뉜다. 기본형: 하나의 값을 여러 변수에서 공유하지 않는다.참조형: 하나의 객체를 참조값을 통해 여러 변수가 공유한다. 기본형 값 복사 package immutableBlog;public class CallByValue { public static void main(String[] args) { int a = 7; int b = a; System.out.println("a = " + a); System.out.println("b = " + b); b = 300; System.out.println("a = " + a); System.out.println("b =..
[Java] Object 클래스
·
Java
자바가 기본으로 제공하는 라이브러리 중에 가장 기본은 lang 패키지이다. java.lang package의 대표적인 클래스들은 Object, String, 래퍼 클래스들, Class 메타 정보, System 등이 있다.  1. import 생략 가능한 lang 패키지 java.lang은 모든 자바 애플리케이션에서 자동으로 임포트 해준다. 즉, import java.lang을 안 해도 된다.   2. 모든 객체의 최상위 부모 Object 클래스 자바에서 모든 클래스의 최상위 클래스는 항상 Object 클래스이다.   Parent class는 묵시적으로 Object 클래스를 상속받는다. 그래서 extends Object를 생략할 수 있다.  //묵시적으로 Object 클래스를 상속 받음class Paren..
[OOP] 다형성에 대해서
·
Java/OOP
다형성이란 무엇일까?  다형성은 (Polymorphism)으로 객체지향 프로그래밍에서 같은 이름의 메서드나 연산자가 다른 기능을 수행하는 것이다.  다형성은 개념이 매우 중요한 기술적 부분인 것 같다. 꾸준히 다시 복습해야 다형성을 완전히 이해할 수 있을 것 같다.   다형성으로 다양한 형태, 여러 형태를 지닐 수 있게 되며 다형성 덕분에 하나의 객체가 다른 타입으로 사용될 수 있다.    다형성의 핵심 이론은 크게 2가지이다.  1. 다형적 참조  2. 메서드 오버라이딩    1. 다형적 참조   다형적 참조를 공부하기 전 상속에 대해서 간략하게 공부해야 한다.   다형적 참조는 말 그대로 참조를 다양하게 할 수 있는 것이다. 하나에 국한되어 있지 않다 이 말이다.  예제 코드를 보면 다형적 참조를 이..
[OOP] 캡슐화 Encapsulation
·
Java/OOP
OOP의 큰 특징은 크게 4가지이다.  그중 캡슐화에 대해 자세히 알아보자.  캡슐화 (Encapsulation)   캡슐화는 자바 OOP의 핵심 개념 중 하나이다. 프로그래밍 패러다임중 하나이며  캡슐화는 데이터를 보호하는 원칙이다.  데이터를 외부로부터 숨기고 데이터를 조작하는 기능(메서드)은 무결성을 유지한다.  캡슐화를 통해 데이터를 직접 접근하고 변경을 방지하거나 제한할 수 있다.  캡슐화는 속성과 기능을 하나로 묶고, 외부에서 꼭 필요한 데이터만 노출시키고 나머지는 내부에 감추는 목적이다.  캡슐화의 특징1. 데이터 은닉  클래스 필드(멤버변수)의 접근제어자를 private로 설정하여 외부로부터 접근 못하게 한다. 2. 정보 은폐  클래스 내부의 세부 구현을 알필요가 없어진다. 제공된 메서드만..
[Java] 얕은 복사와 깊은 복사
·
Java
프로그래밍에서 자료구조는 매우 중요하다. 그중 배열은 자료구조의 기초이자 핵심이라고 볼 수 있다. 배열에 대해 더 상세하고 깊게 배우기 위해 얕은 복사와 깊은 복사에 대해 정리해 보겠다.   우선 코드를 보자.  import java.util.Arrays;public class arrayCopy { public static void main(String[] args) { String[] food = {"치킨", "피자"}; String[] shallowCopy = food; System.out.println("원본 배열: " + Arrays.toString(food)); System.out.println("복사 배열: " + Arrays.toStri..
[Java] 변수(지역, 인스턴스, 클래스)
·
Java/OOP
선언위치에 따른 변수의 종류    인스턴스 변수   각 인스턴스의 개별적인 저장공간 인스턴스마다 다른 값 저장이 가능하다.  인스턴스 생성 후 '참조변수. 인스턴스변수명'으로 접근  인스턴스를 생설할 때 생성되고, 참조 변수가 없을 때 가비지컬렉터에 의해 자동제거됨.  클래스 변수   같은 클래스에서 공유하는 변수이다. 즉, 같은 클래스의 모든 인스턴스들이 공유하는 변수.  인스턴스 생성없이 '클래스이름. 클래스변수명'으로 접근할 수 있다.  클래스가 로딩될 때 생성되고 프로그램 종료될 때 소멸한다. 지역 변수  메서드 내에 선언되며, 메서드의 종료와 함께 소멸한다. 메서드뿐만 아니라 반복문내의 변수들도 지역변수이다.  조건문, 반복문의 블럭{} 내에 선언된 지역변수는 블럭을 벗어나면 소멸한다.    인..