반응형

java 86

자바 불변 객체

자바에서 제공하는 굉장히 많은 클래스들이 불변 객체로 설계되어 있다. 자바의 데이터 타입을 가장 크게 보면 기본형(Primitive Type)과 참조형(Reference Type)으로 나눌 수 있다. 기본형 : 하나의 값을 여러 변수에서 절대로 공유하지 않는다.참조형 : 하나의 객체를 참조값을 통해 여러 변수에서 공유할 수 있다. 기본형 변수는 하나의 값을 공유하거나 공유하지 않는다는 뜻은 다음 예제와 같다.public static void main(String[] args) { int a = 10; int b = a; // a-> 값 복사 후 대입 System.out.println("a = " + a); System.out.println("b = " + b); b = 20; ..

공부/Java 2024.09.09

자바 Object 클래스

java.lang패키지 : 자바가 기본으로 제공하는 라이브러리 중에 가장 기본이 되는 것이 java.lang패키지이다. 여기서 lang은 Language(언어)의 줄임말이다. 쉽게 이야기해서 자바 언어를 이루는 가장 기본이 되는 클래스들을 보관하는 패키지를 뜻한다. java.lang 패키지의 대표적인 클래스들Object : 모든 자바 객체의 부모 클래스String : 문자열Integer, Long, Double : 래퍼 타입, 기본형 데이터 타입을 객체로 만든 것Class : 클래스 메타 정보System : 시스템과 관련된 기본 기능들을 제공 여기 나열한 클래스들은 자바 언어의 기본을 이루기 때문에 반드시 잘 알아두어야한다.    1.java.lang패키지는 모든 자바 애플리케이션에 자동으로 임포트(im..

공부/Java 2024.09.08

자바 다형성 3편 (Polymorphism)

자바 다형성 관련 마지막 글이 될 것 같다.다형성 관련하여선 기존 작성했던 1편과 2편을 참고하는 것이 좋다.https://surrealcode.tistory.com/52 자바 다형성 1편 (Polymorphism)객체지향 프로그래밍의 대표적인 특징으로는 캡슐화, 상속, 다형성이 있다.캡슐화와 상속은 이전 내용을 참고하자.https://surrealcode.tistory.com/48 자바 접근 제어자자바는 public, private 같은 접근 제surrealcode.tistory.comhttps://surrealcode.tistory.com/53 자바 다형성 2편 (Polymorphism)https://surrealcode.tistory.com/52 자바 다형성 1편 (Polymorphism)객체지향 ..

공부/Java 2024.09.05

자바 좋은 객체 지향 프로그래밍이란?

객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 레고 블럭 조립하듯이, 키보드 마우스 갈아 끼우듯이, 컴퓨터 부품 갈아 끼우듯이"컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법"이다. 역할과 구현을 구분하면 세상이 단순해지고, 유연해지며 변경도 편리해진다. 장점1. 클라이언트는 대상의 역할만 알면 된다.2. 클라이언트는 구현 대상의 내부 구조를 몰라도 된다.3. 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받..

공부/Java 2024.09.05

자바 다형성 2편 (Polymorphism)

https://surrealcode.tistory.com/52 자바 다형성 1편 (Polymorphism)객체지향 프로그래밍의 대표적인 특징으로는 캡슐화, 상속, 다형성이 있다.캡슐화와 상속은 이전 내용을 참고하자.https://surrealcode.tistory.com/48 자바 접근 제어자자바는 public, private 같은 접근 제surrealcode.tistory.com이전에 다형성에 대해서 알아보았다.이번엔 학습한 다형성이 왜 필요하고 사용해야 하는지, 그 장점에 대해 알아보도록 한다.public class Dog { public void sound(){ System.out.println("멍멍"); }}public class Cow { public void so..

공부/Java 2024.09.05

자바 다형성 1편 (Polymorphism)

객체지향 프로그래밍의 대표적인 특징으로는 캡슐화, 상속, 다형성이 있다.캡슐화와 상속은 이전 내용을 참고하자.https://surrealcode.tistory.com/48 자바 접근 제어자자바는 public, private 같은 접근 제어자(access modifier)를 제공한다. 접근 제어자를 사용하면 해당 클래스 외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한할 수 있다. 스피커의 음량surrealcode.tistory.comhttps://surrealcode.tistory.com/51 자바 상속이란다음과 같은 전기, 가스 자동차 클래스와 메인 클래스가 있다고 가정하자public class ElectricCar { public void move(){ System.out.println("..

공부/Java 2024.09.04

자바 상속이란

다음과 같은 전기, 가스 자동차 클래스와 메인 클래스가 있다고 가정하자public class ElectricCar { public void move(){ System.out.println("차를 이동합니다."); } public void charge(){ System.out.println("충전합니다."); }}public class GasCar { public void move(){ System.out.println("차를 이동합니다."); } public void fillUp(){ System.out.println("기름을 주유합니다."); }}public static void main(String[] arg..

공부/Java 2024.09.03

자바 final

final 키워드는 이름 그대로 끝 이라는 뜻이다.변수에 final 키워드가 붙으면 더는 값을 변경할 수 없다. final은 class, method를 포함한 여러 곳에 붙을 수 있다. 지금은 변수에 붙는 final 키워드이다.public static void main(String[] args) { final int data1; data1 = 10; //최초 한번만 할당 가능 data1 = 20; final int data2 = 20;} final로 data1을 지정해 준 후 최초 한번 10으로 할당한 뒤 20으로 변경을 하면java: variable data1 might already have been assigned위와 같은 에러가 발생한다.final이기에 최초 할당 이후로는 더이상 ..

공부/Java 2024.09.02

자바 메모리 구조와 static

자바의 메모리 구조는 메서드 영역, 스택 영역, 힙 영역 총 3개로 나눌 수 있다.1. 메서드 영역 : 클래스 정보를 보관한다. 이 클래스 정보가 붕어빵 틀이다.2. 스택 영역 : 실제 프로그램이 실행되는 영역이다. 메서드를 실행할 때마다 하나씩 쌓인다.3. 힙 영역 : 객체(인스턴스)가 생성되는  영역이다. new 명령어를 사용하면 이 영역을 사용한다. 쉽게 이야기해서 붕어빵 틀로부터 생성된 붕어빵이 존재하는 공간이다. 참고로 배열도 이 영역에 생성된다.   메서드 영역(Method Area) : 메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은 프로그램의 모든 영역에서 공유한다.1. 클래스 정보 : 클래스의 실행 코드(바이트 코드), 필드, 메서드와 생성자 코드 등 모든 ..

공부/Java 2024.09.02

자바 접근 제어자

자바는 public, private 같은 접근 제어자(access modifier)를 제공한다. 접근 제어자를 사용하면 해당 클래스 외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한할 수 있다. 스피커의 음량은 절대로 100을 넘으면 안되는 요구사항이 있는 스피커를 만들어보자.package access;public class Speaker { int volume; Speaker(int volume){ this.volume = volume; } void volumeUp(){ if (volume>=100){ System.out.println("음량을 증가할 수 없습니다 .최대입니다."); } else{ ..

공부/Java 2024.08.31
반응형