혼공단/혼공자

[혼공자] 1주차

珠延 2024. 1. 2. 15:03

예전에 배운 자바 개념들이 뒤죽박죽 섞여있는 느낌이라 기본부터 다시 잡아야겠다는 생각이 들었다. 그렇기에 이번 혼공
학습단을 신청하게 되어 다시 공부하려고 한다! 열심히 공부를 해서 꼭 6주차까지 완주하자는 마음가짐으로 임해 보도록 하겠다~
 

Chap 1. 자바 시작하기

자바를 시자하기에 앞서, 자바 개발도구(JDK)를 설치해야 된다.

JDK 설치 완료!

 


 

자바 개발 과정

1. 파일 확장명이 .java인 텍스트 파일을 생성하고 자바 언어로 코드를 작성한다.
2. javac 명령어로 컴파일 한다.
3. 컴파일 성공시, .class인 바이트 고트 파일이 생성된다.
4. java 명령어 실행하기
 

프로그램 소스 분석

클래스 : 메소드를 포함하는 블록
메소드 : 실행문들을 모아 놓은 블록

public class Test1 { //클래스 선언부

	public static void main(String[] args) {  //메소드 선언부
		 
		 System.out.println("Hello Java"); //실행문

	} //main 

}//class
public class는 공개 클래스라는 뜻이고, Test1은 클래스 이름이다. 
이때 클래스 이름은 소스 파일명과 동일해야 한다!

public static void main(String[] args)를 메소드 선언부라고 하고 괄호() 바로 앞의 main은 메소드 이름이다.


Chap 02. 변수와 타입


변수란 값을 저장할 수 있는 메모리의 특정 번지에 붙이는 이름이다. 

  • 하나의 변수에는 동시에 두 가지 값을 저장할 수 없고, 하나의 값만 저장할 수 있다
  • ex) 정수 값은 정수형 변수에 지정하고, 실수 값은 실수형 변수에 지정

 
 
변수 이름 작성 규칙

첫 번째 글자는 문자이거나 '$','_'이어야 하고 숫자로 시작할 수 없다
영어 대소문자 구분
첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을경우 첫 문자를 대문자로 작성
문자 수의 제한은 없다
자바 예약어는 사용할 수 없다 (public, class, new, if, static, int, long default 등등...)

 
값 저장


변수에 값을 저장할 때는 대입 연산자(=)를 사용한다.
이는 자바언어에서 오른 쪽 값을 왼쪽 변수에 저장한다는 의미이다.

int a;
a = 90; //90을 a변수에 저장

>> 변수에 값을 저장하는 것을 변수 초기화라고 한다.
 


기본 타입
 
자바에서 사용하는 기본 타입은 총 8개다.

정수 타입 byte, short, char, int, long
실수 타입 float, double
논리 타입 boolean

 
 
char 타입


문자 리터럴 : 하나의 문자를 작음따옴표(')로 감싼 것

  • 문자 리터럴은 유니코드로 변환되어 저장된다
char var1 = 'A'; // A가 출력
char var2= 65; //65의 아스키코드인 A가 출력


String 타입

 

큰따옴표(")로 감싼 문자열을 저장할 수 있는 타입

  • 큰따옴표로 감싼 문자들은 유니코드로 변환되지 않음


 실수 타입 


* 리터럴 : 소스 코드에서 프로그래머에 의해 직접 입력된 값
- float 타입으로 저장시 리터럴 뒤에 f or F를 붙여 컴파일러가 float 타입임을 알 수 있도록 한다.
- long타입은 수치가 큰 데이터를 다루는 프로그램에서 주로 사용

  • 정수 리터럴 뒤에 L or l을 붙인다

자동 타입 변환

허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생한다

큰 허용 범위 타입 = 작은 허용 범위 타입

 
* 허용 범위를 크기순으로 정리해보겠습니다.

byte < short < int < long < float < double

 
그러면 자동 타입 변환의 예시 코드를 보겠습니다!

byte bytevalue  = 18;
int intvalue = bytevalue; 

char charvalue ='A'; //A
int intvalue = charvalue; //65 char 타입을 int형으로 바꿨으므로 65가 출력된다

 

강제 타입 변환

큰 허용 범위 타입을 작은 허용 범위 타입으로 강제로 나눠서 저장하는 것이고 변환하고자 하는 타입 앞에는 캐스팅 연산자()를 사용한다

작은 허용 범위 타입 = 큰 허용 범위 타입

 

int intValue = 10;
byte byteValue = (byte)intValue ;

 
실수 타입은 정수 타입으로 자동 변환되지 않으므로 강제 타입 변환을 사용해야 된다.
이 경우 소수점 이하 부분은 버려지고, 정수 부만 저장된다.


정수 연산에서의 자동 타입 변환

int 타입보다 작은 byte, short 타입의 변수는 int 타입으로 자동 타입 변환돼 연산을 수행한다.

byte a = 1;
byte b = 10;
int result = (a+b);

 
문자열을 기본 타입으로 강제 타입 변환
 
기본 타입 값을 문자열로 변경하는 법

String.valueOf(기본타입값);
int x = 123;
String str = String.valueOf(x); //기본 타입 -> 문자열로 반환
>> "123"

 
형식 문자열
 
equals() 메소드
문자열(String)이 동일한지 비교할 때 쓰임

boolean result = inputData. equals("비교 문자열");


Scanner


키보드로부터 입력된 내용을 통 문자열로 읽기 위해 사용됨

import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
int input = scanner.nextInt();
String inputData = scanner.nextLine();
double inputDb = scanner.nextDouble();

Chap 03. 연산자와 연산식

연산자와 피연산자

int x,y;
int result = x + y; // + 는 '연산자', x 와 y는 피연산자다

증감 연산자

++, --를 말하며 변수 값을 1씩 증가, 감소 시킴
i++ 연산 수행 후 피연산자 값을 1 증가
++i 연산 수행 전에 피연산 값을 1 증가
i-- 연산 수행 후 피연산자 값을(i) 1 감소
--i 연산 수행 전, 피연산자 값을 1 감소

논리 부정연산자 (!)

논리 부정 연산자는 true를 false로, flase를 true로 변경하기 때문에 boolean 타입에서만 사용 가능하다

boolean play =true;
system.out.println(play); //true

play = !play;  // !(true)
system.out.println(play); // false

play =!play 	//!(false)
system.out.println(play); //true

논리 연산자

AND &&, &
OR || , |
NOT !

 

&&과 &의 차이

&&은 앞의 피연산자가 false이면 뒤의 피연산자를 평가하지 않고 바로 false를 산출 //&&이 더 효율적
&은 두 피연산자 모두를 평가해서 산출 결과를 나타냄

 

 

|| 과 |의 차이

|은 앞의 피연산자가 true면 뒤의 피연산자를 평가하지 않고 바로 true 산출  // |가 더 효율적
||은 두 피연산자 모두르 평가해서 산출 결과를 나타냄

 


삼항 연산자

조건식 ? 값 또는 연산식(TRUE) : 값 또는 연산식(FALSE);
int score =95;
char grade = (score>=90) ? 'A' : 'B';

 

 


1주차 선택 미션

 

강제형 타입 변환을 시켜서 문제를 풀어보았습니다!

방법1) int result = (int) (var1) + (int)(var2+var3) + (int)(var4);
방법2) int result = (int)(var1+var2) + (int)(var3+var4);

 

그럼 1주차 혼공자 끝!