TIL 22.11.07 / JAVA 기초

쓰옹·2022년 11월 7일
0
post-thumbnail

둘째 주 시작이다
오늘부터는 본격적으로 강의를 듣는다. java문법 기초부터 시작해서 알고리즘 등등..
기대되는데 이해하기 어려울까 걱정도 된다.
일단 오늘 배운거 정리 시작-

Java 세팅

java를 다운로드 한 다음 바로 환경변수 설정을 해야한다.

환경변수 설정

<환경변수>의 <시스템 변수>에서 새로만들기를 한 후

  • 사진과 같이 값을 입력
  • 시스템변수 > Path 에 추가한다
    ;C:\Program Files\Zulu\zulu-8\bin

경로를 잘 설정했다면 명령프롬프터에 java -version을 입력한 후 OpenJDK 관련 정보가 표시되면 완료다.

환경변수 설정, 왜?

수업을 따라가는데 설정을 왜 해야하는지가 궁금해졌다. 바로 구글링

환경 변수를 설정하는 것은 운영체제가 컴퓨터의 어떤 경로에서든지 파일을 인식하도록 하는 것이다.

경로를 따로 지정하지 않고도 컴퓨터 어느 경로에서든 자바를 인식할 수 있도록 하기 위해서였다.

Java 기초문법

변수 & 상수

  • 변수: 데이터 저장을 위한 메모리 공간의 이름. 값 변경 가능
  • 상수: 변하지 않는 값. 초기 설정값을 끝까지 사용해야함
public class main {
    public static void main(String[] args) {
        int number = 5;  //정수형 변수
        System.out.println(number);

        String sparta = "Hello World!"; //문자형 변수
        System.out.println(sparta);

        final int finalNumber = 1;
        
        System.out.println(finalNumber);
    }
}

변수 선언

  • 접근제어자 변수의자료형 변수이름 순으로 선언.
    위 코드의 경우 final: 접근제어자, int: 자료형, finalNumber: 변수이름
  • 변수이름의 경우 첫 글자로 숫자, 특수문자는 쓰지 못한 등 규칙이 있음.
    자바는 CamelCase를 사실상의 표준으로 하고 있음.


자료형

기본자료형(Primitive Type)

숫자, 문자, 논리, 바이트

숫자

  • short: 2바이트로 표현할 수 있는 정수형 자료형

  • int: 4바이트로 표현 +-20억

  • long: 8바이트로 표현

  • float: 소수점 표현 자료형

  • double: 소수점 표현 자료형

  • .MAX_VALUE / .MIN_VALUE : 표현 범위를 나타내줌

문자

char score = 'S';
  • char (character의 약자) > 변수에 ' ' 작은따옴표 넣어서 알파벳 한 글자만 설정 가능

논리값

boolean fact = true; 
  • boolean: true/false 의 값을 가짐. 디폴트값이 없음

바이트

  • byte: 데이터 표현
  • d는 아스키코드에서 십진법으로 100이라 100 출력
  • 아스키(ASCII)코드: 사람이 인식하는 문자를 컴퓨터가 뭘로 인식하는지 알려주는 표

참조자료형(Reference Type)

  • 기본 자료형이 아닌 모든 것(자바에서)
  • 자바의 인스턴스(객체)를 가리킬 수 있는 자료
    class로 정의된 타입을 쓸 때는 다 참조자료형임

String

  • class를 이용한 변수 설정할 때 " " 큰따옴표 사용

int[]

int[] intArray = new int[] {1, 2, 3, 4, 5}; //0번째 인덱스부터 4번째 인덱스까지 있음
  • 인트배열은 int를 여러 개를 담을수 있는 것

  • new int[]{ , , } : 인트배열을 만들면서 {}안에 있는 애로 초기화함

[ ]: 배열을 의미

  • 동일한 자료형(int, String .etc.. )의 데이터를 연속된 공간에 저장하기 위한 자료구조. 인덱스는 0번부터 시작.
  • int의 디폴트값은 0,
  • 참조자료형은 기본값이 없음
  • nul(자바에서 아무 값도 없다는 표시)
  • System.out.println(str + "\n" + num)
    글자를 이어붙이고 싶을 때 그냥 +만 쓰면 char의 문자형 변수를 아나키코드사의 숫자로 변경해서 숫자형 변수와 더한 값을 출력하기 때문에 + "" +를 넣어줘야함
  • \n은 행을 바꾸고 출력해줌

연산자

산술연산자

+,-,*,/,% -> 플,마,곱,나눗,나머지

대입연산자

계산을 한 결과를 대입하겠다

  • num1 += num2

관계연산자

  • 비교. 논리형으로 결과 출력

논리연산자

  • &&: and연산
  • ||: or연산
  • !: not연산

비트연산자

조건문

if문

 if (조건식){
    실행 코드
}
  • 조건 2개가 다 포함될 때, 첫번째 조건이 맞으면 다음조건으로 넘어가지 않음
  • if 조건문 안의 식이 false이므로 else if 코드 실행

switch문

switch (입력 변수){
    case 입력값1 : 실행 구문
        break;
    case 입력값2 : 실행 구문
        break;
    case 입력값3 : 실행 구문
        break;
    default: 기본 실행 구문
        break;
}

char score = 'A'; //라면 "A등급을 축하합니다." 가 출력되고 끝남
  • 조건을 계층적으로 선언함
  • break; 앞 선 조건이 맞으면 뒤에 있는 case를 확인하지 않겠다.

삼항연산자

조건식 ? A : B 

-조건이 true면 A를 , false면 B를 출력

예시

  • System.in : 시스템 인풋을 받을거야; 시스템 실행창에 숫자 입력하면 결과값이 나옴
    .nextInt() : 다음에 들어오는 숫자를 받을거야

반복문

for문

for(초기값 ; 조건식 ; 증감식){
    실행 코드 블럭
}

for-each문

  • 나열,배열이 있는 경우

while문

while(조건 하나만){
조건을 나열
}

  • i++를 제외하면 무한루프에 빠짐.. 계속 실행중이야 조건 계속 돌려버려

  • continue: 밑에 조건을 스킵하고 괄호 조건을 확인해

do-while문

  • 조건을 먼저 실행해

while / do-while 차이

  • while문은 조건식에 부합할 경우 코드 블럭을 실행하지만, do-while문은 일단 코드 블럭을 >무조건 한번 실행한 후, while문의 조건을 비교합니다.
  • 즉, while문의 조건을 확인하기 이전에 do 내부의 코드블럭을 한 번 시행한 후, 그 이후에는 while문의 조건에 일치하지 않으므로 더이상의 실행은 하지않고 출력을 하게 되는 것입니다.

오류

  1. 코드스니펫 붙여와서 코드를 작성했는데
C:\Users\0000\Desktop\sparta\camp\2����\java\sparta_java\src\main\java\main.java:1: error: class Main is public, should be declared in a file named Main.java
public class Main {
       ^
1 error

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.

이런 오류가 뜸
알아보니 java파일이 들어가 있는 파일의 이름이 main으로 소문자 m이고
코드스니펫에 있던 코드는 public class Main으로 되어있어서 그런거였음.
다음부턴 대소문자 잘 구분하자~

  1. public class Main {
        public static void main(String[] args) {
            int sum1 = 0;
            int sum2 = 0;
    
            for (int i=0; i < 30; i++){
                if ((i+1) % 2 == 0){
                    sum1 += (i +1);
                } else {
                    sum2 += (i + 1);
                }
                System.out.println(sum1 +"\n"+sum2);
            }
        }
     

홀수, 짝수 나눠서 더하는 코드 짜는 퀴즈였는데
위 코드가 생각해 낸 것이였다. 근데 결과값이 0부터 225까지 짝수 홀수 순으로 다 찍혀서 잘못된 코드구나 했는데 중괄호를 하나 빼먹어서 그런거였음

  • 이것은 강사님이 짠 코드



마무리

재밌다.
한 글자 글자 잘 써야겠다는 생각이 든다.
오류가 나지 않으려면...ㅎ

profile
기록하자기록해!

0개의 댓글