티스토리 뷰
if(s.equalsIgnoreCase("test"))
// 대소문자 무시
equals는 대소문자 구분.
equalsIgnoreCase는 대소문자 구분안함.
null 객체로 .toString()을 하면 에러가 남
if(name.equals(""))
String 값 비교 equals 사용
boolean b = Boolean.valueOf(yourObject.toString())
// object to boolean
thresholdObj.setSendClearStatus(thSendClr.equalsIgnoreCase("true"));
// string 비교후 boolean 리턴
String success = (String)status.get("success");
if(!success.equals(""))
message = "success";
else
message = "failure";
// get한 값이 null일때 타지를 못함.
int 초기값 0. null 아님.
if((String)status.get("success") != null)
success = (String)status.get("success");
// null 체크 후에 get
Character.toString((char)i);
// int to ascii
java에서 리눅스의 특정명령어 실행할때 Runtime.exec() 을 이용할때 파이프(|)를 사용이 안됨. shell 실행 후 다른 프로세스로 grep을 하기 때문.
String[] cmd = {"/bin/sh", "-c", "ls /etc | grep test" };
Process p = Runtime.getRuntime().exec(cmd);
// java에서 Runtime.exec() 실행시 grep 사용
자바 파일명 클래스명 일치해야 함. 클래스명 대소문자 구분해야 함.
class nameTest {
public static void main(String args[]) {
System.out.println("dd");
}
}
javac nameTest.java
java nameTest
String s[] = new String[arr.length];
// 길이만큼 할당
String s[] = {}
s[0] = "A";
// 길이 할당이 안되었으므로 캐스팅 불가
ArrayList<String> a = new ArrayList<>();
for(int i=0;i<arr1.length;i++)
{
for(int j=0;j<arr2.length;j++)
{
if(arr1[i].equals(arr2[j]))
a.add(arr1[i]);
}
}
// 길이만큼 할당해서 사용하려면 ArrayList를 사용
Properties-Java Build Path는 .classpath 파일에 저장 됨.
similarity = (float)a.size()/b.size();
// float a = 2/3f처럼 f붙이지 않고, 캐스팅해서 사용.
String s = "+";
if(s == "+")
System.out.println("ok");
// 문자 비교는 ==, equals 둘다 가능
String s = "+a";
if(s.substring(0, 1) == "+")
System.out.println("ok "+t.substring(0, 1));
// 한문자는 substring ==비교 인식하지만, 두글자부터는 되지 않음. 무조건 equals 사용.
String s = "test"
s.substring(0, 1) // t
s.substring(1, 3) // es
s.substring(3, 4) // t
// substring index는 0부터지만, 자르는건 +1이 한글자 단위. 마지막 문자는 index+1
HashMap ArrayList 사용
HashMap<String, ArrayList> listMap = new HashMap<String, ArrayList>();
listMap.put("list", new ArrayList());
ArrayList list = listMap.get("list");
String A = (String)list.get(0);
java.lang.NullPointerException
NullPointerException이 생기는 이유는, 어떤 변수나 객체의 값이 없거나, 생성되지 않았는데, 그것을 이용하려고 할 때 발생. 코드상의 문제가 아니기 때문에 컴파일시에는 에러가 발생되지 않고, 런타임시 에러. request로 값을 받는다면 값들이 제대로 넘어오는지, 변수를 사용해서 메소드를 호출 한다면 해당 변수에 값이 제대로 들어있는지 확인.
int nums[] = {1, 2, 3, 4, 5, 6};
Collections.shuffle(Arrays.asList(nums));
// Collections 배열 랜덤.
List<Obj> list = new ArrayList<Obj>();
// list.add 반복
Collections.shuffle(list);
// Array가 아닌, List Interface를 상속받는 Collection을 섞을 경우, 변수 그대로 인자로 넘김.
java 라이브러리 jar 추가
project->properties->java build path->add jars or add external jars
// 옵션에서 추가
WebContents/WEB-INF/lib
// 직접추가
jar 파일 실행
java -jar google-sites-liberation-1.0.4.jar
org.apache.commons.io
copyURLToFile(); // wget 기능
public final static AtomicLong along = new AtomicLong();
public static long nomlong= 0;
public static void main(String[] args) {
for(int i=0; i<1000; i++)
new Thread(){
public void run(){
along.incrementAndGet();
}
}.start();
for(int i=0; i<1000; i++)
new Thread(){
public void run(){
++nomlong;
}
}.start();
try { Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace(); }
System.out.println("no atomic : "+nomlong);
System.out.println("atomic : "+along.get());
}
// atomic 사용시 쓰레드 비동기로 실행. atomic get set도 비동기.
HttpClient은 deprecated. HttpsURLConnection 사용.
java implments는 c++의 virtual처럼 골격을 붙여나가는 형식의 개념이 아니라 캡슐화개념. impl에서 구현.
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
String str = "{\"user_id\":\"test2\"}";
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(str);
String code = (String) json.get("user_id");
// JSONParser.
String params = "param="+param;
PrintWriter printWriter = new PrintWriter(con.getOutputStream());
printWriter.print(param);
printWriter.close();
String json = "{"+"\"userId\": \"test\""+ "}";
con.getOutputStream().write(json.getBytes());
// PrintWriter 방법, 그냥 write 방법.
JAVA SimpleDateFormat
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.KOREA);
Date currentTime = new Date();
String time = formatter.format(currentTime);
System.out.println(time);
// 표준 Date 포맷
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss", Locale.KOREA);
Date currentTime = new Date();
String merchantOrderNo = formatter.format(currentTime);
System.out.println(merchantOrderNo);
// Date를 주문번호로 사용
public boolean isSuccess() {
return success;
}
// boolean은 get대신 is 사용
Java bash
JAVA_HOME=/usr/java/jdk1.8.0_112
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
// PATH=$PATH:$JAVA_HOME/bin은 안됨. PATH에 값을 지정해주고나서 사용가능한 듯.
javac Test.java // 자바 파일(*.java) 컴파일. . 클래스 파일(*.class) 생성.
java Test // 클래스 파일 실행.
java -d64 -version
// 64비트 인지 확인
'Study' 카테고리의 다른 글
Glassfish(글래스피시) load balancing(로드 밸런싱) (0) | 2022.12.30 |
---|---|
XML(eXtensible Markup Language, 엑스엠엘) 관련 (0) | 2022.12.30 |
Java(자바) Terms(용어) 관련 (0) | 2022.12.29 |
Java(자바) Error(에러) 관련 (0) | 2022.12.29 |
Oracle Cloud(오라클 클라우드) 관련 (0) | 2022.12.28 |