320x100

[java] 자료형, x진수 표현법

Posted on 2021. 9. 18. 16:56
Filed Under Programming/Java

▼기본 자료형(primitive data type)

자료형의 표현범위는 [2의 N승 - 1] (부호 표현용 1비트 제외)

java - 기본 자료형(primitive data type)

 


public static void main(String[] args) {
	//▼정수(decimal)
	int num = 10;		// 10진수
	int bNum = 0B1010;	// 2진수(binary): 0B+XXXX (32비트중 앞자리는 자동0)
	int oNum = 012;		// 8진수: 0+XXXX
	int xNum = 0XA;		// 16진수: 0x+XXX        
	long lNum = 12345678900L; //뒤에 L(또는 l)을 붙여서 리터럴(literal)을 8바이트/long으로 지정
	
	//▼실수(real number) 
	// - 소수점 표현 방식에는 부동 소수점 방식(Floating-Point Number Representation, IEEE 754)
	//   과 고정 소수점 방식(Fixed-Point Number Representation)이 있음. java는 부동 소수점 방식.
	double dNum = 3.141592;	//실수 리터럴은 기본형이 double
	float fNum = 3.141592F;	//뒤에 F(또는 f)를 붙여서 리터럴을 4바이트/float형으로 지정
	
	System.out.println(num);
	System.out.println(bNum);
	System.out.println(oNum);
	System.out.println(xNum);
	System.out.println(lNum);
	System.out.println(dNum);        
	System.out.println(fNum);
}
---------------
Output:
10
10
10
10
12345678900
3.141592
3.141592

 


// 자바의 부동 소수점 오차 예시
// - 소수점 표현 방식에는 부동 소수점 방식(Floating-Point Number Representation, IEEE 754)
//   과 고정 소수점 방식(Fixed-Point Number Representation)이 있음. java는 부동 소수점 방식.
public void fixedPointDoubleError() {
	double dnum = 1;

	for(int i = 0; i<10000; i++) {
		dnum = dnum + 0.1;
	}
	System.out.println(dnum);
}
---------------
Output:
1001.000000000159

▼자바의 문자형

- 표현은 전세계 공통인 UNICODE, 인코딩 방식은 UTF-16 (2바이트)

반응형

[java] HttpURLConnection - GET/POST

Posted on 2021. 8. 6. 13:23
Filed Under Programming/Java


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.codehaus.jettison.json.JSONObject;

//▼HTTP Reqeust GET/POST 샘플 코드
private String charsetName = "UTF-8";

//	Open API 호출 테스트 샘플
public String testGET() throws Exception 
{
	//JSONObject obj = new JSONObject();
	String baseUrl = "http://data.ex.co.kr/openapi/restinfo/restWeatherList?key=0759277880&type=json&sdate=20210507&stdHour=12";	
	String resultJSON = "{}";
	try {
		URL url = new URL(baseUrl);
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		conn.setDoOutput(true);
		conn.setRequestMethod("GET");
		conn.setRequestProperty("Content-type", "text/html; charset="+charsetName);
        
//		conn.setRequestProperty("Authorization", "Basic 암호화한인증키");
//		conn.setRequestProperty("Accept","*/*");
//		conn.setRequestProperty("Accept-Language","ko");
//		conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
//		conn.setRequestProperty("User-Agent","Mozilla/4.0");
//		conn.setRequestProperty("Host", "서버IP:포트");
//		conn.setRequestProperty("Connection","Keep-Alive");
//		conn.setRequestProperty("Cookie", "바사삭~쿠키");
//		
//		conn.setDoOutput(true);
//		conn.setDoInput(true);
//		conn.setUseCaches(true);        
		
		//conn.setDoInput(true); 
		System.out.println(((HttpURLConnection)conn).getRequestMethod());

//			OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream(), "utf-8");
//			osw.flush();	
		
		int httpResponseCode = conn.getResponseCode();
		BufferedReader rd;
		if(httpResponseCode >= HttpURLConnection.HTTP_OK && httpResponseCode &lt;= HttpURLConnection.HTTP_MULT_CHOICE) {
			rd = new BufferedReader(new InputStreamReader(conn.getInputStream(), charsetName));
		} else {
			rd = new BufferedReader(new InputStreamReader(conn.getErrorStream(), charsetName));
		}
		StringBuilder sb = new StringBuilder();
		String line;
		while ((line = rd.readLine()) != null) {
			sb.append(line);
		}
		rd.close();
		conn.disconnect();
		
		resultJSON = sb.toString();
	} catch (IOException e) {
		e.printStackTrace();
	}
	
	return resultJSON;
}		

public String testPOST() throws Exception
{
	String baseUrl = "http://my-json-server.typicode.com/smallwitch/apitest/posts";	
	String result = "{}";
	JSONObject jsonObj = new JSONObject();
	try {
		URL url = new URL(baseUrl);
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		conn.setDoOutput(true);
		conn.setRequestMethod("POST");
		conn.setRequestProperty("Content-type", "application/json");
		
		OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream(), charsetName);
		jsonObj.put("id", 100);
		Date date = new Date();
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
		jsonObj.put("title", dateFormat.format(date));
		System.out.println("input: "+jsonObj.toString());
		
		osw.write(jsonObj.toString());
		osw.flush();
		
		int httpResponseCode = conn.getResponseCode();
		BufferedReader rd;
		if(httpResponseCode >= HttpURLConnection.HTTP_OK && httpResponseCode &lt;= HttpURLConnection.HTTP_MULT_CHOICE) {
			rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
		} else {
			rd = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
		}
		StringBuilder sb = new StringBuilder();
		String line;
		while ((line = rd.readLine()) != null) {
			sb.append(line);
		}
		rd.close();
		conn.disconnect();
		
		result = sb.toString();
	} catch (IOException e) {
		e.printStackTrace();
	}
	
	return result;
}

반응형

jackson - ObjectMapper 정리 [계속..]

Posted on 2021. 7. 23. 10:44
Filed Under Programming/Java

배경: jackson 1.9 이하 버전에서 필요해짐.

출처: 직렬화&역직렬화


public class Coordinates {
    byte red;

    @JsonProperty("r")
    public byte getR() {
      return red;
    }

    @JsonProperty("red")
    public void setRed(byte red) {
      this.red = red;
    }
}
///////
Coordinates obj = new Coordinates();
obj.setRed((byte) 5);

ObjectMapper mapper = new ObjectMapper();
System.out.println("Serialization: " + mapper.writeValueAsString(obj));

Coordinates r = mapper.readValue("{\"red\":25}",Coordinates.class);
System.out.println("Deserialization: " + r.getR());

///////결과:
Serialization: {"r":5}
Deserialization: 25


public static Map<String, Object> objectToMap(Object obj) {
	ObjectMapper objectMapper = new ObjectMapper();
//	objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
//	objectMapper.configure(Feature.AUTO_DETECT_FIELDS, true);
	
    // value=null일때 처리
	objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
		@Override
		public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
			jgen.writeString("");
		}
	});
	
    // key=null일때 처리
	objectMapper.getSerializerProvider().setNullKeySerializer(new JsonSerializer<Object>() {
		  @Override
		  public void serialize(Object value, JsonGenerator jgen, SerializerProvider serializers) throws IOException, JsonProcessingException {
			  jgen.writeFieldName("null");
		  }
	});
	
	@SuppressWarnings("unchecked")
	Map<String, Object> map = objectMapper.convertValue(obj, Map.class);
	return map;
}


 

반응형

[Java] 클래스 속성명으로 객체 속성값 설정하기

Posted on 2021. 7. 19. 13:34
Filed Under Programming/Java


Customer classObj = new Customer();
System.out.println("[Before] classObj.contractId2 = "+classObj.getContractId2());
Field field;
try {
	field = classObj.getClass().getDeclaredField("contractId2");
	field.setAccessible(true);
	field.set(classObj, "설정값");
} catch (Exception e) {
	e.printStackTrace();
	
}
System.out.println("[After] classObj.contractId2 = "+classObj.getContractId2());
반응형

API요청&응답 받아오기 - HttpURLConnection 사용법

Posted on 2021. 6. 9. 15:42
Filed Under Programming/Java

 


// HttpURLConnection 객체 생성.
HttpURLConnection conn = null;
 
// URL 연결 (웹페이지 URL 연결.)
conn = (HttpURLConnection)url.openConnection();
 
// TimeOut 시간 (서버 접속시 연결 시간)
conn.setConnectTimeout(CONN_TIMEOUT * 1000);
 
// TimeOut 시간 (Read시 연결 시간)
conn.setReadTimeout(READ_TIMEOUT * 1000);
 
// 요청 방식 선택 (GET, POST)
conn.setRequestMethod(GET);
 
// Request Header값 셋팅 setRequestProperty(String key, String value)
conn.setRequestProperty("NAME", "name"); 
conn.setRequestProperty("MDN", "mdn");
conn.setRequestProperty("APPID", "appid");
 
// 서버 Response Data를 xml 형식의 타입으로 요청.
conn.setRequestProperty("Accept", "application/xml");
 
// 서버 Response Data를 JSON 형식의 타입으로 요청.
conn.setRequestProperty("Accept", "application/json");
 
// 타입설정(text/html) 형식으로 전송 (Request Body 전달시 text/html로 서버에 전달.)
conn.setRequestProperty("Content-Type", "text/html");
 
// 타입설정(text/html) 형식으로 전송 (Request Body 전달시 application/xml로 서버에 전달.)
conn.setRequestProperty("Content-Type", "application/xml");
 
// 타입설정(application/json) 형식으로 전송 (Request Body 전달시 application/json로 서버에 전달.)
conn.setRequestProperty("Content-Type", "application/json");
 
// 컨트롤 캐쉬 설정
conn.setRequestProperty("Cache-Control","no-cache");
 
// 타입길이 설정(Request Body 전달시 Data Type의 길이를 정함.)
conn.setRequestProperty("Content-Length", "length")
 
// User-Agent 값 설정
conn.setRequestProperty("User-Agent", "test"); 
 
// OutputStream으로 POST 데이터를 넘겨주겠다는 옵션.
conn.setDoOutput(true);
 
// InputStream으로 서버로 부터 응답을 받겠다는 옵션.
conn.setDoInput(true);
 
// Request Body에 Data를 담기위해 OutputStream 객체를 생성.
OutputStream os = conn.getOutputStream();
 
// Request Body에 Data 셋팅.
os.write(body.getBytes("euc-kr"));
 
// Request Body에 Data 입력.
os.flush();
 
// OutputStream 종료.
os.close();
 
// 실제 서버로 Request 요청 하는 부분. (응답 코드를 받는다. 200 성공, 나머지 에러)
int responseCode = conn.getResponseCode();
 
// 접속해지
conn.disconnect();

출처: [이용범의 잡다한 개발이야기]

 

반응형

파일읽어서 String 얻기(File,InputStreamReader,BufferedReader)

Posted on 2020. 11. 25. 18:02
Filed Under Programming/Java


//파일읽어서 String 얻기
public String getZoneFileToString(String filePath)
{
	if (filePath == null || "".equals(filePath)) {
		System.out.println("파일경로 입력바람 오바!!");
//		throw new AssertionError();
		return null;
	}

	StringBuffer strBuffer = new StringBuffer();
	InputStreamReader inputStReader = null;
	BufferedReader reader = null;
	String line = null;
		
	File file = new File(filePath);
	if(!file.exists()){
		System.out.println("해당 파일경로의 파일이 없음!!");
		return null;
	}
	try {
		
		inputStReader = new InputStreamReader(new FileInputStream(file), "euc-kr");
		reader = new BufferedReader(inputStReader);
		
		while (true) {
			line = reader.readLine();
			if (line == null) {
				break;
			}
			strBuffer.append(line);
			strBuffer.append("\n");
		}
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (reader != null) reader.close();
			if (inputStReader != null) inputStReader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	return strBuffer.toString();
}

반응형

About

by 쑤기c

반응형