Java 6

향상된 for문 활용하기

향상된 for 문 자바의 반복문에는 대표적으로 for, while 문이 존재한다. 오늘은 for문 을 좀 더 편리하게 쓸 수 있게 해준 '향상된 for문'을 사용하다가 생긴 궁금증을 해결한 내용을 기록해보고자 한다. 기본적인 for 문 가장 기본적인 for 문의 형태는 아래와 같다. for(int i = 0; i < n; i++){ //반복하고자 하는 내용 } 반복문 안에 들어갈 수 있는 동작으로는 쓰기 나름이겠지만, 대표적으로 배열안의 값들을 모두 더하는 과정, 배열안의 값들을 콘솔창에 출력하여 확인하는 과정 등이 있다. 반복문은 주로 배열안에 있는 내용물들을 조작할 때 사용하기 때문에 index를 넘어가지 않게 신경써야하기 때문에 매번 불편함이 존재한다. 대표적으로 정수형 배열안의 내용물을 모두 더하..

Java 2024.01.19

Thread에 대한 기초 개념 정리

Thread란 무엇일까? Thread를 얘기하기전에 Process에 대해서 먼저 얘기해야한다. 프로세스는 간단하게 얘기하면 운영체제(OS)위에서 돌아가고 있는 프로그램을 의미한다. 각각의 프로세스는 메모리공간을 할당받아서 실행되고 있다. 그렇다면 쓰레드는 무엇일까? 쓰레드는 하나의 프로세스 안에서 진행되는 프로그램의 흐름이라고 생각할 수 있다. 비유를 통해 이해해보자. 운영체제를 하나의 큰 회사라고 생각해보자. 회사 안에는 여러부서(프로세스 : 진행중인 프로그램)가 있다. 각각의 부서들은 사무실의 공간(메모리)을 할당받아 업무를 진행한다. 그리고 각각의 부서안에는 팀장(main 쓰레드)과 팀원(이외의 쓰레드)들이 존재하여 업무를 처리한다. 쓰레드는 구체적으로 작업을 하고 있는 일꾼이라고 볼 수 있다. 팀..

Java 2024.01.17

Return 값을 굳이 부여하는 이유

return 값에 대하여... 자바로 프로그래밍을 하다보면 메소드를 만드는 과정에서 리턴값을 항상 고민하게 된다. 아직 프로젝트 경험이 적어서 그런지 return 값이 없이 void 로 작업하는게 흐름상 맞는 것 같은데 예제 코드나 정답 코드들을 보면 굳이 return 값을 부여하는 경우가 있다. 이에 대한 의문에 대해 튜터님과 의논을 한 결과 이는 확장성 문제와 연관시킬 수 있음을 알 수 있었다. return 값과 확장성 생각해보면 리턴값이 void 인 경우는 해당 메소드를 활용하는 방법이 딱 한가지로 결정된다. 예를 들면, 클래스 내부의 값을 세팅한다거나, 콘솔창에 값을 출력하는 것들을 예로 들 수 있다. 하지만 만약 리턴값을 부여하게 된다면 void 로도 동작이 가능하고 추가적으로 리턴값을 변수에 ..

Java 2024.01.16

Scanner 주의사항! nextInt() 와 nextLine()를 같이 쓰는 경우

초심자의 친구 Scanner 사용자 입력값을 받는 과정을 가장 간단한 방법인 Scanner를 이용해서 처리하다보면 의도치 않게 동작하는 경우가 발생한다. 대표적인 예시가 정수입력을 받은 뒤 String 입력을 받으려할 때 발생하는데 구체적인 예시를 통해서 이해해보자! Scanner의 배신 상황을 가정해보자. 학생의 나이와 이름을 순서대로 입력받은 뒤 이를 저장하는 프로그램을 만드는 중이다. 이를 위해 코드를 아래와 같이 작성하였다. Scanner sc = new Scanner(System.in); System.out.println("점수와 이름을 입력해주세요."); int score = sc.nextInt(); String subject = sc.nextLine(); System.out.println("..

Java 2024.01.12

Collection Framework - ArrayList 정리

ArrayList? ArrayList는 기존의 배열의 단점을 보완한 자료구조(data structure)이다. 기존의 배열은 어떤 단점이 존재하길래 ArrayList가 등장한 것일까. 1. 기존 배열의 단점 알고리즘 문제풀이를 하거나 프로젝트를 진행하다보면 입력의 개수를 정확히 알기 어려운 경우가 빈번하다. 이런 경우 기존의 배열을 사용하는 것은 굉장히 불편하다. 사이즈를 초과한 입력이 들어오는 것을 방지하기 위해 배열의 길이를 넉넉히 잡자니 메모리 낭비가 심해지고, 그렇다고 짧게 잡았다가 overflow가 발생하게 되면 사이즈를 늘린 새로운 배열에 값을 옮기는 작업을 해주어야한다. 이런 문제를 해결하기 위해 Collection Framework 는 ArrayList를 제공한다. 2. ArrayList의..

Java 2024.01.08

연산자 정리

연산자의 종류 산술 연산자 : 사칙연산() 및 비트연산() 비교 연산자 : 대소 비교(>,>=,] 오른쪽을 가리키는 화살표 ==오른쪽으로 n칸 움직이세요 == 2를 n번 나누세요. 2. 대입 연산자(=,++,--) 등호 기호(=) 는 가장 많이 사용되는 대입 연산자이다. 등호를 기준으로 오른쪽의 값을 왼쪽에 대입한다는 의미이다. 주의가 필요한 연산자는 (++,--) 이다. 왜냐하면 이 연산자는 변수의 앞에 붙이는 (prefix) 경우와 변수의 뒤에 붙이는 (postfix) 경우에 동작이 약간 다르기 때문이다. 예를 들어 이해해보자. int a = 1; int b; b=a++; //b에 a의 값을 전달하고 a를 1만큼 증가시킴 System.out.println(b);//1 System.out.println..

Java 2024.01.05