본문 바로가기

JAVA8

자바FX 권유하지 않습니다.. 자바FX를 이용해 UI를 만들고 브라우저에서 작업하는 내용 자동화 하는 프로그램을 만들어보았다. 전 글에 정리했든 exe로 만드는 과정이 상당히 자료가 부정확하고 적어 시간이 많이 소요됐다. 그리고 다른 pc에서 작동시켜보았는데 1. 빌드환경이 달라서 실행이 안됨 2. 해당 pc에서 자바 설치 했으나 동일하게 실행한됨. 3. exe로 만든 jar( javaFX )가 실행시키는 별도의 jar 프로그램은 설치한 자바 이용해서 가능 4. javaFX를 exe로 만든걸 그냥 jar로 자바이용해서 실행은 됨. 5. 찾아보니 해당 pc에서 빌드하라함 6. 그냥 자바 소스 다 폴더에 넣어버리고 배치프로그램으로 명령어 심어서 실행시키는 걸로 변경 결론. 자바는 운영체제 무관하게 동일한 환경에서 구동을 목표로 만들어졌지.. 2023. 12. 8.
javaFX, java, jar 를 exe로 만들기 관련 예문들을 적어놓으니 필요한 사람은 참고하시기 바란다. 여기저기 정보들은 많았으나 틀린 내용이나 부족한 내용이 많았다. 파편화 된 글들이 많아 고생하다 정리해놓는다. 개념적인 부분은 다른데에 정보가 많으니 참고바란다. C:\javafx-sdk-21.0.1 java --module-path C:\javafx-sdk-21.0.1\lib --add-modules javafx.controls,javafx.fxml -jar write_dc-1.0.jar javaFX 실행시 javafx-sdk를 모듈로 사용해야하기때문에 이렇게 실행 jpackage --input C:\Users\kucne\Desktop\outer\Result\new\newnew --name write_dc --main-jar write_dc-1.0... 2023. 12. 7.
call by Value, call by reference. 근데 자바는 call by value만 쓴다고? 맞다. 이는 공부하면서 구현 및 설명을 달아놓은 코드이다 주석 및 코드를 보면 이해가 될 것이라 믿는다. package test; public class CbvCbr2 { /** * @param args */ public static void main(String[] args) { Person mh = new Person("강아지",33,"Galaxy",22); Person cl = new Person("고양이",27,"IPhone",20); System.out.println(mh); changePerson(mh,cl); System.out.println("changePerson() : "+mh); changeAge(mh,cl.getAge()); System.out.println("changeAge() .. 2022. 12. 27.
변수, 기본형, 참조형 선언 with 메모리 변수타입 : 기본형, 참조형 선언방식 : 기본형 : 타입 변수명; 혹은 초기화를 같이 해주며 선언. ( 리터럴 방식 ) 참조형 : new로 선언. ( 생성자 방식 ) 추가 : String은 참조형 타입이지만 기본형처럼 사용할 수 있는 특수한 클래스. 기본 개요. : 기본형은 값을 갖는 타입. ( 메모리영역 stack에 해당 ) 선언시 기본값이 있기에 값으로 null을 가질 수 없음. ( wrapper 클래스로 객체처럼 사용하여 null을 줄 수 있음 ) : 참조형은 주소를 갖는 타입. ( 메모리영역 heap에 해당 ) null을 가질 수 있음. : String은 방식에 따라 기본형처럼도 참조형처럼도 사용할 수 있다. 리터럴 방식으로 선언해 기본형처럼 사용할 수도 ( 메모리영역의 method영역의 Stri.. 2022. 12. 26.
==연산자와 .equals() 그리고 hashCode 우선 먼저 == : 내가 선택한 두 객체가 같은지 비교할때 사용하는 방법들이다. : 값 타입들을 비교할때 사용한다면, 숫자값은 int, long, double등과 관계없이 ( 1과 1.0 이라 하더라도 ) 우리가 인지하는 것과 같이 같은지 알 수 있다. 하지만 String의 경우로 보면 인지하는 것과 같이 다름을 알 수 있다. 이는, == 연산자는 주소값을 비교하는 연산자이기 때문이다. String 타입의 경우 주소가 아닌 값을 비교하기 위해서는 .equals() 메소드를 활용해야 한다. : == 연산자에 추가적으로 확인해 볼 점은 static을 붙여 메모리에 클래스와 같은 시점에 올라가는 경우 참조하는 주소값이 다르기 때문에 값이 같더라도 == 연산자에 대해 false가 출력된다는 이야기가 있었으나 실.. 2022. 1. 27.
정렬 알고리즘(2) - 기본적인 정렬 알고리즘 몇가지 정렬 알고리즘을 더 찾아보았다 같이 탐색해보자 public class Selection { static int[] input = { 5, 6, 2, 8, 7, 23, 4, 1 }; public static void main(String[] args) { selectionSortMin(input, input.length); for (int a : input) { System.out.print(a + " "); } going(input, input.length); for (int a : input) { System.out.print(a + " "); } } static void selectionSortMin(int[] input, int length) { int min; int tmp; for (in.. 2021. 4. 16.
정렬 알고리즘 - 오름차순 숫자를 다루다보면 원하는대로 정렬을 하고 싶은 마음이 생긴다. int[] arr = new int[5]; for (int i = 0; i 2->3->4->5 를 떠올리면 된다. ​ 오름차순으로 상기의 코드를 오름차순으로 정렬해보자. for (int i = 0; i < arr.length; i++) { for (int j = 0; j < i; j++) { if(arr[i] 2021. 4. 14.
new 연산자와 반복문 자바 공부중 new 연산자와 반복문의 활용에 관련해서 기술하고자 한다. ​ 우선 간단히 이론적인 부분을 적으면 new 연산자는 새로 heap영역에 주소를 할당하여 객체가 생성되는 것이다. ​ 코드 작성 중 체감하는 기믹으로 반복문과의 조합에 있어 생각해볼 점이 있는 것 같아. 다뤄보려고 한다. ArrayList arr01 = new ArrayList(); ArrayList arr02 = new ArrayList(); String[] rs; try { BufferedReader br = new BufferedReader(new FileReader(file)); while (true) { String line; line = br.readLine(); if (line == null) { break; } rs .. 2021. 4. 14.