일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 의사난수
- 클래스
- new연산자
- Math.random()
- random클래스
- 멤버변수
- java
- random()
- 난수발생
- 2진법음수
- 자바
- 컴퓨터구조
- 1의보수
- 클래스멤버
- 2진법음수표현
- 전역변수
- JAVA프로그래밍
- 멤버필드
- 변수의초기화
- 난수
- 2의보수
- 부호절댓값
- static
- 멤버메소드
- 객체지향
- 지역변수
- 2진법의음수표현
- 자바프로그래밍
- 멤버변수의초기화
- 객체지향언어
- Today
- Total
목록전체 글 (52)
주인장의 프로그래밍 개발 공부방
본업에 바빠서 블로그에 전혀 신경을 쓰지 못하고 있었는데 부족한 글을 읽어주시면서 다음 글을 기다리고 있다는 댓글을 보고 다시 키보드를 누르게 되었습니다 일에 치이고 바빠서 다른 곳에 신경 쓸 겨를이 없었는데 이제는 좀 여유가 생기기 시작했고 다음 글을 기다리고 있다는 말이 계속 마음에 걸려 여전히 부족한 지식이지만 누군가에게 도움이 되었으면 좋겠다는 생각으로 글을 쓰고 있습니다. 본업이 개발자이긴 하나 누군가를 가르치고 하는 사람은 아니기에 지식을 전달하는 능력이 많이 부족한 것도 사실입니다. 제 스스로도 명확하지 않거나 부족한 부분은 다시 공부하고 채워넣고 정리를 하면서 글을 쓰기 때문에 한 편을 작성할 때 시간이 많이 걸리기도 합니다. 그럼에도 가능한 잘못되거나 왜곡된 내용없이 정확한 정보만 전달하..
지난 시간에 클래스의 구성요소인 멤버에 대해서 알아봤다. 그렇다면 이제 멤버를 사용하는 방법에 대해서 알아봐야 할텐데 하지만 그 전에 중요한 과정이 하나 기다리고 있다. 바로 멤버 변수의 초기화다. 이전에 프로그래밍 기본 지식 과정의 첫 번째 챕터에서 다뤘던 변수에서 변수의 기본 값과 초기화에 대해서 간단히 알아본 적이 있었다. 이번 시간은 그 내용의 연장선으로서 클래스의 멤버 변수의 초기화에 대해서 자세히 알아보고자 한다. 변수의 기본값과 초기화 내용은 아래에서 확인할 수 있다. https://colossus-java-practice.tistory.com/5 [Chapter 1 변수] 5. 변수의 기본 값과 초기화 지난 시간까지 변수가 무엇인지와 변수타입의 종류, 변수를 선언하는 방법 등을 알아봤다. ..
지난번에 자바에서 난수를 뽑아내는 방법으로 Math.random()이라는 메소드에 대해서 알아봤었다. 더보기 [자바 프로그래밍 기초] 6. 난수를 뽑아주는 Math.random() [자바 프로그래밍 기초] 6. 난수를 뽑아주는 Math.random() 이번 시간에는 자바에서 난수를 만들어야 할 때 유용하게 사용할 수 있는 Math.random()에 대해서 살펴보도록 하자. 1. 난수 난수(亂數)란 정의된 범위 내에서 무작위로 추출된 수를 일컫는다. 난수 colossus-java-practice.tistory.com 그리고 이번에는 자바에서 난수를 뽑아내는 다른 방법인 Random 클래스를 이용한 방법에 대해서 알아보도록 하자. 1. Random 클래스 그렇다면 일단 Random 클래스에 대해서 먼저 알아..
이번 시간에는 자바에서 난수를 만들어야 할 때 유용하게 사용할 수 있는 Math.random()에 대해서 살펴보도록 하자. 1. 난수 난수(亂數)란 정의된 범위 내에서 무작위로 추출된 수를 일컫는다. 난수는 누구라도 그 다음에 나올 값을 확신할 수 없어야 한다. -출처 : 위키백과- 난수의 의미를 찾아보면 이렇게 설명하고 있는데 한마디로 랜덤한 숫자란 뜻이다. 우리가 가끔씩 프로그램을 개발할 때 난수가 필요한 경우가 있다. 대표적으로 로또번호 생성기나 추첨기, 암호키 생성 등과 같이 우리가 전혀 추측할 수 없는 숫자나 값을 뽑아내야 할 때가 바로 그 경우인데 이런 걸 구현할 수 있도록 자바에서는 Math.random()라는 메소드를 제공하고 있다. 그리고 Random클래스라는 랜덤객체를 생성할 수 있는 ..
지난 시간에는 클래스(Class)가 무엇인지에 대해서 알아봤고 간단하게 클래스를 생성하는 방법에 대해서 알아봤었다. 그런데 클래스를 생성한다고 해도 클래스는 무엇으로 구성되어 있으며, 무엇을 어떻게 넣어야 하는지 알아야 만들어서 써먹든지 말든지 할 수 있을 것이다. 스티브 잡스가 무대에 나와서 "iPhone"이라고 했을 때 관객들은 환호하겠지만 잡스가 거기에서 아이폰이 정작 무엇인지, 뭘 할 수 있는지, 무슨 기능이 들어있는지 설명하지 않고 발표를 끝냈다면 환호하던 관객들은 순식간에 대략 정신이 멍해졌을 것이다. 그러니 주인장도 이 글을 읽는 여러분들의 정신이 멍해지지 않도록 클래스가 무엇인지에서 끝내지 않고 클래스 안에는 무엇이 들어있으며, 어떤 걸 할 수 있으며, 어떻게 만드는지 에 대해서 알려주려고..
우리가 이전 글에서 객체지향이 무엇을 의미하는지와 장단점에 대해서 알아봤고 마지막에서 객체지향이 지니고 있다는 특징 4가지를 포장지를 뜯진 않고 껍데기만 잠깐 살펴봤었다. 이번 시간에는 그 4가지 중에서 하나를 가져와 포장을 뜯어서 내용물을 확인"해 보려고" 했지만 그 포장지를 뜯기 위해선 먼저 진행해야 할 선행 퀘스트가 있어서 일단 그 퀘스트부터 처리하고자 한다. 목표 : 클래스와 객체에 대해서 정확하게 구분하고 각각의 의미를 이해할 수 있다. 클래스를 이용해 객체를 생성하는 방법을 알 수 있다. 1. 클래스와 객체 객체지향에 대해서 알아보면서 우리는 객체(Object)가 어떤 존재인지 간단하게 알아봤는데 객체를 볼펜을 구성하고 있는 각각의 부품이라고 했었다. 그리고 그 객체들을 뚝딱뚝딱 조립하여 하나..
이 블로그에서 대부분 다루는 내용들을 몇 번 읽어본 사람들이라면 내용의 배경을 자바라는 언어를 가지고 설명하고 있다는 것을 다들 알고 있을 것이다. 하지만 설명을 자바로 한 것 뿐이지 다른 언어를 사용하고 있거나 배워본 사람들이라면 다른 언어들을 가져와 설명하더라도 특정 부분들을 제외하곤 대부분 다 비슷하다는 걸 느낄 것이다. 그래서 여기에서는 자바라는 언어와 그나마 직접적으로 관련이 있는 내용들을 다뤄보려고 한다. 다른 카테고리인 자바 프로그래밍 기초에서는 자바로 코딩이나 프로그래밍을 할 때 소스 코드를 "작성"할 때 유용한 내용들을 다룬다면 자바 프로그래밍 기본과 자바 프로그래밍 심화에서는 다른 사람들이 작성한 자바 소스 코드를 "분석"할 때 이게 무슨 의미인지, 왜 이렇게 작성했는지를 이해하는 지식..
앞에서 다양한 음수 표현 방법을 알아보면서 2의 보수가 컴퓨터에서 음수를 표현하는데 얼마나 잘 어울리는지에 대해서 이해했으리라 믿는다. 이번 편에서는 앞서 미처 설명하지 못한 부분들에 대해서 언급하고 좀 더 자세히 설명할만한 부분들에 대해서 알아보는 편으로 작성한다. 1. 컴퓨터는 덧셈 밖에 할 줄 모른다. 1편에서도 언급했지만 컴퓨터의 산술 논리 장치(ALU)는 가산기로 구성되어 있고 덧셈만 연산할 수 있는 기계이다. 그렇기 때문에 뺄셈이라는 로직 자체를 구현한 것이 아닌 음수를 표현하는 방식을 채택함으로서 덧셈만으로 뺄셈도 할 수 있게 된 것이다. 이러면 논리회로를 설계함에 있어서도 복잡 다양한 논리회로 구조보단 조금이라도 더 단순한 논리회로 설계가 가능한 것이다. 이것이 수학에서의 보수라는 개념으로..
1편에서는 2진수를 음수로 표현하는 방법 중 부호 절댓값에 대해서 간단하게 알아봤다. 2편에서는 보수라는 개념을 통해서 1의 보수와 2의 보수를 표현하는 방법, 2의 보수로 2진수를 음수로 표현하는 방법이 효과적인 이유를 설명한다. 목표 : 보수의 개념을 이해하고 1의 보수와 2의 보수를 이용해 음수로 변환 후 음수 연산을 할 수 있다. 1. 보수의 개념 1편에서 부호 절댓값에 대해서 알아봤는데 음수로 변환하는 방법은 간단하지만 그에 따른 단점이 있는 것을 알 수 있었다. 결국 우리와 함께 갈 수 없었던 부호 절댓값을 뒤로하고 우리 앞에 등장한 녀석이 바로 보수라는 개념이다. 생소한 단어일 수도 있는데 수학에서 등장하는 용어인데 수학적 의미로는 "보충해주는 수, 합해서 특정 숫자를 채우게 하는데 필요한 ..
최근에 달렸던 댓글에 답변을 하면서 문득 뇌리를 스친 내용이 생겨서 정말 오랜만에 간단한 컴퓨터 구조론 지식을 포스팅해보고자 한다. 이 내용을 공부한 지 오래되어서 예전에 공부했던 정보처리기사에서 정보를 얻고자 검색했는데 2020년 이후로 개정된 정보처리기사는 나에게 있어 너무 생소한 기사 자격증이 되어 버려서 잠시 정신을 잃을 뻔하다가 다시 정신을 차리고 여기저기서 공부를 하고 내 나름대로 작성해보려 한다. 잡설은 그만두고 여기에서 작성되는 내용은 직접적으로 프로그래밍을 언급하는 부분이 아니라 컴퓨터 공학과 관련된 지식을 얻고 간다는 생각으로 가볍게 읽어줬으면 좋겠다. 읽어보고 이해가 잘돼서 나의 지식이 되면 좋은 것이고 모르면 어쩔 수 없는 것이고.... 설명에 있어서 최대한 풀어서 설명하는 경향이 ..
이전의 객체 배열 설명이 길어진 관계로 두 편으로 나누어 작성합니다. 2. 가변 배열 지금까지 여러 배열에 대해서 알아봤는데 우리가 앞서 알아봤던 2차원 이상의 배열에서 조금 더 확장된 개념의 배열이 있다. 바로 가변 배열인데 의미 그대로 가변적인 크기의 배열을 뜻한다. 다시 말해, 각 배열의 요소마다 방크기를 임의대로 정할 수 있다는 뜻이다. 이게 무슨 소린가 싶겠지만 아래의 예시를 보면 쉽게 이해할 수 있을 것이다. 예시2) String[][] strArr = new String[3][]; 위의 예시2는 String[][] 타입의 2차원 배열에서 하나의 인덱스만 지정한 형태이다. 행렬로 비유하자면 행의 수만 지정한 상태인 것이다. 일반적인 2차원 배열의 형태라면 각 행마다 열의 수는 모두 동일하겠지만..
보호되어 있는 글입니다.
지금까지 배열의 전반적인 내용과 1차원 배열, 2차원 배열 등 다양한 배열에 대해서 알아보았다. 이번 시간에는 똑같은 배열이지만 구조적으로 조금 더 복잡한 심화내용을 다뤄보려고 한다. 목표 : 객체 배열과 가변 배열에 대해서 이해할 수 있다. 1. 객체 배열 우리는 지금까지 소스 코드 등을 자바를 기반으로 공부하고 있었지만 정작 객체지향 프로그래밍에서 객체라는 것을 제대로 공부하지 않았기 때문에 객체가 도당체 무엇인지 알 수가 없을 것이다. 하지만 지금은 객체가 무엇인지 이해하려 하지말고 일단 배열이라는 것에 초점을 맞추길 바란다. 이 다음에 배울 객체에서 제대로 알아볼테니 조급한 마음은 잠시 접어두자. 일단 객체 배열이라는 것은 배열은 배열이지만 배열의 각 방에 담겨있는 것들이 객체라는 것이다. 우리는..
이제 2차원 배열의 구조와 선언 방법에 대해서 알아봤으니 2차원 배열을 실제로 사용하는 방법에 대해서 알아보도록 하자. 여기에서는 다른 방식으로 선언하는 방법과 2차원 배열에 값을 저장하고 출력하는 방법에 대해서 알아보려고 한다. 목표 : 2차원 배열에 값을 저장하고 출력하는 방법을 이해하고 사용할 수 있다. 1. 2차원 배열에 값을 저장 2차원 배열을 선언도 해봤고 구조도 어떻게 되어 있는지 알아봤으니 이제 값을 저장하고 가져오는 방법에 대해서 알아보도록 하자. 먼저 저장하는 방법이다. 예시를 위해 2차원 배열을 만들어보자. 예시1) char[][] charArr = new char[4][2]; 이번에는 char타입의 2차원 배열을 선언해 보았다. 구조는 앞에서 살펴봤던 2차원 배열의 구조와 거의 흡사..
앞서 배열이 무엇인가와 배열의 구조에 대해서 알아봤고 대표적인 배열인 1차원 배열에 대해서 자세하게 알아봤다. 1차원이라는 말이 사용했다는 것은 2차원, 3차원도 있기 때문에 굳이 1차원을 언급했을 것이다. 그래서 이번 시간에는 2차원(이상) 배열에 대해서 알아보려고 한다. 목표 : 2차원(이상) 배열의 구조를 정확하게 이해하고 사용할 수 있다. 1. 다차원 배열 2차원 이상의 배열에 대해서 알아보기 전에 1차원 배열에 대해서 아주 간단하게 잠깐 복기하는 시간을 가져보자. 먼저 1차원 배열은 인덱스를 하나만 가지는 배열이 되겠다 형태는 int[] arr = new int[5]; 와 같이 선언하고 사용할 수 있겠다. 여기에서 왜 1차원이라는 단어를 사용하는지에 대해서는 굳이 자세하게 설명하지는 않을 것이다..