2022-05-04(Java_Base)

이상수·2022년 5월 5일
0

TIL Java/Git/etc

목록 보기
7/17
post-thumbnail
  1. 시작하게 된 계기 및 다짐 😮
  • 이번 코드스테이츠의 백엔드 엔지니어링 개발자 부트캠프에 참여하게 되면서 현직개발자 분들의 빠른 성장을 위한 조언 중 자신만의 블로그를 이용하여 배운 것 들을 정리하는게 많은 도움이 된다 하여 시작하게 되었다.

    • 그 날 배웠던 것을 길지 않아도 좋으니 정리하며 복습하는 습관 기르기
    • 주말에 다음주에 배울 내용들을 예습
    • 코딩 문제와 java코드들은 꾸준히 학습
  1. 학습 목표 😮
목표결과
Java언어의 특징O
기초적인 문법이해(입/출력,반복문,제어문 etc)O
JVM,JDK 이해 및 설치O
  1. 정리

Java 특징


# Java : 객체지향 프로그래밍 언어, 운영체제 독립적 실행 가능
# Java의 4가지 특징
 - 1. 운영체제 독립적 - JRE(JVM+표준 클래스 라이브러리) 모든 운영체제 사용가능
 - 2. OOP : 객체 지향 언어 -> 프로그램을 부품으로 나눈 부품 = 객체 
  ==> 유지보수와 확정성이 용이
 - 3. 함수형 프로그래밍 지원 : 람다식,스트림이 추가
 - 4. 자동 메모리 관리(Garbage Collection) -> 사용하지 않는 메모리 제거

# JRE : JVM + 표준 클래스 라이브러리
# JDK : JRE + 개발에 필요한 도구 포함

# JVM : 컴파일러(javac)를 통해 기계어로 변환된 java언어를 운영체제에 맞는 기계어로 변환시켜주는 실행 도구
  ==> 운영체제에 독립적 가능
  
  
----------------  형식 --------------------
public class Main{             // Main 클래스
   public static void main(String[] args){   
   // 접근 제어자 리턴타입 메서드(매개변수)

   }
}
-------------------------------------------


public -> protect -> default -> private (보안 순서)
 - public : (모든 허용)
 - protect : 같은 패키지 객체 상속 관계 객체들만 허용
 - default : 같은 패키지에 있는 객체들만 허용
 - private : 같은 클래스만 허용

static : 변수or메서드(Heap)가 아닌 클래스(static)에 속하도록 지정
  ==> 모든 객체가 메모리를 공유, garbage Collector에 관여x , ★프로그램 종료시 사라짐

리턴타입(void) : 메서드가 작업을 마치고 데이터를 반환할 때 반환할 타입 지정

Java의 2가지 타입
 - 기본 타입 : 데이터의 실제 값(정수타입,실수 타입, 문자 타입, 논리타입)
 - 참조 타입 : 데이터가 저장된 주솟값의미, 객체의 주소 저장

오버플로우 : 자료형이 표헌할 수 있는 범위 이상의 값 표현시 발생오류
 - byte num_1 = 1234566778;
  ==> long longNumber = 12345678910; 오류 발생 여기서 
                                    12345678910L; 로 변환시 오류해결

언더플로우 : 자료형이 표현할 수 있는 범위 이하의 값을 표현한 경우 발생
 - byte num_1 = -12345674335;

★비트의 맨 앞자리는 0과 1로 음수,양수 표시 따라서,
 - 1byte = -127~128

변수 타입/변환, 문자열

실수형 : float -> f, double -> d 로 값 뒤에 형을 붙여줘야 한다.
  ==> d가 default이므로 d는 안붙여도됨

논리타입(Booleam) : true or false의 1바이트 형식(0or1)

문자타입 : String , char(2byte)

변수 : 데이터의 저장 공간.
 - 영문자,숫자(시작x), _ 사용가능 , 두번째 단어 부터 대문자 시작구분
 - 예약어 사용 금지
 - int num = 4;   ,    여기서 '='는 오른쪽 데이터를 왼쪽에 젖아하란느 의미

상수(final) : 변하지 않는 수, 고정된 값
 - final double cal_pi = 3.14;

리터럴 변수 : 따로 객체 생성 없이 할당하는 변수
 ex) int currentAge = 20;  -> 20이라는 리터럴 값 

타입변환 
 - 1. 작은타입 -> 큰 타입 : 자동 형변환 가능
 - 2. 큰 타입 -> 작은타입 : 자동 형변환 불가 직접 해줘야함
 ex) int Value = 128;     
     byte byteValue = (byte)Value;

★★ (Casting 하려는 자료형).valueOf(Casting 할 Value) => 로 형변환 가능
★ 객체 타입 변환
# char to String : Character.toString() ; 으로 
# integer to int = a.intValue();

Character.forDigit(변수,진수) : int 형을 char형으로 변환
Character.getNumericValue(변수) : char 형을 int형으로 변환 
 ==> character - '0'; 도 가능



String 클래스 : " "로 감싸진 char의 배열, 문자열타입
 ==> ★참조타입으로, 해당 문자열의 첫번째 주소값 반환
 - String 변수 = "문자열"; 
 - String 변수 = new String("문자열");

 ==> 이 두 문자열은 문자열 리터럴or new키워드로 생성에 따라 ==연산자가 같지않음
 ==> 전자는 String Constant Pool영역에 후자는 Heap영역에 생성

charAt() : ()안에 해당하는 넘버의 문자 반환     (ex. str.charAt(3))
compareTo() : ()안의 문자열과 같은지 비교,대소 구분 (ex.  compareTo("asb"))
 ==> compareToIgnoreCase() : 대소 구분 x

concat() : 해당 () 문자열을 추가한 새로운 문자열을 반환 
indexOf() : ()안의 문자or문자열이 처음으로 등장한 인덱스 반환, 없을시 -1
trim() : () 문자열의 맨 앞과 맨 뒤에 포함된 공백문자를 제거
toLower/UpperCase() : 문자열을 모두 소/대문자로 변경

★ length : 배열 길이
★ length() : 문자열 길이 반환


★ java.util.StringTokenizer --> import

StringTokenizer : 원하는 구분자를 통하여 문자열을 분리하는 클래스
 - int countTokens() : 남자 있는 token개수 반환
 - boolean hasMoreElements()/hasMoreTokens()  : 포인터로부터 남아 있는 토큰이 있는지 없는지 확인
 - Object nextElements(), String nextTokens() : 현재 포인터의 다음 토큰 반환


StringBuilder : 문자열을 더하는 객체
 - stringbuilder.append("문자열").append(" 추가");

StringBuffer : String 클래스의 값을 변경,추가 할 수도 있는 버퍼를 가지고있음
 - 공간의 낭비가 없고 속도도 빠름
 - stringBuffer.append() : 앞서 예제 concat과 같지만 속도가 빠름
 - capacity() : 버퍼의 현재 크기를 알아보는 함수
 - delete(start,end) : start 인덱스부터 end-1까지의 인덱스 삭제 (deletecharAt())
 - insert(start," ") : start인덱스부터 문자열 추가
 
 
 

연산자, 입출력


# 삼항 연산자 : 조건식이 참/거짓일 때 그에 따른 결과값 주기
  ex) Age >=18 ?  10000 : 5000;
                          참       거짓;

# 연산자 우선 순위 
 1. (),[]		괄호 / 대괄호
 2. !, ~, ++, --	부정/ 증감 연산자
 3. *, /, %		곱셈 / 나눗셈 연산자
 4. <, <=, >, >=	대소 비교 연산자
 5. && , AND 	연산자
 6. || , OR 		연산자
 7. ? a  : b		조건 연산자
 8. =, +=, -=, /=, %=	대입/할당 연산자



==== 입력 ==== 
★ import java.util.Scanner : Consol 입력을 위한 클래스

Scanner scanner = new Scanner(System.in);
String inputValue = scanner.nextLine();      -> 문자열
                                     nextInt()        -> 정수
                                     nextFloat();     -> 실수


==== 출력 ====
System.out.println(inputValue);
System.out.printf("%d %d", int,int);


  1. 피드백 😮
  • Java뿐 아니라 모든언어에서 주가 되는 변수,문자열,타입변환을 배웠는데 언뜻보면 간단하지만 각 변수를 원하는 타입으로 형변환하여 사용하는게 쉽지 많은 않다.

  • 앞으로 배울 조건문,배열,반복문 등에서 이들을 자유롭게 사용하기 위하여 이 부분은 반드시 제대로 알고 이해하고 넘어가야 할 것 같다.

# 외우려하는 것 보다 자주 사용하면서 익숙해 지는게 좋을 것 같다.
  1. 앞으로 해야 될 것 😮
  • 매일 꾸준히 할 것
    • 꾸준히 velog 작성
    • Java 언어 및 Algorithm 공부(Coding-Test)
    • 틈틈히 운동 하기

  • 내일 해야 할 것
    • Java 조건문, 반복문
    • 이와 관련된 연습문제 해결
profile
Will be great Backend-developer

0개의 댓글