Java 20

[Java 기본 문법] 3. 제어문

2021.08.13 - [Java] - [Java 기본문법] 2. 연산자 [Java 기본문법] 2. 연산자 2021.08.13 - [Java] - [Java 기본 문법] 1. 변수와 타입 [Java 기본 문법] 1. 변수와 타입 변수 변수 : 프로그램이 작업을 처리하는 과정에서 필요에따라 데이터를 메모리에 저장하는데, 이 때 값을 저장할 blog.robinjoon.space 특정 조건을 만족할 때, 프로그램의 실행 흐름을 바꿀 수 있게하는게 제어문이다. 제어문은 조건식과 제어문 블록으로 이루어진다. 조건식을 만족할 때만 제어문 블록 내부의 코드를 실행하고, 만족하지 않으면 블록을 무시한다. 제어문은 조건문과 반복문으로 나뉜다. 조건문은 제어문 블록을 실행하고, 블록 밖을 다시 순서대로 실행하지만, 반복문..

Java/기초문법 2021.08.13

[Java 기본문법] 2. 연산자

2021.08.13 - [Java] - [Java 기본 문법] 1. 변수와 타입 [Java 기본 문법] 1. 변수와 타입 변수 변수 : 프로그램이 작업을 처리하는 과정에서 필요에따라 데이터를 메모리에 저장하는데, 이 때 값을 저장할 수 있는 메모리 공간을 의미한다. 타입 : 변수에 어떤 종류의 데이터를 저장할 blog.robinjoon.space 프로그램에서 데이터를 처리하여 결과를 산출하는 것을 연산이라 한다. 연산에서 사용하는 기호를 연산자 라고 하고, 연산이 되는 데이터를 피연산자 라고 한다. 연산자와 피연산자를 이용해 연산을 표현한 것을 연산식이라 한다. 피연산자는 연산식이 될 수도 있다. 자바의 연산자는 C언어의 연산자와 거의 같다. 다만, C언어에서는 boolean 이라는 논리타입이 없기 때문..

Java/기초문법 2021.08.13

[Java 기본 문법] 1. 변수와 타입

변수 변수 : 프로그램이 작업을 처리하는 과정에서 필요에따라 데이터를 메모리에 저장하는데, 이 때 값을 저장할 수 있는 메모리 공간을 의미한다. 타입 : 변수에 어떤 종류의 데이터를 저장할것인지 결정하는 것. 자바에서는 변수를 만들 때(선언할 때) 타입이 정해지고, 변수의 타입은 변경되지 않는다(변경할 수 없다). 변수의 타입은 한번 정해지면 변경할 수 없기 때문에 신중하게 지정해야 한다. 변수선언은 다음과같이 한다. int x, y; double z; 여기서 "int"와 "double"은 각각 정수와 실수타입이다. "x", "y", "z" 는 변수의 이름이다. 이 이름을 통해 변수에 저장된 값을 읽거나, 변수에 어떤 값을 저장할 수 있다. 같은 타입의 변수를 여러개 선언한다면, 위 코드의 첫번째 줄 처..

Java/기초문법 2021.08.13

제네릭(Generic)

이 포스팅은 신용권님의 이것이 자바다 13장으로 공부한 내용을 정리한 것입니다. 제네릭이란, 클래스와 인터페이스, 메소드를 정의할 때 타입을 파라미터로 사용할 수 있도록 하는 기술이다. 타입 파라미터는 코드 작성 시 구체적인 타입으로 대체되어 다양한 코드를 생성하도록 해준다. 이런 방식은 여러 장점을 가진다. 제네릭을 사용하지 않는다면 여러 타입을 값으로 받기 위해 변수를 Object 타입으로 선언하게 되는데, 이는 런타임에서 에러가 발생할 확률을 높인다. 아래 코드를 보자. String str = "aaa"; Object obj = str; Integer var = (Integer)obj; 이 코드는 컴파일시에는 아무 문제가 없이 컴파일이 된다. 그러나 실행하면 잘못된 타입 변환으로 예외가 발생하며 종..

Java/기초문법 2021.04.27

중첩클래스 2

이전글 2021/02/28 - [Java] - 중첩클래스 중첩클래스 안드로이드 프로그래밍을 하면서, 클래스 내부에 다른 클래스를 만드는 형태의 코드를 종종 짜게 되었다. 관련 레퍼런스나 다른 사람들이 작성한 코드를 복붙하는 수준으로만 했었는데, 문뜩 robinjoon98.tistory.com 이전 포스팅에서 중첩클래스의 종류와 특징, 그리고 중첩클래스의 접근제한에 대해 알아봤다. 이번 포스팅에서는 익명객페에 대해 다룬다. 익명객체 익명객체는 이름이 없는 객체를 말한다. 익명객체는 클래스를 상속하거나 인터페이스를 구현해야만 생성이 가능하다. 인터페이스를 구현한 익명객체는 오로지 하나의 인터페이스만 구현할 수 있다. 1. 익명자식객체 익명자식객체란 클래스를 상속하여 만들어지는 익명객체를 말한다. 부모타입으로..

Java/기초문법 2021.03.09

중첩클래스

안드로이드 프로그래밍을 하면서, 클래스 내부에 다른 클래스를 만드는 형태의 코드를 종종 짜게 되었다. 관련 레퍼런스나 다른 사람들이 작성한 코드를 복붙하는 수준으로만 했었는데, 문뜩 클래스 내부에 다른 클래스를 구현하는 이유와 그 종류가 궁금해 공부해 보았다. 신용권, 『이것이 자바다』, 한빛미디어(2015), 9장 을 이용해 공부한 내용을 정리해보았다. 중간중간 내 생각도 추가되어있다. 중첩클래스 클래스 내부에 선언한 클래스를 중첩클래스라고 한다. 객체지향 프로그래밍에서 각 클래스들은 서로 관계를 맺고 메소드와 필드를 사용해 상호작용을 한다. 그러다보면 어떤 클래스는 다른 여러 클래스와 관계를 맺기도 하고, 어떤 클래스는 하나의 클래스와만 관계를 맺기도 한다. 설계를 하는 입장에서, 그 복잡성을 줄이려..

Java/기초문법 2021.02.28

Integer등 랩퍼클래스 사용시 주의사항.

자바 객체들을 == 으로 비교할 경우, 객체의 값을 비교하는게 아닌, 같은 객체인지 비교한다는 것은 책에 아주 잘 나와있다. 이런 이유로 String을 비교할 때, ==이 아닌, .equal() 메소드를 사용하는 것이다. 마찬가지로, Integer 역시 값을 할당할 때 int와 같은 방법으로 할당하는 경우가 대부분이라, Integer를 그냥 ==으로 비교하는 경우가 있는데, 당연히 객체라 == 으로 비교하면 안된다. 단, Integer와 int를 ==으로 비교하면, 값이 같은지를 보게된다. Integer끼리 값을 비교하려면 Integer.intValue() 로 int화 시켜야 한다.

String 클래스

1. 메소드 목록 메소드 목록들은 이 링크에서 확인이 가능하다. 2. equals​(Object anObject) vs contentEquals​(CharSequence cs) equals 메소드는 모든 클래스의 부모인 Object 클래스에 정의되어있는 메소드로, 객체들이 같은지 여부를 판단할 때 사용하는 메소드이다. String의 경우 문자열 값이 일치하면 true를 반환하게 되어있다. String str = "abc"; String str2 = "abc"; StringBuffer sb = new StringBuffer("abc"); System.out.println(str.equals(str2)); // true System.out.println(str.equals(sb)); //false 위 코드에..

String literal vs new

String 클래스는 자바에서 문자열을 다루는 대표적인 클래스이다. 거의 모든 코드에 사용되고, 따라서 상세히 알아둘 필요가 있다. String str = "aaa"; String str2 = new String("sss"); char data[] = {'a','b','c'}; String str3 = new String(data); 문자열은 위와같이 리터럴을 이용해 만들 수도 있고 생성자를 이용해 만들 수 있다. 두 경우 할당되는 메모리도 다르고, == 등의 연산에 있어서 조금 차이가 있다. String str = "aaa"; String str2 = "aaa"; String str3 = new String("aaa"); String str4 = new String("aaa"); System.out.p..