자바 리눅스에서 컴파일 및 실행하기.

출처 : http://blog.naver.com/PostView.nhn?blogId=k_builder&logNo=40185712256
세 가지로 나눠서 해보도록 합시다.
1. 현재 폴더 (javac 파일명, java 클래스파일명)
2. 다른 폴더 (javac -d 폴더명/ 파일명, java -cp ../폴더명/ 클래스파일명)
3. 다른 폴더 – 패키지 (javac -d 폴더명/ 파일명, java -cp ../폴더명/ 패키지명.클래스파일명)
 
 
1. 현재 폴더 (javac 파일명, java 클래스파일명)
터미널(윈도우 명령프롬프트)에서 디렉토리(저는 myProject로 만들어봤습니다.) 를 만들고 들어갑니다.
그리고 편집기에서 자바파일을 만들어 봅니다. 저는 hello.java로 했습니다.
 
간단하게 Hi~ Hello~~ 를 출력하는 자바파일입니다.
public class hello{
    public static void main(String[] args){
System.out.println(“Hi~ Hello~~”);
    }
}
 
이제 컴파일 명령어를 입력해서 컴파일을 하겠습니다.
javac hello.java
javac 와 작성한 자바파일을 확장자(hello.java)까지 다 써서 엔터를 쳐 줍니다. (javac는 자바 컴파일의 약자입니다. 아마.. ㅋㅋ)
그러면 현재 폴더에 컴파일된 결과인 클래스 파일이 보입니다.
 
이제 실행해 봅시다.
java hello
java 와 클래스파일을 입력하고 엔터!  주의할점 확장자는 뺍니다.
Hi~ Hello~~ 가 보이네요 ^^
참고로 확장자 까지 다 붙이면
요렇게 됩니다요..
두 번째로
2. 다른 폴더 (javac -d 폴더명/ 파일명, java -cp ../폴더명/ 클래스파일명)에서 컴파일 하고 실행 해 보겠습니다.
 
현재 폴더(myProject에서 src폴더와 classes 폴더를 만들고
java파일은 myProject/src폴더에 넣고
myProject/classes 폴더안에 컴파일 결과(.class)가 들어가도록 해보겠습니다.
그리고 일단 myProject/src 폴더로 들어가서 해 봅시다.
이제 다른폴더(myProject/classes)에 컴파일 결과를 집어넣어 봅시다.
방법은 -d(directory) 라는 컴파일 플래그를 사용합니다.
javac -d ../classes hello.java
src 폴더에서 컴파일한 결과가 ../classes (../는 상대경로입니다.)로 들어가게 합니다.
결국 -d 플래그는 컴파일된 코드를 저장할 디렉토리를 지정한것입니다.
 
이제 src 폴더에서 다른 폴더(classes)에 있는 클래스 파일을 실행해 보겠습니다.
여기서 등장하는 플래그는 -cp 또는 -classpath 입니다. (cp는 classpath의 약자입니다.)
java -cp ../classes hello
java -classpath ../classes hello
둘다 똑같이 실행됩니다.
 
마지막으로
3. 다른 폴더 – 패키지 (javac -d 폴더명/ 파일명, java -cp ../폴더명/ 패키지명.클래스파일명) 에서 해보겠습니다.
hello.java 파일에  새롭게 패키지를 입력해 봅니다.
 
package com.headfirstjava.ch17;
public class hello{
    public static void main(String[] args){
System.out.println(“Hi~ Hello~~”);
    }
}
아까와 같이 컴파일을 하면
javac -d ../classes hello.java

classes 폴더 아래로 com폴더 headfirstjava폴더 ch17폴더가 자동 생성되고 
자동 생성 된 com/headfirstjava/ch17 폴더에 클래스 파일이 생성됩니다.


 
myProject/src 폴더에서 실행해 보겠습니다. 여기서 중요한것은 패키지폴더가 생성됬다고
java -cp ../classes/com/headfirstjava/ch17 hello 이렇게 하면 안 됩니다.
 
클래스폴더를 입력하고 패키지명은 아래와 같이 점으로 찍어줘야 합니다.
java -cp ../classes/ com.headfirstjava.ch17.hello

실행 결과를 볼 수 있습니다.
 
 
Advertisements

삼항 연산자

조건부(삼항) 연산자(?:)

조건에 따라 두 식 중 하나를 반환합니다.

test ? expression1 : expression2
test
임의의 Boolean 식입니다.

expression1
test가 true이면 식이 반환됩니다.쉼표 식이 될 수 있습니다.

expression2
test가 false이면 식이 반환됩니다.둘 이상의 식이 쉼표 식으로 연결될 수 있습니다.

?: 연산자는 if…else 문의 단축형으로 사용할 수 있으며일반적으로 if…else 문을 사용하면 너무 복잡해지는 식에서 사용합니다.예를 들면 다음과 같습니다.

var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");

현재 시각이 오후 6시 이후이면 이 예제는 “Good evening.”이라는 문자열을 만듭니다. if…else 문을 사용하여 동일한 기능을 가진 코드를 작성하면 다음과 같습니다.

var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
   greeting += " evening.";
else
   greeting += " day.";

출처 : https://msdn.microsoft.com/ko-kr/library/be21c7hw(v=vs.94).aspx

동기화에 대해(Synchronized)

// 스레드는 같은 프로세스 내에서 동일한 데이터를 공유한다.
// 따라서 하나의 데이터에 대해서 동시에 여러개의 스레드가 접근이 가능하고
// 그에 따라 데이터의 일관성에 관한 문제가 생길 수 있다.
// 이 때 사용되는것이 동기화(synchronized)다. 동기화란 하나의 자원에 대해서
// 여러 스레드가 사용하려고 할 때 한 시점에서 하나의 스레드만 사용할 수 있도록 하는 것이다.

//즉 특정 시점에 특정 데이터에 하나의 스레드만 접근하도록 하는 것이다.

[Java] 간단하게 사용하는 랜덤 문자열 생성 (Generate random string)

간단하게 랜덤한 문자열을 생성해야 할때 사용할 수 있는 문자열 생성 함수입니다.

private static String getRandomString(int length)
{
  StringBuffer buffer = new StringBuffer();
  Random random = new Random();
 
  String chars[] = 
    “a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z”.split(“,”);
 
  for (int i=0 ; i<length ; i++)
  {
    buffer.append(chars[random.nextInt(chars.length)]);
  }
  return buffer.toString();
}
출처 : http://theeye.pe.kr/archives/1321

자바 String to int

Java에서의 형 변환은 빈번히 일어나는 일이다.
그래서 형 변환에 관해서는 필수적으로 알아야 한다.
그 중 가장 많이 일어나는 String->int, int->String에 대해서 살펴보자.
String을 int형으로 바꾸기 위해서는 java.lang팩키지의 Integer클래스에서 parseInt(String s)메소드를 알아야 한다.

  • public static int parseInt(String s) throws NumberFormatException
    • 매개변수로 String클래스의 인스턴스 s를 받아서 숫자로 변환이 가능하면 int형의 값을 반환한다.
    • 만약에 숫자로 변환이 가능하지 않으면 NumberFormatException이라는 RuntimeException을 던지는 메소드이다.

두번째는 int형을 String으로 바꾸는 과정이다. 이것은 java.lang팩키지의 String클래스에서 valueOf(int i)메소드를 알아야한다.

  • public static String valueOf(int i)
    • 매개변수 int형의 변수 i를 받아서 String형의 인스턴스를 반환한다.
    • Integer.toString()에 의해서 반환되는 값과 동일하다.

위의 두 메소드만 알면 String과 int형 사이에서의 형 변환은 쉽게 할 수 있다.

public class ParseExam {

public static void main(String[] args) {

String numStr = “54”;

// String값을 int형의 값으로 바꾸는 방법
int numInt = Integer.parseInt(numStr);
System.out.println(numInt);

// int형의 값을 String으로 바꾸는 방법
String numStr2 = String.valueOf(numInt);
System.out.println(numStr2);
}

}

출처 : http://egloos.zum.com/penta82/v/4099027