본문 바로가기

language/자바

(18)
[java] jython 스프링에서 파이썬 사용하기 1.다운로드 jython 사용을 위해서는 먼저 파일을 다운받는다 https://www.jython.org/download 받은 jar 파일을 자바로 실행합니다 이게 만약 없다면 jar 자바로 실행 검색! next 만하면서 쭉~ 진행 2. 환경변수 그리고나서 본인이 다운받은 jython 경로의 bin으로 환경변수 추가 3. dependency 스프링에서 pom.xml에 본인의 버전에맞게 dependency 추가 org.python jython 2.7.3 그리고 나서 메이븐 업데이트! 4. 사용 test.py를 만듭니다 def testFunc(a,b): c = a + b return c controller에 작성을 해줍니다 // 테스트 private static PythonInterpreter intPre;..
[java]try-with-resources (feat. autocloseable) try - catch try - with - resources try{ } catch (){ } 이러한 모양에서 try (여기!) { } 이런식으로 줄였다 일일이 close로 닫아주는 것들을 try-with-resource는 자동으로 닫아준다 ※주의사항! 아무거다 다 닫히는 것이아니다 인터페이스인 autocloseable를 implements한 클래스들만 가능 더 자세한건 여기서 확인 가능 https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html 사용자 클래스를 만들고 자동으로 닫히는걸 사용하고 싶으면 implements Autocloseable 를하고 void close() throws Exception 이 메소드를 Override ..
[java] Unreachable code 에러 (feat. dead code) Exception in thread "main" java.lang.Error: Unresolved compilation problem: Unreachable code 이 빨간줄이 없어지지 않고 저 오류가 계속 뜨고있었다 문법상 오류를 찾고있었는데 항상 하던 코드라 구글링을 하다가 알게되었다 제대로 완성하기전에 일단 while 문에 true를 넣어놨다가 생긴 오류였다 Unreachable code 도달할수 없는 코드이다 while에서 빠져 나가는 것이 없기때문이다 너무 간단한 오류였지만 코드 바꿀생각을 못하고 시간을 날리고있었다.. 영어뜻이라도 곰곰히 생각해볼껄 dead code vs Unreachable code 데드코드는 실행이된다 // dead code if(true) { return; } Syste..
[java] static 영역, heap 영역, stack 영역 (JVM) 나는 메모리를 이러한 구조로 이해하고 있었으나.... 이건 일반적인경우고 자바의경우는다르다 JVM의 구조가 다른것을 오늘에서야... 알았다... 5가지로 나눌수 있다 자세한 내용은 추가적인 검색을 추천드리고... (죄송합니다) 내가 말하고싶은거는 static은 어디에 저장되냐는 것이다 답부터 부터 말하면 method 영역이다 method영역에 static영역이 포함되고 static이 붙은 것들은 static영역에 저장된다 5가지 영역중 3가지만 간략하게 말하면 method영역 프로그램이 시작전에 로드되고 프로그램이 종료 시에 소멸된다 - 전역변수처럼 사용가능 stack 영역 메소드 호출과 관련된! 지연변수, 매개변수 등이 스택영역에 저장되었다가 메소드가 끝이나면 소멸된다 Heap 영영 클래스의 객체(인스..
[java] + 연산 순서 더하기는 왼쪽부터!!!! int a=1; int b=2; int c=3; String str = "4"; System.out.println(str+a+b+c); // 4123 System.out.println(a+b+c+str); // 64 System.out.println(a+b+str+c); // 343 int 랑 String이 +연산이 될경우 String으로 자동형변환이 일어난다 하지만 다음 순서를 기억하자!! 더하기는 왼쪽 부터 일어나니까 첫번째 다 문자열 계산이고 나머지는 문자열을 만나기전까지 int로 계산!!!
[java] local variables , instance variables, class variables (지역변수, 인스턴스변수, 클래스변수) method 내부에서 선언된 변수는 로컬변수 class 내부에서 선언된 변수는 클래스변수와, 인스턴스변수 static이 붙으면 클래스변수 안 붙으면 인스턴스 변수 로컬변수는 메소드가 호출될때 마다 스택에 생성되고 인스턴스 변수는 객체가 생성될때 마다 스택에 생성 클래스 변수는 클래스가 메모리에 올라간 순간 스택영역에 계속있는다
[java] default method 디폴트 메소드 (feat. abstract class) default method interface에서 내용이 있는 메소드 인터페이스는 원래 추상메소드 100퍼센트다 하지만 default 를 붙여줌으로 내용을 추가할수있다. 등장배경 상황 : 한 오픈소스의 인터페이스가 많이 사용되고있다. 해당 인터페이스에 메소드를 추가하고싶어졌다. 인터페이스 특성상 메소드가 추가되면 이 인터페이스를 구현하고 있는 모든 클래스에서는 해당 메소드를 구현해주어야한다. -> 추가하지않으면 오류가 발생 해결 : 꼭 구현하지 않아도 되는 메소드를 넣자 - > default method 대신 디폴트 메소드는 추상이 아닌 무조건 내용이 있어야한다. 생각할점 그러면 abstract class와 무엇이 다른가? 여러 메소드들 중에 골라서 구현하는 것이 꼭 추상클래스같다.. 클래스와 결정적으로 ..
[java] abstract 추상화 abstract class를 쓰는 경우는 두가지다 1. new를 막으려고 ( = 객체 생성 방지) (e.g.) 도형이라는 클래스가 있다고 하고 하위에 삼각형, 사각형, 오각형이 있다. 삼각형, 사각형, 오각형 객체를 생성해서쓰는데 도형이라는 객체를 생성할 필요 없기때문에 abstract로 생성하지못하게 방지하는것이다. 2. abstract 메소드가 있어서 한 클래스에 abstract 메소드가 있으면 해당 클래스도 absract여야 한다!!! 이거는 idle에서 빨간 밑줄이 쳐지기 때문에 금방 알수있을 것이다. --> abstract 메소드가 있는 클래스를 상속받은 하위 클래스에서는 해당 메소드에 대한 구현이 있어야한다. (e.g.) 상위 클래스 도형에 추상메소드인 abstract lineNum(); 쓰니..