본문 바로가기

728x90

Programing/Java

(15)
[Java] static과 non-static && 접근 제어 [Java] static과 non-static && 접근 제어 자바에서 Program이란 class들의 집합이다. static 멤버는 class 멤버이고, non-static멤버는 object 멤버이다. 1) 왜 main method는 반드시 static이어야 하는가?-> class는 object를 찍어내기 위한 설계도의 용도로써 허상의 개념이기 때문에 프로그램의 시작을 알려줄 main method는 반드시 static이어야만 한다. 2) 왜 static 메서드에서 같은 class의 non-static 멤버를 access할 수 없는가?-> non-static 멤버는 object 멤버이므로 class가 실행되지 않았을때, 허상이다.따라서, static method와 같은 class에 있더라도 non-sta..
[Java] String 클래스 기본 메서드 [Java] String 클래스 기본 메서드 When? returnType / 사용방법 예시 문자열 동일성 검사 boolean / equals( String ) boolean equals = str1.equals(str2); 문자열 사전식 순서 int / compareTo( String ) int result = str1.compareTo(str2); 문자열 길이 int / length( ) int length = str.length(); 특정 위치의 문자 char / charAt( int ) char ch = str.charAt(2); 지정한 문자의 위치 검색 int / indexOf( char ) int index = str.indexOf("d"); 지정된 범위의 부분 문자열 String / subs..
[Java] 값에 의한 호출 [Java] 값에 의한 호출 아래는 BubbleSort를 구현하는 코드이다. 다만, 결과를 출력해보면 입력값과 똑같은 결과를 얻게 된다. 이유가 무엇일까? bubbleSort메서드 내에서 arr[j]와 arr[j+1]의 값을 변경하기 위해서 swap이라는 함수를 호출했을때, data[j]와 data[j+1]의 값은 각각 a와 b에 복사된다. 즉, data[j]와 a는 완전히 별개의 변수이다. 따라서, a와 b의 값을 변경하여도 data[j]와 data[j+1]의 값에는 변화가 없다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan=new Scanner(System.in); i..
[Java] Tree 구현 [Java] Tree 구현 두개의 class로 구성 Node.java: Node를 구성하는 변수와 생성자, 필요한 메서드로 구성된 java 파일 Test.java: Node를 실제로 생성하고 각 노드 사이의 관계를 연결하는 Main 메서드를 포함한 java 파일 Node.java package tree; import java.util.ArrayList; import java.util.List; public class Node { private Node parent; private ArrayList childList; private int depth; private boolean isIfRoot; private boolean isIfleaf; private Object data; public Node(Ob..
[Java] Bubble sort (버블정렬) [Java] Bubble sort (버블정렬) Bubble Sort(버블 정렬): 이웃한 두 요소의 대소 관계를 비교하여 교환을 반복 시간복잡도: O(n^2) Best Avg Worst O(n^2) O(n^2) O(n^2) 코드 import java.util.*; class Main { public static void main(String[] args) { Scanner scan=new Scanner(System.in); int n=scan.nextInt(); int[] arr=new int[n]; for(int i=0;i0;i--){ for(int j=0;jarr[j+1]){ int tmp=arr[j+1]; arr[j+1]=arr[j]; arr[j]=tmp; } } } System.out.printf..
[Java] 연속된 정수들의 최대값 구하기 [Java] 연속된 정수들의 최대값 구하기 문제: n개의 정수를 입력받아 배열에 저장한다. 이들 중에서 0개 이상의 연속된 정수들을 더하여 얻을 수 있는 최대값을 구히여 출력하는 프로그램을 작성하라. 코드 import java.util.*; class Main { public static void main(String[] args) { Scanner scan=new Scanner(System.in); int n=scan.nextInt(); int[] arr=new int[n]; for(int i=0;i
[Java] 소수 출력하기 [Java] 소수 출력하기 문제: 1부터 100000 사이의 숫자 중, 소수만 출력해라. 코드 public class Main { public static void main(String[] args) { //main method for(int n=2;n 루트 n까지만 검사. // n의 약수 중 루트 n보다 큰 두개의 약수가 존재할 수 없기때문 boolean isPrime=true; for(int i=0;i*i 소수를 알아보기 위한 검색 범위: root(n)까지 검색하면 된다. -> n의 약수 중에서 루트(n)보다 큰 두개의 약수가 존재한다고 가정 시, 두 개의 곱은 n을 넘게 됨으로 for문은 i제곱이 n을 넘지않을때까지 반복되면 된다.

728x90
반응형