JAVA 기초문법(1)
👉 프로그램 기본지식 사항
ex) System.out.println("hello!");
.(점) : "가지고 있는~~"
;(세미콜론) : 하나의 명령이 종료되었다는 표시.
{} 중괄호 : 영역
👉 자바란?
-1) 프로그래밍 언어
소스코드 -> 컴파일러 -> 실행파일 -> JVM .class 파일 실행
**.java **.class
-2) 자바
절차지향 : C (순서대로) - 속도가 빠름/ 메모리적음 (임베디드)
객체지향 : Java, C++ (모듈화) - 유지보수 쉬움
-3) 자바의 특징
플랫폼 독립성(jvm을 통해 os 상관없이 실행)
👉 객체지향
멀티스레드 : 동시에 일 처리
가비지컬렉션 : 자바는 메모리 할당기능은 있지만, 반환(해제)기능은 없다.
자바 가상 기계의 가비지 컬렉션이 사용되지 않은 메모리를 자동 회수합니다.
-4) 자바 가상 기계 : jvm JAVA virtual machine
소프트웨어, 서로다른 플랫폼에서 자바 프로그램이 실행되는 동일한 환경을 제공한다.
jvm 자체는 플랫폼 종속적이다.
자바소스파일 (.java) -> 컴파일 -> 실행파일 (.class) -> .class 실행 -> jvm 메모리 로딩 ->
실행중 다른 클래스파일 or jdk 클래스파일이 필요하면 jvm이 파일 로딩/실행
-5) 자바 플랫폼
JDK : Java Development Kit : 자바 응용프로그램 개발할때 필요.
JDK 자바 컴파일러, 라이브러리, 샘플 소스등
Jre : 자바 응용 프로그램이 실행될때 필요한 소프트웨어(JVM)를 담고 있다.
JRE : Java Runtime Environment : 자바 프로그램을 실행할때 필요.
JDK 1.6 (자바 6) JDK 1.8(자바 8) JDK11(자바11)
-6) Java API : 남이 만들어 놓은 클래스
java11 공식 문서 : https://docs.oracle.com/en/java/javase/11/docs/api/
👉 변수 variable
-1) 변수 : "하나의" 값을 저장할 수 있는 공간. 마지막에 저장한 값만 남는다.
-2) 변수의 타입 : 정해진 타입만 값으로 저장(대입) 할 수 있다.
-3) 변수의 명명규칙 : ♥소문자로 시작(클래스명과 구분)
공백 x, 특수문자 _ $ 만 허용, 키워드 x , 블럭({}중괄화) 안에 같은 이름 x
의미있는 이름으로 작성, 한글x
👉 데이터 타입
문자 : Char
문자열 : String
숫자 : 정수 -> byte, short, int, long
숫자 : 실수 -> float, double
논리 : boolean
✏️ 예시보기
import java.lang.reflect.Array;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
//숫자
int number = 5;
System.out.println(number);
//문자열
String sparta = "Hello Sparta";
System.out.println(sparta);
//상수 final(접근제어자)
final int finalNumber = 1;
System.out.println(finalNumber);
// **기본 자료형
//정수
short s = 1;
System.out.println(s);
int a = 3;
System.out.println(a);
long b = 4;
System.out.println(b);
//실수
float f = 5.5f;
System.out.println(f);
double d = 5.5;
System.out.println(d);
//표현할 수 있는 최대값과 최소값
System.out.println(Short.MAX_VALUE);
System.out.println(Short.MIN_VALUE);
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Long.MIN_VALUE);
System.out.println(Float.MIN_VALUE);
System.out.println(Double.MIN_VALUE);
//문자 자료형
char c = 'A'; //글자 하나만
System.out.println(c);
//논리 자료형
boolean fact = true;
fact = false;
System.out.println(fact);
byte data = 'd';
System.out.println(data);
//**참조 자료형
//
String sparta1 = "Hello sparta";
System.out.println(sparta1);
//int배열 (int를 여러가지 담을 수 있는 배열), 선언과 동시에 초기화 (사이즈 지정X)
int[] intArray = new int[]{1,2,3,4,5};
System.out.println(Arrays.toString(intArray));
//아무것도 할당하지 않은 배열 (사이즈만 지정)
//int의 default 값 = 0
int[] intEmptyArray = new int[5];
System.out.println(Arrays.toString(intEmptyArray));
//String의 defualt 값 - null
String[] stringEmptyArray = new String[5];
System.out.println(Arrays.toString(stringEmptyArray));
String[] season = new String[]{"봄", "여름", "가을", "겨울"};
System.out.println(Arrays.toString(season));
//배열이 가지고 있는 길이 리턴
System.out.println(season[season.length -1]);
int[] arrayList = new int[]{10, 20, 30};
System.out.println(arrayList[arrayList.length-1]);
//**산술연산자
int num1 = 10;
int num2 = 20;
System.out.println(num1+num2);
System.out.println(num1-num2);
System.out.println(num1*num2);
System.out.println(num1/num2);
System.out.println(num1%num2);
//**대입
num1 += num2;
System.out.println(num1); //30
num1 -= num2;
System.out.println(num1); //10
num1 *= num2;
System.out.println(num1); //200
System.out.println(num1 > num2); //boolean 타입 결과
boolean b1 = true;
boolean b2 = false;
System.out.println(b1 && b2); //두개 모두 참이여야 참
System.out.println(b1 || b2); //둘중 하나라도 참이면 참
System.out.println(!b2); //결과값을 반대로
}
}
# 메모리 단위
1bit = 0 or 1를 저장하는 공간
1byte = 8bit
1024KB = 1MB
bit< byte < KB < MB < GB < TB < PB < EB < ZB < YB
-1) 기본형 (primitive type) : 8가지
논리형 : boolean : 1byte : true / false (개발에서 true = 1, false = 0)
문자형 : char : 2byte (unicode) : 한글자
정수 (음수/양수) : 소수점 없는 수
byte : 1 byte : -128 ~ 127
short : 2 byte : -32768 ~ 32767
int : 4 byte : 약 -21억 ~ 약 21억 (* 기본형)
long : 8 byte : 많이 ~~~
실수 (음수/양수) : 소수점 있는 수
상수 : final(접근제어자)
float : 4byte : 소수점 8자리까지
double : 8byte : 소수점 16자리까지 (* 기본형)
* 값 표현방법
문자1개 : '' : 홑따옴표로 묶어서 표현 'A'
문자열 : "" : 겹따옴표 묶어서 표현 "Hello"
숫자 : 10 111 123 1234 3.14
논리형값 : true/false
-2) 참조형 (Reference type) : 나중에..
문자열 : String : 크기제한 x
👉 변수의 선언과 사용
-1) 변수 선언 : 값을 저장할 그릇만 만들기
타입 변수명;
int score; -> score라는 이름으로 4byte 정수형 데이터 저장할 메모리 그릇을 만들어둠
-2) 변수 값 대입(저장)
변수명 = 값; (오른쪽에 있는 것을 왼쪽에 저장한다)
score = 100; (100을 score라는 곳에 저장한다.)
= : 대입연산자 : 오른편에 있는 모든 연산을 마친후 결과를 왼쪽 변수에 저장
-3) 선언 + 대입
타입 변수명 = 값;
int score = 100;
👉 변수의 사용
-1) 접미사 :
리터럴값 뒤에 데이터 타입을 명시해주는 방법
-2) 기본값 :
boolean : false;
char : ''; .'\u0000';
int : 0;
double : 0.0;
참조열 : null;
👉 출력문 : 콘솔에 출력하는 명령문 : 개발자가 확인용으로 많이 사용
-1) 종류
System.out.println(); : 엔터기능 O
System.out.print(); : 엔터기능 X (옆으로 값이 출력)
System.out.printf(); : 엔터기능 X 값을 출력할때 서식문자를 사용해야함 (몰라도 됨)
-2) 출력문 내 연산
숫자 + 숫자 ==> 더한 결과 출력
"문자열" + "문자열" ==> 문자로 연결된 문자열 출력
"문자열" + 숫자 ==> 문자로 연결된 문자열 출력
'문자' + 숫자 ==> 문자의 아스키코드값 + 숫자 결과값 숫자 출력
-3) 이스케이프 문자
: 출력문 내에서 사용되며, 어떠한 기능을 가지고 있는 특수 문자
(홑따옴표나 겹따옴표 안에 작성)
"\n" : 줄바꿈
"\t" : 탭간격
"\"" : 쌍따옴표 문자로 취급
"\'" : 홑따옴표 문자로 취급
"\\" : 역슬래쉬를 문자로 취급
👉 형변환 Casting, Type Conversiom, Converting
boolean 타입을 제외한 다른 타입들을 변환 시키는 것
(타입)변수
char < int < long // float < double
-1) 강제형변환 : (다운캐스팅, 디모션) : 큰타입 -> 작은타입 : 형변환 공식 적는다!
int a = 300;
byte b = a; ==> error !!
byte b = (byte)a; ==> 문법적으로 error는 안나지만, 값이 깨짐
double d = 1.5;
int i = (int)d; => i = 1
(int)3.5 + 4 => 7
(double)4 + 4 = 8.0000000
-2) 자동형변환 : (업캐스팅, 프로모션) : 작은타입 -> 큰타입 : 형변환 공식 생략가능
double d = 3.14 * 10; 31.4
3.14 * 10.0 (int -> double로 자동 변환)
5 + 3.5 ==> 8.5
5 / 2 ==> 2 5 / (double)2 ===> 2.5
int/int ==> int
👉 배열 array
-1) 같은 타입의 여러 변수를 합쳐놓은 것
-2) 데이터 저장 공간 수정/ 변경이 안된다
-3) 변수 = 값 1 개 저장, 배열은 값 여러개 저장
-4) 선언
타입[] 배열명; int[] score;
타입 배열명[]; int score[];
int [] score ;
int : 배열에 저장될 데이터의 타입 (숫자)
[] : 배열 선언 (이건 배열이다!)
score: 배열에 대한 레퍼런스(참조- 저장위치 주소) 변수
선언만으로는 배열의 공간이 할당되지 않으며, score 라는 레퍼런스 변수만 생성된다. (stack / heap 메모리)
레퍼런스 변수는 배열공간에 대한 주소값 (레퍼런스값)을 가지며 그 변수 자체가 배열은 아니다.
배열 공간이 생성되지 않았으므로 선언만 할시, 레퍼런스 변수의 초기값은 null 이다.
-> 레퍼런스 : 주소, 레퍼런스변수 : 주소를 저장하는 변수
-5) 생성
레퍼런스 변수 = new 타입[방개수];
score = new int[5];
new : 메모리 할당 키워드
int : 배열 타입 : 실제 저장될 데이터의 타입
[5] : 배열 방의 개수
-6) 인덱스 index
배열의 방은 0부터 시작하는 방번호가 매겨지며 이를 인덱스라 한다.
인덱스를 이용하여 배열의 각 방에 접근 가능.
score[0] = 10;
-7) length
배열의 길이 (방개수)를 알여주는 명령어.
score.length --> 5
-8) 배열은 연속되는 숫자를 방 번호로 갖고 있어서 (index) 반복문과 함께 자주 사용된다.
-9) 초기화
int [] score = {100, 90, 80, 70 60}; //(줄임)
int [] score = new int[]{100,90, 80 ,70, 60}; //(원형)
중괄호 {}안의 요소 개수를 계산해서 방 크기를 자동으로 만들어주고, 순서대로 값도 대입시켜줌.
선언과 초기화를 따로 분리시키면 에러!!
int [] score;
score = {1,2,3,4} (x) 에러남
int [] score = {1,2,3,4};
👉 입력문
Scanner : 자바패키지에서 제공하는 클래스. 입력 받을 때 사용.
#1. import 문 사용 :
자바 파일 최상단 package....; 명령문 밑에 작성
import java.util.Scanner;
#2. Scanner 객체 생성 (main 안에 작성)
Scanner sc= new Scanner(System.in);
#3. 입력받기 (받고싶은 만큼 메서드 작성)
String 변수 = sc.nextLine();
#4. Scanner 객체담기
sc.close();
import java.util.Scanner;
public class Main3 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if(score >= 90){
System.out.println("A등급입니다.");
}else if(score >= 80){
System.out.println("B등급입니다.");
}else if(score >= 70){
System.out.println("C등급입니다.");
}else{
System.out.println("F등급입니다.");
}
}
}
🙋♂️ 소감 :
오늘부터 본격적인 수업자료가 오픈되었다.
알고 있는 단순한 내용이라도 눈으로만 보는 것과 직접 타이핑해서 결과를 확인하는 것은 확실히 느낌이 다르다.
😈 아는 내용이라고 그냥 넘어가는건 금물! 😈
'❤️🔥TIL (Today I Learned)' 카테고리의 다른 글
[TIL] 2022-11-09(8day) (0) | 2022.11.09 |
---|---|
[TIL] 2022-11-08(7day) (0) | 2022.11.08 |
[TIL] 2022-11-04(5day) (0) | 2022.11.04 |
[TIL] 2022-11-03(4day) (0) | 2022.11.03 |
[TIL] 2022-11-02(3day) (0) | 2022.11.02 |
댓글