본문 바로가기

Language, IDE

(48)
[JAVA 자바] 랜덤함수(Random) - 난수 발생기 자바에서 Random 클래스는 난수 발생 기능을 제공한다. 생성자Random() 현재시간을 초깃값으로 하는 난수 발생기 생성Random(long seed) seed값을 초깃값으로 하는 난수 발생기 생성 주요 함수nextFloat() float형의 난수 리턴nextInt() int형의 난수 리턴nextLong() long형의 난수 리턴nextDouble() double형의 난수 리턴nextGaussian() 평균 0, 표준편차 1인 Gaussian형의 난수를 double형으로 리턴setSeed(long newseed) seed값을 newseed값으로 초기화nextInt(int n) n미만의 int형 난수 리턴 예제소스import java.util.Random; public class JavaTestMain..
[JAVA 자바] synchronized - 스레드 동기화 자바 프로그래밍을 할 때 멀티 스레딩을 하면 각각의 스레드는 독립적으로 동작한다. 하지만 실제 프로그래밍을 할 때에는 스레드들이 연관 관계를 가지면서 작동해야하는 경우가 많다. 예를들어 스레드들이 현재 접속중인 유저수를 공유해야 하는 경우나 은행에서 예금이나 출금을 하는 경우가 있다. 운영체제에서 배웟듯이 이런 변수들은 동시에 접근하게 되면 문제가 발생하게 된다. 예를들어 3개의 스레드가 동시에 예금을 500원식하면 1500원이 되어야 하는데 모두 0원을 가져와 500을 더해서 저장을하면 500원이 저장되게 된다. 이런 문제를 해결하기 위해서는 동기화를 하여야 한다. 자바에서는 스레드를 동기화 하기 위해서 synchronized를 제공한다. 스레드는 synchronized 메소드에 들어가기 위해 lock..
[JAVA 자바] instanceof - 객체(클래스)의 타입판별 자바에서는 객체가 어떤 클래스나 인터페이스로부터 생성되었는지를 판별해주는 instanceof를 제공한다. 객체명 instanceof 타입(클래스명or인터페이스명) 객체가 해당 타입이면 true를 아니면 false를 리턴한다. 타입에 상위 클래스 객체명에 하위 클래스의 객체일 경우에도 true를 리턴한다. ※ 참고 타입이 상위클래스도 하위클래스도 아닐경우 에러가 난다. 타입은 해당 객체의 클래스의 상위 클래스 혹은 하위클래스여야 한다. 예제소스 class C1 { public C1() {} } class C2 extends C1{ public C2() {} } class C3 extends C2 { public C3() {} } public class JavaTest { public static void ..
[JAVA 자바] super 자바에서 super는 상위 클래스의 생성자를 호출할 때 사용하거나 상위 클래스의 멤버 변수나 메소드에 접근할 때 사용한다. super로 멤버 변수나 메소드를 호출하기 위해서는 해당 변수나 메소드의 제한자는 protected, public이어야 한다. 예약어 super 상위 클래스의 생성자 호출 super(매개변수) 상위 클래스의 멤버 변수 호출 super.변수명 상위 클래스의 메소드 호출 super.메소드명(매개변수) 예제소스 JavaTest.java class Mother { protected String name; public Mother(String name) { this.name = name; } public void display() { System.out.println("name : " + n..
[JAVA 자바] 매개변수 매개변수 전달방식에는 call-by-value방식과 call-by-reference방식이 있다. call-by-value는 매개변수를 전달할 때 값을 복사하여 넘겨주는 방식이고 call-by-reference는 매개변수를 전달할 때 값이 아닌 해당 변수의 주소값을 넘겨주는 방식이다. 보통 int나 double같은 일반적인 변수타입은 call-by-value방식을 사용하고 배열이나 클래스같은 메모리를 많이 차지하는 타입은 call-by-reference를 사용한다. C++나 다른 언어에서는 매개변수 방식을 프로그래머가 선택하여 사용한다. 하지만 자바에서는 컴파일러가 자동으로 매개변수 방식을 지정하여 준다. 즉 프로그래머는 일반적인 call-by-value이냐 call-by-reference이냐를 고민할 필..
[C++] StringTokenizer JAVA에서는 String을 Token별로 끊어주는 StringTokenizer클래스가 제공되지만 C++에서는 그러한 클래스가 제공되지 않는다. 그래서 StringTokenizer를 사용하려면 직접 구현하여 사용하여야 한다. 아래의 두 파일을 받아 프로젝트폴더에 넣고 #include "StringTokenizer.h"를 하여 자바에서 StringTokenizer를 사용하듯이 사용하면 됩니다. 사용가능 함수 및 생성자StringTokenizer(string str) StringTokenizer(string str,string delim) StringTokenizer(string str, string delim, bool returnDelims) hasMoreTokens() countTokens() next..
[JAVA 자바] StringTokenizer 자바에서는 String을 token단위로 끊어주는 StringTokenizer 클래스를 제공한다.예를들어 "this is my string" 이라는 스트링을 this, is, my, string 4개의 스트링으로 끊어주는 기능을 제공한다.그리고 공백말고도 다른 구획문자(delimiter)를 사용할수도 있다. 예를들어 this%is%my%string을 delimiter에 %를 넣어 StringTokenizer를 사용하면 마찬가지로 this, is, my, string으로 읽어준다.this$%^is$my%string^일때 구획문자를 "$%^"라고 설정해주면 this, is, my, string 으로 끊어준다. 생성자StringTokenizer(String str) 구획문자(delimiter)를 인자로 받지않..
[JAVA 자바] Thread(쓰레드, 스레드) 자바에서 쓰레드(Thread)를 사용하는 방법은 2가지가 있다. 1. Thread를 직접상속 받아 사용하는 방법.2. Runnable 인터페이스를 구현하는 방법. 두 가지 모두 알아보겠지만 자바에서는 다중 상속이 불가능하기 때문에 1번 방법을 사용하면 다른 클래스를 상속받을 수 없다.따라서 왠만하면 2번 방법을 추천한다. 1. Thread를 직접상속 받아 사용하는 방법.쓰레드public class MyExtendThread extends Thread { public void run() { //구현 System.out.println("Thread1"); } } 메인public class JavaTestMain { public static void main(String[] args) { Thread t = ..