DAY1. 키워드
- JAVA
- 주석
- 변수 (전역변수/지역변수)
- 데이터타입
- 형변환 (자동/강제)
- 연산자
1-1. 자바의 특징
- 이식성이 뛰어남
- 객체 지향 언어 (절차 지향 X)
- 함수적 스타일 코딩 지원 (Lambda)
- 메모리를 자동으로 관리
- 다양한 어플리케이션 지원
- 멀티 스레드
- 동적 로딩
1-2. 자바 개발 환경 구축
JVM : 자바 가상 머신
- 자바 프로그램은 중간 단계의 바이트 코드이기에 해석하고 실행 할 수 있는 가상 운영체제 필요
- JVM은 운영체제에 종속적
JDK : JRE+개발도구
- 자바 프로그램을 개발하고 실행 할 경우 설치
JRE : JVM+표준 클래스 라이브러리
- 자바 프로그램을 실행만 할 경우 설치
환경변수 편집
- 내 PC > 속성 > 고급 시스템 설정 > 환경 변수 > 'Path' 편집 > 새로만들기 > jdk경로 붙여넣기
1-3. 자바 프로그램 개발
- 위와 같은 코드 생성 후 cmd에서 해당 코드가 저장된 위치로 경로 이동
-
더보기(Hello)클래스 : 필드 또는 메소드를 포함하는 블록
(main)메소드 : 어떤 일을 처리하는 실행문들을 모아놓은 블록
- 컴파일(javac) 후 실행(java) 결과 : Hello, welcome to the java world!
1-4. 이클립스
[JAVA 개발 툴 - Eclipse]
www.eclipse.org/www.eclipse.org/downloads/packages/
Eclipse Packages | The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source pro
438 MB 8,347 DOWNLOADS The Modeling package provides tools and runtimes for building model-based applications. You can use it to graphically design domain models, to leverage those models at design time by creating and editing dynamic instances, to collabo
www.eclipse.org
-
프로젝트 생성 : Create a porject > JAVA선택 > Project이름 입력, JavaSe버전 설정
-
클래스 생성 : src 우클릭 > New > Class > Package 비우기, 이름 설정(대문자로 시작하기), public default ~ main 체크
-
패키지 생성 : package 우클릭 > New > Package > 이름설정(이름 설정 시 .을 찍으면 하나의 폴더로 생성 됨)
-
클래스 이름 변경 : *.java파일 우클릭 > Refactor > Rename
-
System.out.println 자동 완성 : syso입력 후 ctrl+space
-
main 자동 완성 : main입력 후 ctrl+space
-
한줄 복사 : ctrl+alt+방향키
2. 주석
코드에 설명을 붙인 것, 컴파일 과정에서 주석은 무시되고 실행문만 바이트 코드로 번역된다.
// | //부터 라인 끝까지 주석으로 처리 |
/* ~ */ | /*와 */사이에 있는 모든 범위를 주석으로 처리 |
/** ~ */ | API 도큐먼트 주석 |
3-1. 변수
변수 : 하나의 값을 저장할 수 있는 메모리 공간
3-2. 변수 작성 규칙
- 첫번째 글자는 문자이거나 '$', '_'여야 하며, 숫자로 시작할 수 없다. ($#value와 같은 변수도 사용 안됨)
- 대/소문자가 구분된다.
- 첫문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫자를 대문자로 한다 (카멜 표기법?)
- 문자 길이의 제한은 없다.
- 자바 예약어는 사용 불가하다. (package, public, class, void 등등)
3-3. 지역변수/전역변수
지역변수
- 함수 안에서만 사용되는 변수
- 함수 안에 선언
- 반드시 초기화를 해주어야 함
전역변수
- 함수 전역에서 사용되는 변수
- 함수 밖에 선언
- 자동으로 초기화 됨
3-4. 리터럴
정수 리터럴(값) | 0, 20, -100, O2(8진수), 0xA |
실수 리터럴 | 3.14, 0.12E-5 |
문자 리터럴 | 'A', 'b', '한', '\t', '\n' |
문자열 리터럴 | "대한민국" |
논리 리터럴 | true, false |
3-5. 변수의 사용범위
블록 안에서 생성 된 변수는 블록을 벗어나게 되면 사용 할 수 없다.
블록 밖에서 생성 되어 있는 변수라면 블록 안에서 같은 이름으로 생성 할 수 없다.
4-1. 데이터 타입
정수 | byte | 1 byte |
char | 2 byte | |
short | 2 byte | |
int | 4 byte | |
long | 8 byte | |
실수 | float | 4 byte |
double | 8 byte | |
논리 | boolean | 1 byte |
- 정수는 default 타입이 int이기에 long 변수 타입은 숫자 끝에 L을 붙여줘야 long형으로 인식한다.
- 실수는 default 타입이 double이기에 float 변수 타입은 숫자 끝에 f를 붙여줘야 float형으로 인식한다.
4-2. 데이터 크기
byte(1) < short/char(2) < int(4) < long(8) < float(4) < double(8)
- short와 char는 크기는 같지만 형변환을 서로 할 수 없다.
- 실수 타입은 정수 타입과는 다른 저장방식(가수, 지수) 때문에 정수 타입보다 훨씬 큰 범위의 값을 저장할 수 있다.
5-1. 자동 형변환
byte aa = 127;
int ii = aa;
System.out.println(ii); //127
- 작은 크기 타입을 큰 크기를 가지는 타입에 저장하는 것으로, 값의 손실 없이 그대로 보존된다.
- 큰 크기 타입 = 작은 크기 타입
5-2. 강제 형변환
byte b2 = 100;
int i2 = 100;
b2 = (byte)i2;
System.out.println(b2); //100
char c2 = (char)i2;
System.out.println(c2); //d
System.out.println('d'); //d
System.out.println((int)'d'); //100
- 큰 데이터 타입을 작은 데이터 타입으로 쪼개어서 저장하는 것으로, 캐스팅 연산자 ()를 사용하는데 괄호 안에는 쪼개는 단위를 넣는다.
- 작은 크기 타입 = (작은 크기 타입) 큰 크기 타입
- 값의 손실이 있을 수 있다.
public static void test4() {
//여러타입을 연산하게 되면 결과는 무슨 타입일까?
int a = 10;
double b = 3.14;
double result = a+b;
System.out.println(result); //13.14
int result2 = (int)(a+b);
System.out.println(result2); //13
char c = '가';
String s1 = "자바문자열 : ";
System.out.println(s1 + 10 + 20); //자바문자열 : 1020
System.out.println(s1 + (10+20)); //자바문자열 : 30
int su1 = 10, su2 = 20;
System.out.println("더하기는 " + su1+su2); //더하기는 1020
/*※*/System.out.println("빼기는 " + (su1-su2)); //빼기는 -10
System.out.println("곱하기는 " + su1*su2); //곱하기는 200
System.out.println("나누기는 " + su1/su2); //나누기는 0
}
- String 문자열과 같이 출력되는 경우 숫자도 문자열로 강제 형변환이 이뤄진다.
- ※ '빼기는'은 String형으로 뒤에오는 su1은 int형이지만 string형으로 강제 형변환이 이뤄진다. string형은 뺄셈을 할 수 없기에 괄호를 이용하여 su1과 su2를 묶어 준 후 형 변환이 이뤄질 수 있다.
6. 연산자
package com.kosta.day01;
public class OperatorTest {
public static void main(String[] args) {
method1();
method2();
method3();
method4();
method5();
method6();
method7();
}
private static void method7() {
//삼항연산자
int score = 85;
int limit = 80;
String result = score >= limit ? "합격" : "불합격";
System.out.println(result); //합격
//if-else문을 이용하여 삼항 연산자를 대신할 수 있음
if (score >= limit) {
result = "합격";
}
else result = "불합격";
System.out.println(result); //합격
}
private static void method6() {
int a = 10;
int b = 20;
//|| : 하나라도 참이면 참이다. 앞의 결과가 true이면 뒷문장 수행 안함
//| : 하나라도 참이면 참이다. 앞의 결과가 어떻든 모든 문장 수행
boolean result = a >= 10 || ++b >= 20;
System.out.println("b = " + b); //b = 20
System.out.println("result = " + result); //result = true
boolean result2 = a < 10 | ++b >= 20;
System.out.println("b = " + b); //b = 21
System.out.println("result2 = " + result2); //result2 = true
}
private static void method5() {
int a = 10;
int b = 20;
//&& : 모두 참이면 참, 앞의 결과가 false이면 뒷문장은 수행 안함
//& : 모두 참이면 참, 앞의 결과가 어떻든 모든 문장 수행
boolean result = a < 10 && ++b >= 20;
System.out.println("b = " + b); // b = 20
System.out.println("result = " + result); //result = false
boolean result2 = a < 10 & ++b >= 20;
System.out.println("b = " + b); //b = 21
System.out.println("result2 = " + result2); //result2 = false
}
private static void method4() {
int a = 10;
int b = 20;
System.out.println(a == b); //false
System.out.println(a != b); //true
//"자바"라는 문자는 String클래스로 만들어진 객체인가요?
System.out.println("자바" instanceof String); //true
}
private static void method3() {
int a = 10;
int b = 20;
int result = a++ + ++b;
System.out.println("result = " + result); //result = 31
System.out.println("a = " + a); //a = 11
System.out.println("b = " + b); //b = 21
}
private static void method2() {
//증감연산자
int a = 10;
a++; //후위연산자
++a; //전위연산자
a += 1;
a = a+1;
//출력하고 증가
System.out.println("a = " + a++); //a = 14
//증가하고 출력
System.out.println("a = " + ++a); //a = 16
}
private static void method1() { //private : 해당 클래스 안에서만 사용가능
//산술연산자 : +, -, *, /, %
int a = 10;
int b = 3;
System.out.println("몫은 : " + a/b); //몫은 : 3
System.out.println("실수로 바꾼 몫은 : " + (double)a/b); //실수로 바꾼 몫은 : 3.3333333333333335
System.out.println("실수로 바꾼 몫은 : " + 1.0*a/b); //실수로 바꾼 몫은 : 3.3333333333333335
System.out.println("나머지는 : " + a%b); //나머지는 : 1
}
}
'공부 > JAVA' 카테고리의 다른 글
[JAVA STUDY] DAY5. Singleton / final / Access Modifier (0) | 2021.02.21 |
---|---|
[JAVA STUDY] DAY4. 객체 / 클래스 / 생성자 / 메소드 / 인스턴스 멤버 / this / 접근제한자 / static (0) | 2021.02.18 |
[JAVA STUDY] DAY3. Memory Reference / 배열 / 확장 for / Call / enum (0) | 2021.02.17 |
[JAVA STUDY] DAY2. 조건문 / Random함수 / 반복문 / Scanner (0) | 2021.02.16 |