본문 바로가기

Java

(73)
[Java] 클래스에 배열 사용 아직 클래스가 어떤 것인지 왜 필요한지 모르는 것 같다 싶으시면 해당 포스팅 먼저 보시는 것을 권장드립니다! Java 클래스가 필요한 진짜 이유 (feat.객체 vs 인스턴스) 자바는 클래스와 객체라는 중요한 개념이 있습니다. 그럼 오늘은 클래스와 객체라는 것이 왜 필요하고 자바의 세상을 이해해보는 시간을 가져보겠습니다. 먼저 클래스가 왜 필요한지 이해하기 madeprogame.tistory.com 지난 시간에 클래스가 뭐하는 것인지에 대해 알아보았습니다. public class ClassStart3 { public static void main(String[] args) { Student student1; // 첫 번째 학생을 담아둘 수 있는 변수를 선언 student1 = new Student(); ..
[Java] 클래스가 필요한 진짜 이유 (feat.객체 vs 인스턴스) 자바는 클래스와 객체라는 중요한 개념이 있습니다. 그럼 오늘은 클래스와 객체라는 것이 왜 필요하고 자바의 세상을 이해해보는 시간을 가져보겠습니다. 먼저 클래스가 왜 필요한지 이해하기 위해서 다음 예제를 가져와보겠습니다. 요구사항: 첫 번째 학생의 이름은 "학생1", 나이는 15, 성적은 90입니다 두 번째 학생의 이름은 "학생2", 나이는 16, 성적은 80입니다. 각 학생의 정보를 다음과 같은 형식으로 출력해야 합니다. "이름: [이름] 나이:[나이] 성적:[성적]" 변수를 사용해서 학생 정보를 저장하고 변수를 사용해서 학생 정보를 출력해야 합니다. 예시출력: 이름:학생1 나이:15 성적:90 이름:학생2 나이:16 성적:80 package class1; public class ClassStart1Re..
[Java] 메서드 A 부터 Z 까지 (feat. 오버로딩) 오늘은 메서드에 대해서 공부하겠습니다. 우선 메서드가 무엇인지? 왜 필요한 것인지 알아야 겠죠? 필요성을 확인하기 위해서 두 숫자를 입력 받아서 더하고 출력하는 단순한 기능을 만들어보겠습니다. 같은 연산을 두 번 수행한다. 코드를 잘 보면 계산 1 부분과, 계산 2 부분이 거의 같다. 계산 1,계산 2 둘 다 변수를 두 개 선언하고, 어떤 연산을 수행하는지 출력하고, 두 변수를 더해서 결과를 구합니다. 만약 프로그램의 여러 곳에서 이와 같은 계산을 반복해야 한다면 같은 코드를 여러번 반복해서 작성해야 할 것입니다. 더 나아가서 어떤 연산을 수행하는지 출력하는 부분을 변경하거나 또는 제거하고 싶다면 해당 코드를 다 찾아다니면서 모두 수정해야 하겠죠. 이런 문제를 어떻게 해결할 수 있을까요? 함수(funct..
[Java] 향상된 for문 향상된 for문을 이해하려면 배열을 먼저 알아야합니다. 혹시 배열을 아직 모르시거나 이해가 되지 않는 분들은 해당 포스팅을 참고하시기 바랍니다. java 배열 이해가 안된다고? 일단 들어와봐! 배열이 필요한 이유에 대해서 알아보기 위해서 학생의 점수를 출력하는 간단한 프로그램을 작성해보겠습니다. 만약 학생을 몇 명 더 추가해야 한다면 변수를 선언하는 부분과 점수를 출력하는 madeprogame.tistory.com 향상된 for문(Enhanced For Loop) 각각의 요소를 탐색한다는 의미로 for-each문 이라고도 많이 불립니다. 향상된 for문은 배열을 사용할 때 기존 for문 보다 더 편리하게 사용할 수 있습니다. for(변수 : 배열 또는 컬렉션) { // 배열 또는 컬렉션의 요소를 순화하면..
Java 너 도대체 뭐니? 우리는 매일 컴퓨에 설치된 워드 프로세서와 스프레드 시트 등 다양한 프로그램을 쓰고 있습니다. 워드 프로세서와 같은 프로그램을 사용한다는 것은 문자를 표시하고, 문자를 꾸미고, 인쇄하는 것과 같은 특정한 일을 컴퓨터에 지시하여 처리하고 있다고 생각할 수 있습니다. 컴퓨터가 어떤 일을 처리하기 위해서는 사용자의 컴퓨터가 그 일의 내용을 이해할 수 있어야 합니다. 이를 위해서, 원래는 기계어(machine code)라 불리는 언어로 프로그램을 만듭니다. 그러나 아쉽게도 기계어는 "0"과 "1"이라는 숫자의 나열로 구성되어 있습니다. 컴퓨터라면 0과1이 나열되어 있는 기계어를 이해할 수 있겠지만 인간은 이해하기 할 수 없습니다. 그래서 "기계어보다 인간의 언어에 가까운 수준의 프로그래밍 언어"라고 불리는 것들..
[Java] 2차원배열 전에 배웠던 배열은 단순히 순서대로 나열되어 있었습니다. 이를 1차원 배열이라고 하는데요. 이번에는 2차원 배열을 배워보겠습니다. 2차원 배열은 행과 열로 구성되어 있습니다. 아직 1차원 배열이 익숙하지 않은 분들은 먼저 게시글을 봐주세요! java 배열 이해가 안된다고? 일단 들어와봐! 배열이 필요한 이유에 대해서 알아보기 위해서 학생의 점수를 출력하는 간단한 프로그램을 작성해보겠습니다. 만약 학생을 몇 명 더 추가해야 한다면 변수를 선언하는 부분과 점수를 출력하는 madeprogame.tistory.com 2차원 배열은 int[ ][ ] arr = new int [2][3]와 같이 선언하고 생성합니다. 그리고 arr[1][2]와 같이 사용하는데, 먼저 행번호를 찾고, 그 다음에 열 번호를 찾으면 됩니..
[Java] 배열 이래도 이해가 안된다고? 배열이 필요한 이유에 대해서 알아보기 위해서 학생의 점수를 출력하는 간단한 프로그램을 작성해보겠습니다. 만약 학생을 몇 명 더 추가해야 한다면 변수를 선언하는 부분과 점수를 출력하는 부분의 코드도 추가해야 합니다. 학생을 몇명 더 추가하는 것은 개발자가 코딩으로 해결할 수 있겠지만, 학생을 수백 명 이상 추가해야 한다면 코드가 상당히 길어질 것 입니다. 결국 학생 수가 증가함에 따라 코딩 양이 비례해서 증가하는 문제가 발생합니다. 변수를 선언하는 부분을 보면 학생 수가 증가함에 따라 int형 변수를 계속해서 추가해야 한다는 것이고, 학생 수가 5명이면 int형 변수를 5개 선언해야 하고, 학생 수가 100명이라면 int형 변수를 100개 선언해야 합니다. 결국 비슷한 변수를 반복해서 선언하는 문제가 발생..
[Java] Scanner 변수, 연산자, 조건문, 반복문은 프로그래밍의 가장 기본이 되는 기능입니다. 대부분의 프로그램 언어는 이 기능을 필수로 가지기도 하고요. 지금까지 학습할 때 아쉬움이 있었는데, 사용자의 입력이 없었다는 점입니다. 이번 시간에는 사용자의 입력을 받는 방법을 배워서, 좀 더 그럴듯한 프로그램을 만들어보겠습니다. System.out을 통해서 출력을 했듯이, System.in을 통해서 사용자의 입력을 받을 수 있습니다. 그런데 자바가 제공하는 System.in을 통해서 사용자의 입력을 받으려면 여러 과정을 거쳐야해서 복잡하고 어렵습니다. 자바는 이런 문제를 해결하기 위해서 Scanner라는 클래스를 제공합니다. 이 클래스를 사용하면 사용자 입력을 매우 편리하게 받을 수 있습니다. Scanner scanner =..
[Java] 자동 형변환? 캐스팅? 작은 범위에서 큰 범위로는 당연히 값을 넣을 수 있습니다. 예시 ) int → long → double 큰 범위에서 작은 범위로 값을 넘기게 되면 이런 문제들이 발생할 수 있죠? 1) 소수점 버림 2) 오버플로우 자바에서도 작은 범위에서 큰 범위로 대입은 허용합니다. int < long < double int 보다는 long이, long보다는 double이 더 큰 범위를 표현할 수 있습니다. 자바는 기본적으로 같은 타입에 값을 대입할 수 있습니다. 그런데 다른 타입에 값을 대입하면 어떻게 될까요? int → long을 비교해보면 long이 int보다 더 큰 숫자 범위를 표현합니다. 작은 범위 숫자 타입에서 큰 범위 숫자 타입에 대입을 하면 문제가 되지 않습니다. long → double의 경우에도 dou..
[Java] 지역 변수, scope 그게 뭔데? 변수는 선언한 위치에 따라 지역 변수, 멤버 변수(클래스 변수, 인스턴스 변수)와 같이 분류됩니다. 지역 변수(Local Variable)는 이름 그대로 특정 지역에서만 사용할 수 있는 변수라는 뜻입니다. 특정 지역을 벗어나면 사용할 수 없고, 지역이라는 것은 변수가 선언된 코드 블록( { } ) 이겠죠? 지역 변수는 자신이 선언된 코드 블록 ( { } ) 안에서만 생존하고, 자신이 선언된 코드블록을 벗어나면 제거됩니다. 이렇게 된다면 이후에 접근할 수도 없겠죠? 예제를 보면서 설명해드리겠습니다. int m은 main{ }의 코드 블록안에서 선언되었습니다. 따라서 변수를 선언한 시점부터 main{ } 의 코드 블록이 종료될 때 까지 생존합니다. 또한, if{ } 블록 내부에서도 외부 블록에서 선언된 m에..