기초특강 1일차 (총 4일)
1. jdk, 이클립스 설치
java는 엄격한 언어라 대소문자도 맞춰야함.
영타연습해야 코딩 속도가 늘어남. (필요)
Hello, World 출력
주석, 이름규칙, 변수, 상수, 데이터타입, 형변환, 연산자
package day01;
// 주석(Comment)
// 주석이란, 코드 파일을 실제 실행가능한 프로그램 파일로 변환할 때
// 무시가 되는 글자들이다.
// 즉 우리가 특정 코드에 대한 설명을 주석을 통해서 입력할 수 있게 된다.
// 주석에는 한줄 주석과 여러줄 주석이 있다.
// 한줄 주석은 //로 시작하고 그 이후부터 엔터키 입력 전까지의 내용을 모두 주석으로 바꾼다.
// 여러줄 주석은 /* 으로 시작하고
// */ 가 나오기 전까지 모든 줄을 주석으로 바꾼다.
public class Ex02Comment {
public static void main(String[] arg) {
// System.out.println() 안의 내용을 화면에 출력,
// 그 다음 출력할 내용이 존재하면 다음 줄 부터 출력하게 만드는 명령어임.
System.out.println("1");
System.out.println("2");
/*System.out.println("3");
System.out.println("4");
System.out.println("5");
*/
}
}
package day01;
// 자바의 명명규칙(naming Convention)
// 공통규칙
// 1. 모든 이름은 _를 제외한 특수문자를 사용할 수 없다.
// 2. 이름에 숫자가 포함될 수는 있지만 숫자로 시작될 수는 없다.
// 3. 자바에서는 내부적으로 사용되는 명령어인 키워드라는 개념이 있다.
// 약 50여가지의 키워드가 있는데, 해당 단어들로는 이름을 지을 수 없다.
// 그러므로 키워드를 모두 외워야한다!!! -> 옛날 옛적 이야기.....
// 이클립스에서는 자바 키워드를 자주색으로 표시해준다.
// 만약 어떠한 이름을 지었는데 자주색으로 표시된다면, 동의어를 사용하거나
// 변형을 가하여 키워드와 다른 철자를가지도록 바꿔주면 된다.
// 4. 특정 상황이 아닐 경우, 똑같은 이름은 다른 것에 배정할 수 없다.
// 기본적인 명명 규칙
// 1. 낙타등 표기법 (camel back notation)
// 낙타등 표기법이란, 어떤 개념의 이름이 여러 단어로 이루어져있고,
// 대소문자를 사용하는 경우, 단어간의 구분을 위해서
// 두번째 단어부터는 매 단어의 첫글자를 대문자로 표시해주는 방법이다.
// currentvoltagebulildinga
// -> currentVoltaeBuildingA
// 2. 뱀 표기법(Snake notation)
// 모든 단어를 대문자로 표시하는 경우, 단어간의 구분을 위해 중간에 _를 넣는 표기법이다.
// UNITCLASSCHOOLA
// -> UNIT_CLASS_CHOOL_A
// 각종 개념에 다른 명명 규칙
// 1. 클래스: 클래스는 낙타등 표기법을 사용하고 대문자로 시작하는 명사.
// 2. 패키지: 패키지는 해당 패키지 안에 저장된 클래스들의 성격을 한단어로 나타내고
// 소문자로 시작한다.
// 주로 util, controller, 이런 식으로 패키지 이름을 짓게 된다.
// 3. 메소드: 소문자로 시작하고 낙타등 표기법을 사용하는 동사
// 4. 변수: 소문자로 시작하고 낙타등 표기법을 사용하는 명사
// 5. 상수: 뱀 표기법을 사용하는 명사
public class Ex03Naming {
}
package day01;
// 변수(Variable)
// 프로그래밍에서 변수는
// 내부의 저장되는 값이 변경 가능한 공간을 변수라고 한다.
//우리가 변수를 사용하기 위해서는 반드시
// 선언과 초기화를 해주어야 한다.
// 선언(Declaration)
// 프로그래밍에서의 선언이란 해당 공간에 어떤 종류의 값을 저장할 수 있고,
// 우리가 그 공간을 어떤 이름으로 부를지를 지정하는 코드를 선언이라고 한다.
//선언은 다음과 같이 이루어진다.
//데이터 타입 변수이름;
//데이터타입: 해당 공간에 저장할 값의 종류
// 초기화(Initialization)
// 선언한 후에는 반드시 해당 공간에 적어도 한번은 값을 저장해야한다.
// 값을 저장하는 방법은 다음과 같다.
// 이름 = 값;
// 단 이때에는 해당 공간의 데이터타입과 저장할 값이 호환될 수 있어야 한다.
public class Ex04Variable {
public static void main(String[] arg) {
// 정수를 저장할 수 있는 데이터타입 int 변수 number를 선언해보자.
int number;
// number에 10을 저장해보자.
number = 10;
//화면에 number의 현재 값을 출력해보자
System.out.println(number);
// number에 20을 저장해보자
number = 20;
//화면에 number의 현재 값을 출력해보자
System.out.println(number);
//선언과 초기화는 우리가 한줄로 적어줄 수도 있다.
// 이 때에는 데이터타입 변수이름 = 값;
// 으로 적어주게 된다.
// int 변수 number2를 선안하고 25를 저장해라.
int number2 = 25;
//number2의 값을 출력해보자
System.out.println(number2);
}
}
package day01;
// 상수(Constant)
// 상수란, 한번 값을 초기화하면 더이상 변경할 수 없는 공간이다.
// 상수란 우리가 변수처럼 선언과 초기화를 해서 사용하지만
// 선언할 때 final 이라는 키워드를 사용하여 상수로 바꿔주게 된다.
public class Ex05Constant {
public static void main(String[] arg) {
// int 변수 NUMBER를 선언학 20을 초기화해보자.
final int NUMBER = 20;
// NUMBER의 현재 값을 출력해보자
System.out.println(NUMBER);
//NUMBER에 30을 저장해보자. NUMBER = 30;
//상수로서 20으로 선언해버렸기때문에 다른 것은 못넣는다.
}
}
package day01;
// 자료형(Data Type)
// 자료형이란 해당 공간에 어떤 종류의 값이 저장될지를 지정하는 것이다.
// 자료형에는 크게 기본형 데이터타입과 참조형 데이터타입이 있다.
// 기본형 데이터타입(Primitive Date Types)
// 기본형 데이터 타입은 해당 공간에 2진법으로 변환된 실제 값이 저장되고,
// 우리가 해당 공간의 저장된 값을 호출하면 그 값이 그대로 나오게 된다.
// 기본형 데이터 타입은 정수형, 실수형, 문자형, 논리형 4가지 종류가 있다.
// 참조형 데이터타입(Reference Date Types)
// 참조형 데이터타입은 실제 값은 별개의 공간에 저장이 되고,
// 해당 공간에는 그 별개 공간의 주소값이 저장이 되서
// 우리가 해당 공간의 값을 호출하면 주소값을 참조해서 꺼내오는 형태가 된다.
// 참조형 데이터 타입에는 클래스형, 인터페이스형, 배열형 3가지 종류가 있다.
public class Ex06DataType {
}
package day01;
// 기본형 데이터타입 01
// 정수형 데이터타입
// 정수란?
// 소숫점이 없는 온전한 숫자.
// 정수형 데이터 타입에는
// byte : 8비트(-2^7 ~ 2^까지)
// short : 16비트(-2^15 ~ 2^15-1까지)
// int : 32비트(-2^31 ~ 2^31-1까지)
// long : 64비트(-2^63 ~2^63-1까지)
// 이 있다.
// 만약 정수형 데이터타입의 공간이 필요하면 기본적으로 int 데이터 타입을 사용하면 되고,
// 만약 +- 20억을 넘기는 자릿수라면 long을 사용하면 된다.
public class Ex07Interger {
public static void main(String[] srg) {
// byte 변수 myByte 선언 후 10 저장
byte myByte = 10;
// myByte의 현재 값 출력
System.out.println(myByte);
// myByte에 1000 저장시 myByte = 1000; 값을 벗어나서 빨간줄 뜸
}
}
package day01;
// 기본형 데이터타입 02
// 실수형 데이터타입
// 실수형 데이터타입에는 float과 double 2가지 종류가 있지만
// 정수형때와 마찬가지로 더이상 float을 사용하지 않고
// double를 사용한다.
public class Ex08RealNumber {
public static void main(String[] args) {
//double 데이터타입 변수 myDouble을 선언하고 12.345를 저장해보자.
double myDouble = 12.345;
// 화면에 myDouble의 현재 값을 출력해보자
System.out.println(myDouble);
// 만약 float ㄷ이터타입의 공간에 실수 값을 저장할 때에는
// 실수 값 뒤에 f를 붙여서 저장을 해야한다.
float myFloat =12.345f;
}
}
package day01;
// 기본형 데이터타입 03
// 문자형 데이터타입
// 문자형 데이터 타입은 char 이라는 데이터타입인데
// 한번에 한개의 글자만 저장 가능하고
// 이 때 char은 "차" 가 아닌 "캐릭터" 라고 읽는다.
// 캐릭터 타입의 값은 ' ' 안에 넣어서 저장한다.
public class Ex09Character {
public static void main(String[] args) {
// char 데이터타입의 변수 myChar를 선언하고 대문자 A를 저장해보자.
char myChar = 'A';
// myChar의 현재 값을 화면에 출력해보자
System.out.println(myChar);
// 단 char 데이터타입은 사용을 하지 않는다.
// 우리가 프로그램 내부에서 한번에 한개의 글자만 저장 가능하면
// 너무나 많은 변수를 만들고 초기화해서 사용해야하기 때문에
// char 데이터타입을 사용하지 않는다.
// char은 한번에 한개의 글자만이 저장 가능하기에, myChar ='AB'; 는 오류가 뜬다.
// 그렇기 때문에 우리가 글자를 저장해야할 경우에는
// char 데이터타입이 아닌 String 클래스 데이터타입을 사용하여
// 저장하는 것이 일반적이다.
// String 클래스 타입의 변수 str을 선언하고 Hello, World!!!를 저장해보자
String str = "Hello, World!!!";
}
}
package day01;
// 기본형 데이터타입 04
// 논리형 데이터타입 boolean
// boolean 이라는 데이터타입은 오직 true/false 2가지 값만 존재한다.
// 그렇기 때문에 해당 데이터타입의 변수/상수를 사용하는 경우는 드물지만
// boolean 데이터타입의 값 자체를 제어문 이라는 개념에서 매우 중요하게 사용이 된다.
public class Ex10Boolean {
public static void main(String[] args) {
// boolean 변수 myBool을 선언하고 true로 초기화해보자
boolean myBool = true;
// 화면에 myBool의 현재 값을 출력해보자
System.out.println(myBool);
}
}
package day01;
// 형변환(Type Casting)
// 형변환이란, 특정 데이터타입의 값을 다른 데이터타입으로 바꾸는 것을 말한다.
// 형변환은 암시적 형변환과 명시적 형변환이 있다.
// 암시적 형변환(Implicit Type Casting)
// 더 작은 데이터타입의 값을 더 큰 데이터타입의 값으로 바꾸거나
// 정수 데이터타입을 실수 데이터타입으로 바꿀 때 발생된다.
// 이 때에는 특별한 명령어를 적어주지 않더라도
// 자바가 내부적으로 알아서 처리해준다.
// 명시적 형변환(Explicit Type Casting)
// 더 큰 데이터타입의 값을 더 작은 데이터 타입의 값으로 바꾸거나
// 실수 데이터타입을 정수 데이터타입으로 바꿀 때 발생된다.
// 이 때에는 데이터의 손실이 발생하더라도 데이터타입을 바꾸라고
// 우리가 코드로 지정해주어야 한다.
// 명시적 형변환은
// (바꿀 데이터타입)값 으로 발생시킨다.
public class Ex11TypeCasting {
public static void main(String[] args) {
// byte 변수 myByte를 선언하고 20으로 초기화
byte myByte = 20;
// int 변수 number를 선언하고 myByte의 현재 값으로 초기화
int number = myByte;
// double 변수 myDouble을 선언하고 myByte의 현재 값으로 초기화
double myDouble = myByte;
System.out.println("myByte:");
System.out.println(myByte);
System.out.println("number:");
System.out.println(number);
System.out.println("myDouble:");
System.out.println(myDouble);
// number의 현재 값을 myByte에 저장한 후에 출력해라
myByte = (byte)number;
System.out.println(number);
// 12.345를 myByte에 저장한 후에 출력해라
myByte = (byte)12.345;
System.out.println(myByte);
}
}
package day01;
// 연산자(Operator)
// 연산자란, 수학적 기호에 프로그래밍 기능을 정의하여
// 해당 수학 기호를 코드에 입력하면
// 그 기호에 저장된 기능이 실행되는 특수문자들이다.
// 연산자에는
// 산술, 할당, 비교, 논리, 비트 5가지 종류의 연산자들이 있다.
// 산술연산자
// 산술연산자는 우리가 흔히 생각하는 수학적 연산자들을 말한다.
// +: 더하기
// -: 빼기
// *: 곱하기
// /: 몫 구하기
// %: 나머지 구하기
// 산ㅅㄹ연산자의 경우 앞의 결과 뒤의 값을 연산한 결과값을 계산해주는데
// 결과값은 더 큰 데이터타입이 기준이 된다.
// 만약 byte와 int를 산술연산하면 결과값은 int가 된다.
// 만약 정수와 실수를 산술연산하면 결과값은 실수가 된다.
public class Ex12Operator01 {
public static void main(String[] args) {
System.out.println("-------------");
System.out.println("1. 정수끼리의 산술 연산");
// int 변수 number1, number2를 선언하고 각각 5와 8을 저장한다.
int number1 = 5;
int number2 = 8;
System.out.println("number1 + number2");
System.out.println(number1 + number2);
System.out.println("number1 - number2");
System.out.println(number1 - number2);
System.out.println("number1 * number2");
System.out.println(number1 * number2);
System.out.println("number1 / number2");
System.out.println(number1 / number2);
System.out.println("number1 % number2");
System.out.println(number1 % number2);
System.out.println("-------------");
System.out.println();
System.out.println("2. 실수끼리의 산술연산");
// double 데이터타입의 변수 d1, d2 선언 후
// 각각 8.0과 5.0 저장
double d1 = 8.0;
double d2 = 5.0;
System.out.println("d1 + d2");
System.out.println(d1 + d2);
System.out.println("d1 - d2");
System.out.println(d1 - d2);
System.out.println("d1 * d2");
System.out.println(d1 * d2);
System.out.println("d1 / d2");
System.out.println(d1 / d2);
System.out.println("d1 % d2");
System.out.println(d1 % d2);
System.out.println("-------------");
System.out.println();
System.out.println("3. 정수와 실수끼리의 산술연산");
System.out.println("number1 + d2");
System.out.println(number1 + d2);
System.out.println("number1 - d2");
System.out.println(number1 - d2);
System.out.println("number1 * d2");
System.out.println(number1 * d2);
System.out.println("number1 / d2");
System.out.println(number1 / d2);
System.out.println("number1 % d2");
System.out.println(number1 % d2);
System.out.println("-------------");
System.out.println();
//번외. String 클래스 타입은 여러개의 글자들이 모여있는 데이터타입이다.
// 그렇다면 산술연산자를 사용할 수 있을까?
// 정답은 + 산술 연산자는 사용가능하다.
// String 클래스 변수 str1과 str2를 선언하고 각각 "abc"와 DEF"를 저장해보자.
String str1 = "abc";
String str2 = "DEF";
System.out.println("str1 + str2");
System.out.println(str1 + str2);
System.out.println("123"+3);
System.out.println("현재 잔고 : (" + number1 + ")원" );
}
}
package day01;
// 연산자 02
// 할당 연산자
// 할당 연산자는 오른쪽의 값을 왼쪽 공간에 연산하여 저장하는 연산자이다.
// = : 왼쪽 공간에 오른쪽 값을 저장해라
// += : 왼쪽 공간의 현재 값에 오른쪽 값을 더한 결과값을 다시 왼쪽 공간에 저장해라
// -= : 왼쪽 공간의 현재 값에 오른쪽 값을 뺀 결과값을 다시 왼쪽 공간에 저장해라
// *= : 왼쪽 공간의 현재 값에 오른쪽 값을 곱한 결과값을 다시 왼쪽 공간에 저장해라
// /= : 왼쪽 공간의 현재 값에 오른쪽 값을 나눈 몫을 다시 왼쪽 공간에 저장해라
// %= : 왼쪽 공간의 현재 값에 오른쪽 값을 나눈 나머지를 다시 왼쪽 공간에 저장해라
// ++ : 공간의 값을 1 증가시켜라
// -- : 공간의 값을 1 감소시켜라
public class Ex13Operator02 {
public static void main(String[] args) {
// int 변수 number를 선언하자.
int number;
// 1. number에 5를 저장하고 number의 현재 값을 출력해라.
number = 5;
System.out.println("number의 현재 값: " + number);
// 2. number의 현재 값에 6을 더한 결과값을 다시 number에 저장하고
// number의 현재 값을 출력해라.
number += 6;
System.out.println("number: " + number);
// 3. number의 현재 값에 4을 뺀 결과값을 다시 number에 저장하고
// number의 현재 값을 출력해라.
number -= 4;
System.out.println("number: " + number);
// 4. number의 현재 값에 3을 곱한 결과값을 다시 number에 저장하고
// number의 현재 값을 출력해라.
number *= 3;
System.out.println("number: " + number);
// 5. number의 현재 값에 4를 나눈 몫을 다시 number에 저장하고
// number의 현재 값을 출력해라.
number /= 4;
System.out.println("number: " + number);
// 6. number의 현재 값에 2을 나눈 나머지를 다시 number에 저장하고
// number의 현재 값을 출력해라.
number %= 2;
System.out.println("number: " + number);
// ++,--
// ++ 혹은 --는 그 연산자가 연결된 변수의 값을 1 증가 혹은 감소시킨다.
// 단, 변수의 앞에 붙냐 뒤에 붙냐에 따라서 실행순서가 달라지게 된다.
// ++ 혹은 --가 변수의 앞에 붙을 때에는 전위증가(감소)연산자라고 하며
// 해당 줄에서 가장 먼저 실행되는 그룹에 속한다.
System.out.println("전위 증가 연산자");
System.out.println("number의 현재 값: " + number);
System.out.println("++number :" + ++number);
// 위 55번 라인 코드는 한줄로 적혀있지만 실제로는 다음과 같은 단계를 거친다.
// 1. ++number가 실행되서 number의 현재 값이 1에서 2로 1 증가된다.
// 2. "++number: " 라는 String 값 뒤에 number의 현재 값이 연결되어
// "++number: 2" 라는 String 결과값이 만들어진다.
// 3. System.out.println이 () 안의 내용인 "++number: 2" 를 화면에
// 출력한다.
System.out.println("number의 현재 값: " + number);
// ++ 혹은 --가 변수의 뒤에 붙을 경우 후위 증가(감소)연산자라고 하며
// 해당 줄에서 가장 마지막에 실행되는 그룹에 속한다.
System.out.println("후위 감소 연산자");
System.out.println("number의 현재 값: " + number);
System.out.println("number--: " + number--);
// 1. "number--: " 뒤에 number의 현재 값인 2가 이어져서
// "number--: 2" 라는 String 결과값이 만들어진다.
// 2. System.out.println이 () 안의 내용인 "number--: 2: 를 화면에
// 출력한다.
// 3. numer--가 실행되서 number의 현재 값이 2에서 1로 1 감소된다.
System.out.println("number의 현재 값: " + number);
// 번외. String 변수에는 더하기 할당연산자를 사용할 수 있다.
// String 변수 str을 선언해라.
String str;
// str을 아무 내용없는 문자열로 초기화해라.
str = "";
// str의 현재 내용에 "AB"를 연결한 결과값을 다시 str에 저장해라.
str += "AB";
// str의 현재 내용에 int 값 34를 연결한 결과값을 다시 str에 저장해라.
str += 34;
// str의 현재 내용에 "가나다"를 연결한 결과값을 다시 str에 저장해라.
str += "가나다";
// str의 현재 값을 화면에 출력해라
System.out.println("str의 현재 값: " + str);
}
}
package day01;
// 연산자 03
// 비교 연산자
// 비교 연산자는 왼쪽의 값과 오른쪽 값을 비교하는데
// 어디가 더 크다 가 나오는 것이 아니라
// 왼쪽이 오른쪽보다 큽니까?를 물어서 true/false의 결과값이 나오게 된다.
public class Ex14Operator03 {
public static void main(String[] args) {
// int 변수 number1과 number2를 선언하고
// 각각 3과 5를 저장하자.
int number1 = 3;
int number2 = 5;
// 1. >, <
System.out.println("1. >, <");
System.out.println("number1 > number2: " + (number1 > number2));
System.out.println("number1 > 0 " + (number1 > 0));
System.out.println("number1 > 3 " + (number1 > 3));
System.out.println("---------------------");
System.out.println();
// 2. >=, <=
System.out.println("2. >=, <=");
System.out.println("number1 >= number2: " + (number1 >= number2));
System.out.println("number1 >= 0 " + (number1 >= 0));
System.out.println("number1 >= 3 " + (number1 >= 3));
System.out.println("---------------------");
System.out.println();
// 3. ==, !=
// ==은 왼쪽과 오른쪽이 같으면 true, 다르면 false
// !=은 왼쪽과 오른쪽이 다르면 true, 같으면 false가 나온다.
System.out.println("3. ==, !=");
System.out.println("number1 == number2: " + (number1 == number2));
System.out.println("number1 == 0 " + (number1 == 0));
System.out.println("number1 != number2: " + (number1 != number2));
System.out.println("number1 != 3 " + (number1 != 3));
System.out.println("---------------------");
System.out.println();
// 4. 단, 한가지 주의할 점은 == 혹은 !=을 참조형 데이터타입에서 사용하면 안된다라는 것이다.
// String 변수 str1, str2, str3을 선언하고 각각 "ABCD" 라고 초기화하되
// 초기화 방법을 각각 다르게 해보자
String str1 = "ABCD";
String str2 = new String("ABCD");
String str3 = str1;
// str1, str2, str3에 들어간 값을 출력해보자.
// 단, 공백도 다르지 않고 모두 다 똑같이 들어가있는지 확인하기 위해
// [] 안에 값이 나오도록 출력한다.
System.out.println("str1의 현재 값: ["+str1+"]");
System.out.println("str2의 현재 값: ["+str2+"]");
System.out.println("str3의 현재 값: ["+str3+"]");
}
}
'개발자, 그 여정 > 기초특강' 카테고리의 다른 글
자바_기초특강4 (0) | 2022.06.03 |
---|---|
자바_기초특강3 (0) | 2022.06.03 |
자바_기초 특강2 (0) | 2022.06.03 |