본문 바로가기



전체 글

[JAVA] static 변수에 관한 의문점 자바를 공부하다가 문득 static변수에 대해 의문이 생기기 시작했다. static인데 이걸 다른 클래스에서 접근해서 바꿀 수 있다는 것부터가 마음에 안들었다. 사실 못바꾸게 할려면 final로 선언하면되는문제인데. 왜 굳이 다른 클래스에서 해당 클래스의 static을 바꿀 수 있는 건지 이해가 되질 않는다. 그리고 드는 근본적인 의문 static은 일종의 "전역변수"에 해당하는데, 프로그래밍에 있어서 전역 변수는 함부로 사용하면 안된다는 무언의 철학이 공공연히 떠돈다. 이것은 fail-safe산업에서 특히 강조되는 부분이기도 한데. 자바에서는 static을 사용해도 특별한 코드 추가 없이 바로 다른 클래스에서 참조 클래스로 호출해서 변경 가능하다는게 충격적이였다. 실제 생성객체이름.클래스 변수 이름 해.. 더보기
[단상] 실제 코드를 작성하려고 하면 생각처럼 되지 않는 이유 중하나 프로그래밍 예제 코드를 따라하다가 아이디어가 떠올라서 막상 적용할려고하면, 구현하기가 쉽지 않은데. 강의의 예제 코드들은 가르치기 위한 코드이므로, 해당 레벨에서 가장 적합한 제한적인 조건을 가지고 데이터를 다루기 때문에 해당 조건과 일치하는 상황을 위한 코딩은 쉽지만, 실제 생활에서 접하는 아이디어는 애초에 그 데이터의 종류나, 입력조건이 전부 다르기 때문에, 실제로 구현하기에는 수많은 조건적 변수가 존재한다. 그래서 만들어보는 프로젝트를 한다고 해도 기존에 알려져 있는 쇼핑몰 만들기 류의 프로젝트는 기본적으로 다루는 데이터와 방식의 조건이 정해져 있어서 따라하기가 쉬운데, 나만의 아이디어를 채용한 프로그래밍은 말그대로 맨땅에 헤딩이다. 파이썬의 경우는 데이터 값을 다루는데 최적화된 편이라 어느정도 구.. 더보기
[JAVA] 배열 array의 특성에 대하여 자바에서 array (뱨열)의 특성이 몇가지 있는데 그중 한가지가 배열은 생성하면 고정된 값이라는것이다. 배열 값을 수정하려고 외부에서 값을 변경시도하면 다음과 같은 메시지가 나온다. 이 메시지가 모든것을 함축하고 있는데 final field로 선언된 array.length는 바꿀 수 없다는 것이다. 즉, array를 선언해버리면 그 길이 값은 final로 처리해버린다는것이다. 이럴경우에는 배열을 필요한 길이 만큼 새로 생성한 다음 복사해서 배열을 채우는 방법과 ArrayList를 이용하여 애초에 길이를 변경할 수 있게하는 두가지 선택지가 크게 있다고 할 수 있겠다. 더보기
[Java] 반환값 return을 사용하는 경우와 안하는 경우 차이 return 문은 메서드를 호출하면 return문이 코드에 직접적으로 작성되어 있지 않을 경우 컴파일러가 추가하는데, 실제 구현코드는 동일하게는 작성할 수 없으므로, 기능적으로는 같은 동작이나, 처리방식이 약간 다르다. public class returnvalue { int add (int a, int b) { return a+b; } } public class returnvalue2 { int add(int a, int b) { int sum_result = a+b; return sum_result; } } 맨아래 코드는 return 문을 활용한 예시이고, 맨위의 코드는 return문 없이 바로 계산값을 return하게 한 코드이다. 실제 바이트 코드를 들여다보면 동작이 약간 다르다. 계산값을 바로 r.. 더보기
[노트북] 프로그램마다 다른 소리 크기 노멀라이징(일정하게) 하는 방법 노트북을 사면 사운드 쪽에 dolby audio premium 류의 사운드 효과 프로그램이 설치가 되는데, 단순히 소리에 효과를 부여하는것을 넘어서 다이나믹 레인지 개선같은 추가기능을 가지고 있습니다. 이 기능중에 하나가 볼륨 레벨러라는 것인데. 이걸 켜면 프로그램마다 음량 크기가 다른걸 일정하게 유지시켜 줍니다. 제작사 마다 이름은 다를 수 있습니다. 볼륨 노멀라이저라는 이름으로 되어있는 경우도 있습니다. 더보기
[JAVA] 자바의 변수 선언 특이성 static이 있고 없고 차이 static 으로선언된 변수는 클래스 변수라고 이해하면 쉽다. 클래스 자체는 객체지향의 기본적인 개념에서 많이 다루듯이 설계도 같은것인데, 코드상에서는 static으로 구현되는 변수가 된다. USB메모리를 생산한다고 치면, static 변수로 만들어야 하는것은 크기관련 속성이 될 수 있을것이다. 이를 코드로 구현하면 아래와 같다. static USB_memory width = 500 ; static USB_memory height = 100 ; 그리고 다른 인스턴스는 모델마다 다르게 부여되는 속성을 지정하면 된다. 여기서는 최대 쓰기속도를 모델마다 다르게 만든다고 하고, 이를 코드로 구현하면 다음과 같다. int preformance_Max_Write = 200; int designer_Max_Write.. 더보기
[JAVA] 리터럴 상수중 String의 특징(equals사용) String 문자열 리터럴의 특성 - String 리터럴 상수는 다른 상수와 달리 참조타입의 클래스에 속해있는 구조를 가지고있어서 객체를 다룰때와 같은 용법을 사용해야 합니다. 이는 기본타입의 데이터형과는 달리 직접적인 연산 비교식(==, -등)을 사용할 수 없다는 것으로 보면 됩니다. public class StringHeapNewString { public static void main(String[] args) { String a = "A"; String b = new String("A"); String c = "A" ; boolean same_Object = a.equals(b); if(same_Object) { System.out.println("a와 b객체 내용이 같습니다."); } else .. 더보기
[JAVA] 리터럴literal (상수)에 대하여 리터럴 literal은 코드내에서 직접 입력된 값을 일컫는 용어로, 각각 정수형(문자형포함), 실수형, 논리형과 문자열이 있습니다. 정수형은 흔히 말하는 정수로 세부적으로 10진수형, 0으로 시작하는 8진수형(01,-05), 0x이나 A~F로 시작하는 16진수형이 있습니다. 이 정수형은 다시 앞에서 이야기한 데이터 타입중에 정수타입에 해당하는 5개의 타입으로 분류 됩니다. 재미있는 점은 char의 경우 보기에는 문자 종류이지만 데이터 형으로는 정수타입 입니다. 실제 처리는 내부의 문자코드로 이루어 집니다. 이 텍스트처리에 관한 특이한 점은 백엔드보다는 프론트엔드에서 더 잘나타나는데, 문자가 깨질경우 유니코드로 지정해서 텍스트가 아닌 텍스트에 할당된 유니코드를 부여해서 저장하면 파일자체의 문자셋(옛날에는 .. 더보기