목록분류 전체보기 (99)
되자!백엔드개발자

static공부하다가 책에 설명이 부실한 것 같아 검색하다보니 메모리와 크게 연관이 있어보여 메모리 먼저 글을 써본다. 도움이 된 블로그는 아래와 같다 https://tape22.tistory.com/28 https://m.blog.naver.com/heartflow89/220954420688 JVM 실행 순서 JVM SW가 메인 메모리에 올라간다. JVM이 실행할 class files들을 기계어로 번역 후 메모리에 올린다. CPU가 기계어로 된 응용프로그램을 1 line씩 실행한다. 자바에서의 메인 메모리구조 프로그램을 구동하기 위해서는 운영체제가 메모리(RAM)에 데이터 및 명령어를 저장할 공간을 할당해 준다. 메모리의 공간은 크게 코드영역(실행할 코드가 올라가는 곳이라 다른 설명 생략), stati..
접근지정자 클래스나 멤버들이 다른 클래스에서 접근해도 되는지의 여부를 선언하는 지시어이다. 객체 지향 특성을 살리기 위해서는 캡슐화의 원칙이 지켜지도록 가능한 한 접근 범위를 작게 하여 접근 지정자를 선정하는 것이 좋다. 특히 멤버변수는 특별한 이유가 없는 한 public의 선언을 자제하고 private으로 설정한다. 대신 public 메소드를 만들어 private 필드를 조작하도록 하는 것을 권장한다. 자바에서는 4가지가 있다. 멤버에 접근하는 클래스 멤버의 접근 지정자 private 설정 X (default) protected public 같은 패키지의 클래스 X O O O 다른 패키지의 클래스 X X △ O 접근 가능 영역 본인 클래스 내 1. 본인 클래스 내 2. 동일 패키지 내의 다른 클래스까지..

클래스와 객체 클래스는 객체를 만들어내기 위한 설계도, 객체는 이 설계도 대로 생성된 실체이다. *** 객체란 속성과 행동을 가져 다른 것과 구별될 수 있는 것을 뜻한다. 자세한건 앞에 글 참고 *** //클래스 설계도의 역할을 한다. public class Circle{ int radius; //필드 public Circle(int radius) { //생성자, 뒤에 설명 나옴 this.radius = radius; } public double getArea() { // 메소드 return 3.14 * radius * radius; } } 위는 원에 관해만든 class이다. 반지름(radius)이라는 속성을 가지고 있고 넓이를 구하는 getArea()라는 메소드를 가지고 있다. //앞으로 이 설계도대로..
앞에서 객체지향과 절차지향에 대해 이미 글을 쓴 것 같긴 한데 class를 다시 배우다가 다시 정리해서 따로 글을 판다. 찐!마지막! last! 정리 객체지향 언어(OOP: Object Oriented Programming) 자바의 특징을 설명하라면 객체지향 언어라고 많이 말한다. 그렇다면 정확하게 객체란 무엇일까? 객체(Object)란 물리적이든 추상적이든 자신의 속성과 행동을 가지고 다른 것과 식별이 가능한 것을 뜻한다. 객체지향한다는 것은 세상의 물체를 객체를 표현하고, 이것들의 관계와 상호작용을 설계한 뒤 각 객체를 클래스로 구현한다. 언어 중 대표적으로 JAVA와 C++이 있다. 객체지향언어의 특성 1. 캡슐화 객체의 가장 본질적인 특징으로 객체를 캡슐로 싸서 내부를 보호하는 것이다. 자바는 c..

그동안 반복문이나 조건문 등은 책을 정독해도 다른 언어랑 다를 바가 없어서 블로그 쓴다고 공부가 될 것 같지 않아서 패스했었다. 그러나 배열은 선언방법이나 for-each나 이것저것 추가적인 것이 있어서 따로 정리해본다. 배열(Array)이란? 배열은 인덱스(index)와 인덱스에 대응하는 데이터들로 이루어진 연속적인 자료 구조로서, 같은 종류의 데이터들이 순차적으로 저장된다. 배열을 사용하지 않는 경우는 변수를 일일이 선언해야하고 참조할때도 하나씩 접근해야하기 때문에 불편하다. 반면에 배열을 사용한다면 하나의 선언으로 여러개의 공간을 생성하여 접근도 인덱스로 한번에 할 수 있다. 배열의 선언과 생성 배열은 다음과 같이 생성한다. int intArray[] = new int[5]; //선언 먼저 doub..
각 언어마다 입력받는 함수들이 다르다. 여러가지가 있겠지만 C/C++ 에서는 scanf, cin 을, 파이썬에선 input을 많이 사용한다. 자바에서는 아래와 같은 형식을 많이 사용한다. import java.util.Scanner Scanner sc = new Scanner(System.in); Scanner 구조 1. import java.util.Scanner Scanner을 사용하기 위해서는 반드시 java.util.Scanner을 import 시켜줘야한다. Scanner은 우리가 직접 짜는게 아니라 이미 다른 개발자들이 작성해놓은 코드를 사용하는 것이기에 컴파일러에게 library 경로를 알려줘야 하기 때문이다. java.util 패키지 안에 들어있는 Scanner 클래스를 사용함을 나타낸다. ..
코테같이 짧은 코드를 짤 때는 괜찮지만 프로젝트를 진행할 때 여러명과 며칠을 걸쳐 코드를 작성하므로 변수나 함수 명을 명확하게 정해야 헷갈리지 않는다. 이때 다음을 고려하면서 이름을 붙이는 것이 좋다. 목적에 맞는 이름으로 붙일 것 이름의 길이에 연연하지 말고 충분히 긴 이름으로 붙일 것 언어의 관습을 따를 것 인데 ... 말로는 쉽지만 실제로 개발자들이 이름 짓기에 시간을 많이 할애할 정도로 쉽지 않은 일이라고 한다. 자기가 직접 해보면서 늘어야 하는 습관인 듯 하다. https://remotty.github.io/blog/2014/03/01/hyogwajeogin-ireumjisgi/ 효과적인 이름짓기 - Remotty Tech Blog 지금 아내의 뱃속에 15주 된 아기가 자라고 있다. 태명은 “행..

먼저 보고 오면 좋은 글 https://hyun-jng.tistory.com/62?category=1020266 Java(자바)를 시작하기 전에 알아두면 좋은 지식 이 글은 황기태,김효수 지음 [명품 JAVA Programming] 책을 참고하여 작성했다!! 학교에서 자바를 배울 때 이 책으로 배웠기 때문에 선택하였고 18년도에 발행한 책을 참고했는지라 앞으로 쓸 글에서 hyun-jng.tistory.com 자바 프로젝트의 구조 먼저 간단한 JAVA 코드를 살펴보자 package SamplePackage; public class sampleclass { public static void main(String[] args) { System.out.println("Hellow World"); #Java.la..

이 글은 황기태,김효수 지음 [명품 JAVA Programming] 책을 참고하여 작성했다!! 학교에서 자바를 배울 때 이 책으로 배웠기 때문에 선택하였고 18년도에 발행한 책을 참고했는지라 앞으로 쓸 글에서 자잘한 오류가 있을지도 모른다. 그렇다고 책 또 사긴 아까워서ㅠㅠ 걍 이걸로 공부하고 직접 프로그래밍 하면서 수정해갈 예정이다. 그러니 틀린 것이 있다면 댓글로 알려주시길~~ 기계어(Machin language)와 어셈블리어(Assembly language) 컴퓨터의 CPU는 이진수인 0과 1밖에 이해하지 못한다는 것은 알 것이다. 이렇게 0과 1로 구성된 언어를 기계어라고 한다. 그렇다고 우리가 0과 1로 직접 코드를 짜는 것은 너무 비 효율적이니 기계어의 각 명령을 ADD, SUB같이 사람이 이..