Java 공부 기록 1
자바 용어 정리
- Java SE
자바의 표준안. 자바라는 언어가 어떤 문법적 구성을 가졌는지 정의한다. 구체적인 소프트웨어가 아니라 그 소프트웨어의 설계도라고 할 수 있다. 소프트웨어에서는 설계도라는 말 대신 명세서(specification)이라는 말을 사용한다.
- JDK (Java Development Kit)
Java SE의 표준안에 따라서 만들어진 구체적인 소프트웨어. Java 개발을 하기 위해 필요한 각종 도구들과 JRE가 포함되어있다. 개발자를 위한 자바 버전이라고 할 수 있다.
- JRE (Java Runtime Environment)
자바가 실제로 동작하는 데 필요한 JVM, 라이브러리, 각종 파일들이 포함되어있다. 자바로 만들어진 프로그램을 구동하는 데 필요하다. 일반인을 위한 자바 버전이라고 할 수 있다.
- JVM (Java Virtual Machine)
자바가 실제로 구동되는 환경이다. 자바로 만들어진 소프트웨어는 JVM이라는 가상화된 환경에서 구동되고, 하드웨어나 OS에 따라서 달라질 수 있는 호환성의 문제는 JVM에서 알아서 해결한다.
숫자와 문자
- 숫자
자바에서 따옴표가 없는 숫자는 숫자로 인식한다.
- 문자
한 글자를 의미한다. 작은 따옴표(' ')로 감싸야한다.
- 문자열
여러 개의 문자가 결합한 것을 의미한다. 큰 따옴표(" ")로 감싸야한다.
(문자열을 작은 따옴표로 감싸면 에러가 발생한다.)
이스케이프
System.out.print("egoing said "Welcome programing world"");
자바의 표준안. 자바라는 언어가 어떤 문법적 구성을 가졌는지 정의한다. 구체적인 소프트웨어가 아니라 그 소프트웨어의 설계도라고 할 수 있다. 소프트웨어에서는 설계도라는 말 대신 명세서(specification)이라는 말을 사용한다.
Java SE의 표준안에 따라서 만들어진 구체적인 소프트웨어. Java 개발을 하기 위해 필요한 각종 도구들과 JRE가 포함되어있다. 개발자를 위한 자바 버전이라고 할 수 있다.
자바가 실제로 동작하는 데 필요한 JVM, 라이브러리, 각종 파일들이 포함되어있다. 자바로 만들어진 프로그램을 구동하는 데 필요하다. 일반인을 위한 자바 버전이라고 할 수 있다.
자바가 실제로 구동되는 환경이다. 자바로 만들어진 소프트웨어는 JVM이라는 가상화된 환경에서 구동되고, 하드웨어나 OS에 따라서 달라질 수 있는 호환성의 문제는 JVM에서 알아서 해결한다.
- 숫자
자바에서 따옴표가 없는 숫자는 숫자로 인식한다. - 문자
한 글자를 의미한다. 작은 따옴표(' ')로 감싸야한다. - 문자열
여러 개의 문자가 결합한 것을 의미한다. 큰 따옴표(" ")로 감싸야한다.
(문자열을 작은 따옴표로 감싸면 에러가 발생한다.)
이스케이프
System.out.print("egoing said "Welcome programing world"");
문자열 안에 큰 따옴표를 넣고싶다고 위와 같이 코드를 작성하면 에러가 발생할 것이다. 이럴 때는 아래와 같이 처리하면 된다.
System.out.println("egoing said \"Welcome programming world\"");
\를 큰 따옴표(") 앞에 위치시키면 큰 따옴표의 문법적 기능을 무시하고 단순 문자로 해석하도록 강요할 수 있다. 이를 이스케이프라고 한다.
줄 바꿈
여러 줄을 출력하고 싶을 때 줄바꿈 기호 (\n)을 사용하면 된다.
System.out.println("HTML\nCSS\nJavaScript\n");
문자의 연산
문자와 문자를 아래와 같이 작성하면 이어져서 출력된다.
System.out.println("생활"+"코딩");
출력 결과 : 생활코딩
데이터 타입
변수의 데이터 타입
-
정수 자료형
- byte (1byte) : -128 ~ 127
- short (2byte) : -32,768 ~ 32,767
- int (4byte) : -2,147,483,648 ~ 2,147,483,647
- long (8byte) : -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
잘 모르겠을 때는 int를 사용하면 된다.
-
실수 자료형
- float (4byte)
- double (8byte)
잘 모르겠을 때는 double를 사용하면 된다.
-
문자 자료형
- char (2byte) : 모든 유니코드 문자
상수의 데이터 타입
float a = 2.2; // 컴파일 에러가 발생한다
double b = 2.2; // 컴파일 에러가 발생하지 않는다
정수 자료형
- byte (1byte) : -128 ~ 127
- short (2byte) : -32,768 ~ 32,767
- int (4byte) : -2,147,483,648 ~ 2,147,483,647
- long (8byte) : -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
잘 모르겠을 때는 int를 사용하면 된다.
실수 자료형
- float (4byte)
- double (8byte)
잘 모르겠을 때는 double를 사용하면 된다.
문자 자료형
- char (2byte) : 모든 유니코드 문자
float a = 2.2; // 컴파일 에러가 발생한다
double b = 2.2; // 컴파일 에러가 발생하지 않는다
왜 float에 2.2를 대입했을 때 에러가 발생할까? 2.2 라고 하는 상수의 데이터 타입이 double 이기 때문이다. Java에서 실수인 상수는 기본적으로 데이터 타입이 double이다. float에 값을 대입하기 위해서는 아래와 같이 해야한다.
float a = 2.2F;
비슷한 맥락으로 Java에서 정수는 기본적으로 int 데이터 타입을 가진다. 따라서 long 이라는 데이터 타입에 값을 대입하려면 아래와 같이 해야한다.
long a = 1234L;
다만 byte 형이나 short 형에서는 int 형을 허용하기 때문에 오류가 발생하지 않는다.
조건문
switch문
System.out.println("switch(1)");
switch(1){
case 1:
System.out.println("one");
case 2:
System.out.println("two");
case 3:
System.out.println("three");
}
// switch(1)
// one
// two
// three
// 이렇게 출력된다
System.out.println("switch(2)");
switch(2){
case 1:
System.out.println("one");
case 2:
System.out.println("two");
case 3:
System.out.println("three");
}
// switch(2)
// two
// three
// 이렇게 출력된다
System.out.println("switch(3)");
switch(3){
case 1:
System.out.println("one");
case 2:
System.out.println("two");
case 3:
System.out.println("three");
}
// switch(3)
// three
// 이렇게 출력된다
논리 연산자
-
&& (and)
-
|| (or)
-
! (역전)
boolean의 값을 역전시킨다.
예시) !true => false
예시) !false => true
반복문
while문
while(조건){
반복 실행 영역
}
for문
for(초기화; 종료조건; 반복실행){
반복적으로 실행될 구문
}
- 초기화 : 반복문이 실행될 때 1회 실행된다.
- 종료조건 : 초기화가 실행된 후에 종료조건이 실행된다. 종료조건의 값이 false일 때까지 반복문의 중괄호 구간의 코드가 반복 실행된다.
- 중괄호 구간의 실행이 끝나면 반복 실행이 실행된다. 일반적으로 이 곳에 i++와 같이 변수를 증가시키는 로직이 위치하고, 이것이 실행된 후에 종료조건이 실행된다. 종료조건이 false가 될 때까지 이 과정이 반복된다.
반복문의 제어
break
System.out.println("switch(1)");
switch(1){
case 1:
System.out.println("one");
case 2:
System.out.println("two");
case 3:
System.out.println("three");
}
// switch(1)
// one
// two
// three
// 이렇게 출력된다
System.out.println("switch(2)");
switch(2){
case 1:
System.out.println("one");
case 2:
System.out.println("two");
case 3:
System.out.println("three");
}
// switch(2)
// two
// three
// 이렇게 출력된다
System.out.println("switch(3)");
switch(3){
case 1:
System.out.println("one");
case 2:
System.out.println("two");
case 3:
System.out.println("three");
}
// switch(3)
// three
// 이렇게 출력된다
-
&& (and)
-
|| (or)
-
! (역전)
boolean의 값을 역전시킨다.
예시) !true => false
예시) !false => true
반복문
while문
while(조건){
반복 실행 영역
}
for문
for(초기화; 종료조건; 반복실행){
반복적으로 실행될 구문
}
- 초기화 : 반복문이 실행될 때 1회 실행된다.
- 종료조건 : 초기화가 실행된 후에 종료조건이 실행된다. 종료조건의 값이 false일 때까지 반복문의 중괄호 구간의 코드가 반복 실행된다.
- 중괄호 구간의 실행이 끝나면 반복 실행이 실행된다. 일반적으로 이 곳에 i++와 같이 변수를 증가시키는 로직이 위치하고, 이것이 실행된 후에 종료조건이 실행된다. 종료조건이 false가 될 때까지 이 과정이 반복된다.
반복문의 제어
break
while(조건){
반복 실행 영역
}
for(초기화; 종료조건; 반복실행){
반복적으로 실행될 구문
}
반복문 내에서 break가 실행되면 그 즉시 반복문이 완전히 종료된다.
continue
반복문 내에서 continue가 실행되면 그 아래의 코드를 실행하지 않고, 바로 다음 반복을 진행한다.
for (int i = 0; i < 10; i++) {
if (i == 5)
continue;
System.out.println(i);
}
예를 들어 위와 같은 프로그램을 실행시키면 1,2,3,4,6,7,8,9 가 출력된다.
배열
- 배열 생성하기
String[] classGroup = { "최진혁", "최유빈", "한이람", "이고잉" };
String[] classGroup = { "최진혁", "최유빈", "한이람", "이고잉" };
classGroup는 배열이 담길 변수의 이름이다.
String[]은 classGroup에 담을 배열에 담길 데이터의 타입이 문자열의 배열이라는 의미다. 배열을 선언할 때는 데이터 타입 뒤에 []를 붙여야 한다. []가 없다면 classGroup는 배열이 아니라 문자열 데이터 타입을 갖는 변수가 된다. 배열에 소속될 데이터들은 중괄호 안에 위치한다. 그리고 각각의 데이터들은 쉼표로 구분된다.
- 배열에서 값 꺼내오기
String[] classGroup = { "최진혁", "최유빈", "한이람", "이고잉" };
System.out.println(classGroup[0]);
System.out.println(classGroup[1]);
System.out.println(classGroup[2]);
System.out.println(classGroup[3]);
최진혁, 최유빈, 한이람, 이고잉이 출력된다.
- 배열의 길이 보기
String[] classGroup = new String[4];
System.out.println(classGroup.length);
4가 출력된다.
- 배열을 정의하는 또 다른 방법
String[] classGroup = new String[4];
classGroup[0] = "최진혁";
classGroup[1] = "최유빈";
classGroup[2] = "한이람";
classGroup[3] = "이고잉";
- for-each
String[] members = { "최진혁", "최유빈", "한이람" };
for (String e : members) {
System.out.println(e);
최진혁, 최유빈, 한이람이 출력된다.
메소드
메소드는 코드를 재사용할 수 있게 해준다.
- 메소드의 형식
public static void main(String[] args) {
return
}
- 메소드의 정의와 호출
public static void numbering() {
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
}
// numbering이라는 메소드를 정의했다.
public static void main(String[] args) {
numbering(); // 위의서 정의한 numbering 메소드를 호출한다.
}
-
main 메소드
main 메소드는 규칙이다. 만들고 싶은 프로그램이 있다면 반드시
public static void main(String[] args)
가 이끄는 중괄호 안에 실행되기를 기대하는 로직을 위치시켜야 한다. 이것은 약속이기 때문에 지켜야 한다. 그렇게 코드를 작성하면 자바를 실행할 때 자바는 내가 작성한 main 메소드를 실행하게 되는 것이다. 내가 main 메소드를 작성하고, 자바는 main 메소드를 실행하는 관계라고 할 수 있다. -
메소드의 입력과 출력
메소드에서의 입력 값은 매개변수를 통해서 이루어진다.
public static void numbering(int limit) {
int i = 0;
while (i < limit) {
System.out.println(i);
i++;
}
}
public static void main(String[] args) {
numbering(5);
이 코드는 0부터 4까지 출력한다. 0부터 10까지 출력하고 싶다면 numbering(5) 대신 numbering(11)을 호출하면 된다. 함수를 호출할 때 입력한 값이 limit라는 변수에 저장되어 함수의 로직에 이용되는 것이다. 이 때 limit을 매개변수라고 한다. 그리고 위의 예시에서 전달된 값 5를 '인자'라고 부른다.
복수의 인자를 사용할 수도 있다.
public static void numbering(int init, int limit) {
int i = init;
while (i < limit) {
System.out.println(i);
i++;
}
}
public static void main(String[] args) {
numbering(1, 5);
}
이 경우 1에서 4까지 출력된다.
- return
메소드 내에서 사용한 return은 return 뒤에 따라나오는 값을 메소드의 결과로 반환한다. 동시에 메소드를 종료시킨다. return을 사용하기 위해서는 메소드를 정의할 때 메소드 이름 옆에 반환하고자 하는 값의 데이터 형식을 명시해주어야 한다. (반환 값이 없다면 void를 적어준다.)
Author And Source
이 문제에 관하여(Java 공부 기록 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@awesomemin/Java-공부-기록-29r893al저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)