import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest1{
private Pattern pattern;
private Matcher matcher;
public RegexTest1(String pattern){
this.pattern = Pattern.compile(pattern);
}
public boolean validate(String text){
matcher = pattern.matcher(text);
return matcher.matches();
}
public static void main(String [] args){
String passwordPattern = "((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})";
String emailPattern = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
String ipaddressPattern = "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
+ "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";
RegexTest1 password = new RegexTest1(passwordPattern);
RegexTest1 email = new RegexTest1(emailPattern);
RegexTest1 ipaddress = new RegexTest1(ipaddressPattern);
String text1 = "aaSS12!@";
String text2 = "ASsdv221@nate.com";
String text3 = "127.1.1.1";
System.out.println(password.validate(text1) + "\t" + text1);
System.out.println(email.validate(text2) + "\t" + text2);
System.out.println(ipaddress.validate(text3) + "\t" + text3);
text1 = "aaS!@";
text2 = "ASsdv221@natecom";
text3 = "0127.1.1.1";
System.out.println(password.validate(text1) + "\t" + text1);
System.out.println(email.validate(text2) + "\t" + text2);
System.out.println(ipaddress.validate(text3) + "\t" + text3);
}
}
Post List
2019년 1월 24일 목요일
자바 정규식(비밀번호, 이메일, 아이피주소)
자바 geotools 15.1 좌표간 거리계산
import org.geotools.geometry.jts.JTS;
import org.geotools.referencing.CRS;
import org.geotools.referencing.GeodeticCalculator;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import com.vividsolutions.jts.geom.Coordinate;
public class GeoDistanceTest {
private CoordinateReferenceSystem sourceCRS;
private String sourceX;
private String sourceY;
public GeoDistanceTest(String sourceCRS, String sourceX, String sourceY) throws Exception {
this.sourceCRS = CRS.decode(sourceCRS);
this.sourceX = sourceX;
this.sourceY = sourceY;
}
public void distanceCalculator(String x, String y) throws Exception {
GeodeticCalculator gc = new GeodeticCalculator(sourceCRS);
gc.setStartingPosition(JTS.toDirectPosition(new Coordinate(Double.parseDouble(sourceX), Double.parseDouble(sourceY)),sourceCRS));
gc.setDestinationPosition(JTS.toDirectPosition(new Coordinate(Double.parseDouble(x), Double.parseDouble(y)),sourceCRS));
double distance = gc.getOrthodromicDistance();
System.out.println("distance (m) : "+ distance);
}
public static void main(String[] args) throws Exception {
GeoDistanceTest g = new GeoDistanceTest("EPSG:4326", "37.5639686", "126.9794393");
g.distanceCalculator("37.5639686", "126.9794393");
}
}
자바 geotools 15.1 좌표 변환
import org.geotools.geometry.jts.JTS;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.geotools.referencing.CRS;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.MathTransform;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Point;
public class GeoTransTest {
private CoordinateReferenceSystem sourceCRS;
private CoordinateReferenceSystem targetCRS;
public GeoTransTest(String sourceCRS, String targetCRS) throws Exception {
this.sourceCRS = CRS.decode(sourceCRS);
this.targetCRS = CRS.decode(targetCRS);
}
public void transform(String x, String y) throws Exception {
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
Coordinate coord = new Coordinate(Double.parseDouble(x), Double.parseDouble(y));
Geometry sourceGeometry = geometryFactory.createPoint(coord);
MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS);
Geometry targetGeomery = JTS.transform(sourceGeometry, transform);
Point targetPoint = targetGeomery.getCentroid();
System.out.println("변환전 EPSG:4326(WGS84) X : "+x + "\t EPSG:4326(WGS84) Y : "+y);
System.out.println("변환후 EPSG:3857 X : "+targetPoint.getX() + "\t EPSG:3857 Y : "+targetPoint.getY());
}
public static void main(String[] args) throws Exception {
GeoTransTest g = new GeoTransTest("EPSG:4326", "EPSG:3857");
g.transform("37.5639686", "126.9794393");
}
}
자바 진법 변환
import java.util.LinkedList;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("변환할 숫자를 입력하세요.");
String value = sc.next();
for(int i=2;i<=16;i++){
LinkedList list = convert(Integer.parseInt(value),i);
System.out.print(value + "의 " + i +" 진법 : ");
while(!list.isEmpty()){
System.out.print(list.pop());
}
}
}
public static LinkedList convert(int value, int i){
LinkedList list = new LinkedList();
while(value != 0){
// 나머지가 0~9 사이 일때
if((value % i)<10){
list.push(String.valueOf((value % i)));
}else{
// 나머지가 10 이상일때 해당하는 알파뱃을 저장
char temp1 = (char)((value % i)+55);
list.push(String.valueOf(temp1));
}
//몫을 구함
value /= i;
}
return list;
}
}
카카오 지도 api 사용
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import javax.net.ssl.HttpsURLConnection;
public class KakaoGeoApi1 {
public static void main(String[] args) throws Exception {
System.out.println(addrToCoord(URLEncoder.encode("주소입력","UTF-8")));
System.out.println(coordToAddr("37.5665958","126.9783813"));
}
public static String addrToCoord(String addr){
String url = "https://dapi.kakao.com/v2/local/search/address.json?query="+addr;
String json = "";
try{
json = getJSONData(url);
}catch(Exception e){
e.printStackTrace();
}
return json;
}
public static String coordToAddr(String x, String y){
String url = "https://dapi.kakao.com/v2/local/geo/coord2address.json?x="+x+"&y="+y+"&input_coord=WGS84";
String json = "";
try{
json = getJSONData(url);
}catch(Exception e){
e.printStackTrace();
}
return json;
}
private static String getJSONData(String apiUrl) throws Exception {
String jsonString = new String();
String buf;
String apikey = "apikey"; //apikey
URL url = new URL(apiUrl);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
String auth = "KakaoAK "+apikey;
conn.setRequestMethod("GET");
conn.setRequestProperty("X-Requested-With", "curl");
conn.setRequestProperty("Authorization", auth);
BufferedReader br = new BufferedReader(new InputStreamReader(
conn.getInputStream(), "UTF-8"));
while ((buf = br.readLine()) != null) {
jsonString += buf;
}
return jsonString;
}
}
네이버 지도 api 사용
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class NaverGeoApi {
public static void main(String[] args) {
String clientId = "clientId "; //clientId
String clientSecret = "clientSecret "; //clientSecret
try {
String addr = URLEncoder.encode("주소입력", "UTF-8"); //주소입력
String apiURL = "https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode?query=" + addr; //json
//String apiURL = "https://openapi.naver.com/v1/map/geocode.xml?query=" + addr; // xml
URL url = new URL(apiURL);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("X-NCP-APIGW-API-KEY-ID", clientId);
con.setRequestProperty("X-NCP-APIGW-API-KEY", clientSecret);
int responseCode = con.getResponseCode();
BufferedReader br;
if(responseCode==200) {
br = new BufferedReader(new InputStreamReader(con.getInputStream()));
} else {
br = new BufferedReader(new InputStreamReader(con.getErrorStream()));
}
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = br.readLine()) != null) {
response.append(inputLine);
}
br.close();
System.out.println(response.toString());
} catch (Exception e) {
System.out.println(e);
}
}
}
2018년 8월 25일 토요일
자바 이벤트(Event)
이벤트(Event)
사용자가 프로그램 코드에 의하여 발생할 수 있는 object를 Event가 발생한 인스턴스를 이벤트 소스(Event Sources), Event가 발생했을 때 발생한 Event를 처리해주는 것을 이벤트 핸들러(Event Handlers)라고 함
ActionEvent
버튼, 리스트, 메뉴 등의 컴포넌트가 눌리거나 선택이 되었을 때 발생하는 이벤트
AdjustmentEvent
스크롤 바와 같은 조정 가능한 컴포넌트에서 조정이 일어나면 발생하는 이벤트
ComponentEvent
컴포넌트의 모습이나 이동, 크기가 변화될 때 발생하는 이벤트
ItemEvent
리스트와 같은 선택항목이 있는 컴포넌트에서 선택항목이 선택될 때 발생하는 이벤트
TextEvent
텍스트 컴포넌트에서 값이 입력될 때 발생하는 이벤트
ContainerEvent
컨테이너에 컴포넌트가 추가되거나 제거될 때 발생하는 이벤트
FocusEvent
컴포넌트에 초점(Focus)이 들어올 때 발생하는 이벤트
PaintEvent
컴포넌트가 그려져야할 때 발생하는 이벤트
WindowEvent
윈도우가 활성화되거나 비활성화될 때, 최소, 최대, 종료될 때 발생하는 이벤트
KeyEvent
키보드로부터 입력될 때 발생하는 이벤트
MouseEvent
마우스가 눌려지거나 움직일 때, 마우스 커서가 컴포넌트 영역에 들어가거나 벗어날 때 발생하는 이벤트
이벤트(Event) 구조와 리스너
자바는 GUI를 표시하는 클래스와는 별도로 새 클래스를 만들어서 이벤트의 처리를 맡기는 방법인 위임형 이벤트 모델 (Delegation Event Model)을 사용
Delegation(위임) 방식에서는 이벤트를 처리할 클래스를 만들고, 그 클래스를 이벤트를 발생 시키는 컴포넌트에 등록하기만 하면 됨. 이때 이벤트처리를 위해 등록되는 클래스를 리스너(listener)라고 함
리스너 인터페이스의 특징
- 하나의 컴포넌트에 하나, 혹은 여러 개의 리스너를 등록할 수 있음
- 리스너는 반드시 event handler(실제로 event를 처리하는 method)를 구현해야 함
- 컴포넌트에 등록된 리스너가 없으면, 그 컴포넌트의 이벤트는 무시됨
-리스너는 해당 이벤트를 처리하기 위해 그 이벤트에 해당하는 interface를 implement하면 됨
사용자가 프로그램 코드에 의하여 발생할 수 있는 object를 Event가 발생한 인스턴스를 이벤트 소스(Event Sources), Event가 발생했을 때 발생한 Event를 처리해주는 것을 이벤트 핸들러(Event Handlers)라고 함
ActionEvent
버튼, 리스트, 메뉴 등의 컴포넌트가 눌리거나 선택이 되었을 때 발생하는 이벤트
AdjustmentEvent
스크롤 바와 같은 조정 가능한 컴포넌트에서 조정이 일어나면 발생하는 이벤트
ComponentEvent
컴포넌트의 모습이나 이동, 크기가 변화될 때 발생하는 이벤트
ItemEvent
리스트와 같은 선택항목이 있는 컴포넌트에서 선택항목이 선택될 때 발생하는 이벤트
TextEvent
텍스트 컴포넌트에서 값이 입력될 때 발생하는 이벤트
ContainerEvent
컨테이너에 컴포넌트가 추가되거나 제거될 때 발생하는 이벤트
FocusEvent
컴포넌트에 초점(Focus)이 들어올 때 발생하는 이벤트
PaintEvent
컴포넌트가 그려져야할 때 발생하는 이벤트
WindowEvent
윈도우가 활성화되거나 비활성화될 때, 최소, 최대, 종료될 때 발생하는 이벤트
KeyEvent
키보드로부터 입력될 때 발생하는 이벤트
MouseEvent
마우스가 눌려지거나 움직일 때, 마우스 커서가 컴포넌트 영역에 들어가거나 벗어날 때 발생하는 이벤트
이벤트(Event) 구조와 리스너
자바는 GUI를 표시하는 클래스와는 별도로 새 클래스를 만들어서 이벤트의 처리를 맡기는 방법인 위임형 이벤트 모델 (Delegation Event Model)을 사용
Delegation(위임) 방식에서는 이벤트를 처리할 클래스를 만들고, 그 클래스를 이벤트를 발생 시키는 컴포넌트에 등록하기만 하면 됨. 이때 이벤트처리를 위해 등록되는 클래스를 리스너(listener)라고 함
리스너 인터페이스의 특징
- 하나의 컴포넌트에 하나, 혹은 여러 개의 리스너를 등록할 수 있음
- 리스너는 반드시 event handler(실제로 event를 처리하는 method)를 구현해야 함
- 컴포넌트에 등록된 리스너가 없으면, 그 컴포넌트의 이벤트는 무시됨
-리스너는 해당 이벤트를 처리하기 위해 그 이벤트에 해당하는 interface를 implement하면 됨
2018년 8월 22일 수요일
자바 컴포넌트
컴포넌트
AWT component들은 color나 font 등을 최적화하여 원하는 모양을 갖출 수 있도록 기능을 제공하며, 기본적으로 제공하는 컴포넌트들은 Button,Canvas, Checkbox,Choice, Lable, List, Scrollbar 등이 있음
Button
Button은 마우스로 클릭해서 작동시킬 수 있는 컴포넌트
Checkbox
Checkbox는 사용자가 선택 표시를 할 수 있는 두 가지 상태를 가진 클래스
목록에 체크된 상태가 true , 체크 되지 않은 상태는 false로 값을 가짐
CheckboxGroup - Radio Button
Checkbox가 CheckboxGroup과 사용될 때 라디오 버튼으로 사용
Checkbox는 개별적으로 선택할 수 있는 버튼인데 비해, 라디오 버튼은 체크박스그룹 내 에서 한 버튼만 선택됨
Choice
사용자가 아이템을 고를 수 있도록 목록을 드롭다운 할 수 있는 컴포넌트
Label
단순히 문자열을 나타내는 컴포넌트
사용자에게 메시지를 전달하기 위해 사용
사용자 입력을 받지 않으며 이벤트 또한 발생하지 않음
Text Components
TextField와 TextArea 모두 TextComponent 클래스의 후손 클래스임
TextField : 한줄만 쓸 수 있는 텍스트영역를 구현하는 클래스
TextArea : 여러 줄에 걸쳐 문서를 작성할 수 있는 컴포넌트 클래스
TextField와 TextArea 모두 화면에 표시되는 실제 크기는 layout manager에 따라 달라짐
List
여러 개의 항목들 중에서 하나 혹은 여러 개를 선택할 수 있는 컴포넌트 클래스
Scrollbar
가로 또는 세로의 형태의 스크롤 바를 만들 때 사용되는 클래스
메뉴
사용자가 프로그램의 기능을 선택할 수 있도록 해주는 기능을 가지고 있는 컴포넌트
메뉴의 구성
MeunBar : 메뉴를 올려 놓을 수 있는 메뉴바를 만들 때 사용
Menu : 메뉴 바에 올려 놓을 수 있는 메뉴를 만들때 사용
MenuItem : 메뉴의 하위 메뉴를 만들 때 사용
CheckboxMemyItem : 체크 박스가 들어 있는 메뉴 아이템을 만들 때 사용
PopupMune : 동적으로 표현할 수 있는 메뉴를 만들 때 사용
AWT component들은 color나 font 등을 최적화하여 원하는 모양을 갖출 수 있도록 기능을 제공하며, 기본적으로 제공하는 컴포넌트들은 Button,Canvas, Checkbox,Choice, Lable, List, Scrollbar 등이 있음
Button
Button은 마우스로 클릭해서 작동시킬 수 있는 컴포넌트
Checkbox
Checkbox는 사용자가 선택 표시를 할 수 있는 두 가지 상태를 가진 클래스
목록에 체크된 상태가 true , 체크 되지 않은 상태는 false로 값을 가짐
CheckboxGroup - Radio Button
Checkbox가 CheckboxGroup과 사용될 때 라디오 버튼으로 사용
Checkbox는 개별적으로 선택할 수 있는 버튼인데 비해, 라디오 버튼은 체크박스그룹 내 에서 한 버튼만 선택됨
Choice
사용자가 아이템을 고를 수 있도록 목록을 드롭다운 할 수 있는 컴포넌트
Label
단순히 문자열을 나타내는 컴포넌트
사용자에게 메시지를 전달하기 위해 사용
사용자 입력을 받지 않으며 이벤트 또한 발생하지 않음
Text Components
TextField와 TextArea 모두 TextComponent 클래스의 후손 클래스임
TextField : 한줄만 쓸 수 있는 텍스트영역를 구현하는 클래스
TextArea : 여러 줄에 걸쳐 문서를 작성할 수 있는 컴포넌트 클래스
TextField와 TextArea 모두 화면에 표시되는 실제 크기는 layout manager에 따라 달라짐
List
여러 개의 항목들 중에서 하나 혹은 여러 개를 선택할 수 있는 컴포넌트 클래스
Scrollbar
가로 또는 세로의 형태의 스크롤 바를 만들 때 사용되는 클래스
메뉴
사용자가 프로그램의 기능을 선택할 수 있도록 해주는 기능을 가지고 있는 컴포넌트
메뉴의 구성
MeunBar : 메뉴를 올려 놓을 수 있는 메뉴바를 만들 때 사용
Menu : 메뉴 바에 올려 놓을 수 있는 메뉴를 만들때 사용
MenuItem : 메뉴의 하위 메뉴를 만들 때 사용
CheckboxMemyItem : 체크 박스가 들어 있는 메뉴 아이템을 만들 때 사용
PopupMune : 동적으로 표현할 수 있는 메뉴를 만들 때 사용
자바 배치 관리자(Layout Manager)
배치 관리자(Layout Manager)
컨테이너에 포함되는 컴포넌트들의 위치와 크기를 관리하는 클래스임
자바에서 제공하는 기본적인 배치 관리자(layout manager)는 FlowLayout ,BorderLayout , GridLayout, CardLayout, GridBagLayout 등이 있음
FlowLayout
panel의 기본 레이아웃으로 기본적으로 컴포넌트들을 한 줄에서 왼쪽에서 오른쪽으로 배치해 나가며, 줄이 넘치면 다음 줄로 넘어가도록 배치를 함
BorderLayout Manager
Window 계열 컨테이너인 프레임에 기본적으로 제공되는 배치 관리자로 컨테이너의 크기를 사용자가 변경시켰을 때 각 컴포넌트의 상대적인 위치는 변하지 않고, 크기만 변하는 레이아웃임
GridLayout
컨테이너를 동일한 크기의 격자(grid)로 나누고 그 안에 각 컴포넌트를 표시하는 클래스
CardLayout Manager
하나의 화면에 계층적 구조를 만들어서, 마치 card를 쌓아 놓은 듯한 기능을 할 수 있게 하는 클래스
GridBagLayout Manager
Component가 들어가는 각 격자에 대한 여러 가지 크기 및 모양 데이터를 GridBagConstraints라는 별도의 클래스를 이용하여 프로그래머가 직접 설정할 수 있는 클래스
컨테이너에 포함되는 컴포넌트들의 위치와 크기를 관리하는 클래스임
자바에서 제공하는 기본적인 배치 관리자(layout manager)는 FlowLayout ,BorderLayout , GridLayout, CardLayout, GridBagLayout 등이 있음
FlowLayout
panel의 기본 레이아웃으로 기본적으로 컴포넌트들을 한 줄에서 왼쪽에서 오른쪽으로 배치해 나가며, 줄이 넘치면 다음 줄로 넘어가도록 배치를 함
BorderLayout Manager
Window 계열 컨테이너인 프레임에 기본적으로 제공되는 배치 관리자로 컨테이너의 크기를 사용자가 변경시켰을 때 각 컴포넌트의 상대적인 위치는 변하지 않고, 크기만 변하는 레이아웃임
GridLayout
컨테이너를 동일한 크기의 격자(grid)로 나누고 그 안에 각 컴포넌트를 표시하는 클래스
CardLayout Manager
하나의 화면에 계층적 구조를 만들어서, 마치 card를 쌓아 놓은 듯한 기능을 할 수 있게 하는 클래스
GridBagLayout Manager
Component가 들어가는 각 격자에 대한 여러 가지 크기 및 모양 데이터를 GridBagConstraints라는 별도의 클래스를 이용하여 프로그래머가 직접 설정할 수 있는 클래스
자바 컨테이너(Container)
컨테이너(Container)
컨테이너는 컴포넌트의 후손 클래스로 다른 컨테이너나 컴포넌트를 포함할 수 있는 기능을 가지는 클래스임
컨테이너의 종류
Window : 다른 컨테이너에 포함시키지 않고 하나의 윈도우를 만들 수 있는 컴포넌트를 말하며 자체적으로 사용되진 않고 후손클래스인 Dialog와 Frame 컨테이너가 사용됨
Frame : 다른 컨테이너를 포함하며 애플리케이션에 사용된다. 최상위 컨테이너가 되며 GUI 프로그램을 작성하기 위해서는 프레임을 사용해야 됨
Dialog : Frame이나, 다른 Dialog에 종속되는 윈도우를 말하며 대화창에 사용됨
panel : 다른 컴포넌트를 포함할 수 있는 컨테이너로 일부 영역을 컨트롤하는 데 사용함
Applet : 웹 브라우저 또는 Applet 뷰어를 통해 결과를 확인함
컨테이너는 컴포넌트의 후손 클래스로 다른 컨테이너나 컴포넌트를 포함할 수 있는 기능을 가지는 클래스임
컨테이너의 종류
Window : 다른 컨테이너에 포함시키지 않고 하나의 윈도우를 만들 수 있는 컴포넌트를 말하며 자체적으로 사용되진 않고 후손클래스인 Dialog와 Frame 컨테이너가 사용됨
Frame : 다른 컨테이너를 포함하며 애플리케이션에 사용된다. 최상위 컨테이너가 되며 GUI 프로그램을 작성하기 위해서는 프레임을 사용해야 됨
Dialog : Frame이나, 다른 Dialog에 종속되는 윈도우를 말하며 대화창에 사용됨
panel : 다른 컴포넌트를 포함할 수 있는 컨테이너로 일부 영역을 컨트롤하는 데 사용함
Applet : 웹 브라우저 또는 Applet 뷰어를 통해 결과를 확인함
자바 AWT
AWT
Abstract Window Toolkit의 약자
자바 프로그램이 수행되는 어떤 운영체제에서든지 수행되며 그래픽을 이용하여 사용자와 프로그램 간의 상호작용을 할 수 있도록 해주는 인터페이스인 GUI를 의미함
AWT의 컴포넌트
자바 프로그램에서 사용자 인터페이스를 구축하기 위해 사용하는 요소로 java.awt.Component와 java.awt.MenuComponent를 상속받아 사용됨
컴포넌트는 크게 다음과 같이 세 가지로 세분화할 수 있음
비주얼 컴포넌트 (Visual Component) : 버튼과 같이 컨테이너에 들어갈 수 있는 컴포넌트(Button,TextField, Checkbox, List, Radio, TextArea등 )
컨테이너 컴포넌트(Container Component) : 다른 컴포넌트를 포함할 수 있는 컴포넌트 (Frame , panel 등 )
메뉴 컴포넌트(Menu Component) : 컨테이너에 메뉴를 구성하는 메뉴 관련 컴포넌트(MenuBar, Menu, MenuItem, CheckboxItem, PopupMenu 등)
Abstract Window Toolkit의 약자
자바 프로그램이 수행되는 어떤 운영체제에서든지 수행되며 그래픽을 이용하여 사용자와 프로그램 간의 상호작용을 할 수 있도록 해주는 인터페이스인 GUI를 의미함
AWT의 컴포넌트
자바 프로그램에서 사용자 인터페이스를 구축하기 위해 사용하는 요소로 java.awt.Component와 java.awt.MenuComponent를 상속받아 사용됨
컴포넌트는 크게 다음과 같이 세 가지로 세분화할 수 있음
비주얼 컴포넌트 (Visual Component) : 버튼과 같이 컨테이너에 들어갈 수 있는 컴포넌트(Button,TextField, Checkbox, List, Radio, TextArea등 )
컨테이너 컴포넌트(Container Component) : 다른 컴포넌트를 포함할 수 있는 컴포넌트 (Frame , panel 등 )
메뉴 컴포넌트(Menu Component) : 컨테이너에 메뉴를 구성하는 메뉴 관련 컴포넌트(MenuBar, Menu, MenuItem, CheckboxItem, PopupMenu 등)
자바 SimpleDateFormat 클래스
SimpleDateFormat 클래스
SimpleDateFormat 클래스는 Java.text 패키지에 존재하는 클래스로 생성자 또는 메소드의 지정된 속성을 통해서 날짜와 시간 출력 서식을 구현하는 클래스임
SimpleDateFormat 클래스는 Java.text 패키지에 존재하는 클래스로 생성자 또는 메소드의 지정된 속성을 통해서 날짜와 시간 출력 서식을 구현하는 클래스임
자바 Random 클래스
Random 클래스
java.util.Random 클래스 객체는 일련의 난수를 생성하는 클래스로 생성된 객체를 통해 int형 float형 등의 난수가 발생 가능하며 정수형 난수 발생은 특정 범위가 없다. 하지만 부동소수점을 가지는 실수형들의 난수는 0.0에서 1.0 사이의 값을 받게 되어 있음
java.util.Random 클래스 객체는 일련의 난수를 생성하는 클래스로 생성된 객체를 통해 int형 float형 등의 난수가 발생 가능하며 정수형 난수 발생은 특정 범위가 없다. 하지만 부동소수점을 가지는 실수형들의 난수는 0.0에서 1.0 사이의 값을 받게 되어 있음
자바 Calendar 클래스
Calendar 클래스
자바의 java.util 패키지에서는 자료 관리를 구현하는 클래스들과 날짜, 출력 포맷 등의 프로그램에서 유용하게 사용할 수 있는 클래스들을 제공함
java.util.Calendar 클래스는 날짜와 시간을 객체 모델링 화한 클래스로 년, 월, 일, 요일, 시, 분, 초까지의 시간과 날짜와 관련된 정보를 제공한다. Calendar 클래스는 1970년 1월 1일부터 특정 값으로 진보해 오면서 날짜와 시각에 대한 조작을 수행할 수 있도록 제공되는 추상 클래스임
자바의 java.util 패키지에서는 자료 관리를 구현하는 클래스들과 날짜, 출력 포맷 등의 프로그램에서 유용하게 사용할 수 있는 클래스들을 제공함
java.util.Calendar 클래스는 날짜와 시간을 객체 모델링 화한 클래스로 년, 월, 일, 요일, 시, 분, 초까지의 시간과 날짜와 관련된 정보를 제공한다. Calendar 클래스는 1970년 1월 1일부터 특정 값으로 진보해 오면서 날짜와 시각에 대한 조작을 수행할 수 있도록 제공되는 추상 클래스임
자바 컬렉션
자바의 컬렉션
자바에서는 자료 관리를 컬렉션으로 정의하며 자료 관리하는 목적에 따른 클래스들을 java.util 패키지에서 제공함
자료구조의 특징
효율성(Efficiency) - 상황에 맞는 알고리즘을 사용하여 자료를 구조화시키기 때문에 효율적으로 동작함 - 상황에 맞는 적절한 자료구조를 이용하게 되면 데이터 처리의 효율을 높일 수 있음
추상화(Abstraction) - 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것 - 자료구조의 추상화는 실제 구현한 언어가 무엇인지에 따라 실제 그 코드는 다르지만, 추상적인 개념에 대해서만 알고 있으면 되기 때문에 언어에 종속적이지 않다는 특징을 가짐
자바에서는 자료 관리를 컬렉션으로 정의하며 자료 관리하는 목적에 따른 클래스들을 java.util 패키지에서 제공함
재사용성(Reusability) - 자료구조를 이용하여 데이터를 처리할 경우 해당 자료구조의 인터페이스만 이용하여 데이터를 처리하도록 하므로 모듈화가 가능함 - 이는 자료구조를 설계할 때 특정 프로그램에 맞추어 설계하지 않고 다양한 프로그램에서 사용될 수 있도록 범용화하여 설계함으로써 가능함
자바에서는 자료 관리를 컬렉션으로 정의하며 자료 관리하는 목적에 따른 클래스들을 java.util 패키지에서 제공함
자료구조의 특징
효율성(Efficiency) - 상황에 맞는 알고리즘을 사용하여 자료를 구조화시키기 때문에 효율적으로 동작함 - 상황에 맞는 적절한 자료구조를 이용하게 되면 데이터 처리의 효율을 높일 수 있음
추상화(Abstraction) - 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것 - 자료구조의 추상화는 실제 구현한 언어가 무엇인지에 따라 실제 그 코드는 다르지만, 추상적인 개념에 대해서만 알고 있으면 되기 때문에 언어에 종속적이지 않다는 특징을 가짐
자바에서는 자료 관리를 컬렉션으로 정의하며 자료 관리하는 목적에 따른 클래스들을 java.util 패키지에서 제공함
재사용성(Reusability) - 자료구조를 이용하여 데이터를 처리할 경우 해당 자료구조의 인터페이스만 이용하여 데이터를 처리하도록 하므로 모듈화가 가능함 - 이는 자료구조를 설계할 때 특정 프로그램에 맞추어 설계하지 않고 다양한 프로그램에서 사용될 수 있도록 범용화하여 설계함으로써 가능함
라벨:
자료구조,
자바,
컬렉션,
collection,
java
자바 GENERIC
제너릭
JDK5.0부터는 제너릭(GENERIC)이 포함되어 실행 전 컴파일 단계에서 특정 컬렉션에 프로그래머가 원하는 객체 타입을 명시하여 명시된 객체가 아니면 절대로 저장될 수 없게 구성됨
제너릭을 선언하는 방법
Generic Type은 <> 사이에 컴파일할 당시 사용될 객체를 적어 놓으면 객체를 저장할 때 제너릭 타입으로 저장
먼저 클래스 선언부의 클래스명 뒤에 전달받을 타입의 수만 큼 ','로 구분하여 <K, V>와 같은 형태로 선언
JDK5.0부터는 제너릭(GENERIC)이 포함되어 실행 전 컴파일 단계에서 특정 컬렉션에 프로그래머가 원하는 객체 타입을 명시하여 명시된 객체가 아니면 절대로 저장될 수 없게 구성됨
제너릭을 선언하는 방법
Generic Type은 <> 사이에 컴파일할 당시 사용될 객체를 적어 놓으면 객체를 저장할 때 제너릭 타입으로 저장
먼저 클래스 선언부의 클래스명 뒤에 전달받을 타입의 수만 큼 ','로 구분하여 <K, V>와 같은 형태로 선언
2018년 8월 21일 화요일
자바 Character 클래스
Character 클래스
char를 클래스로 변환한 것
중요 메소드
public static boolean isDigit(char ch) - ch가 유니코드인지 true, false로 리턴함
public static boolean isLetter(char ch) - ch가 숫자인지 true, false로 리턴 함
public static boolean isLetterOrDigit(char ch) - ch가 문자인지 true, false로 리턴 함
public static boolean isLowerCase(char ch) - ch가 문자·숫자인지 true, false로 리턴함
public static boolean isSpace(char ch) - ch가 소문자인지 true, false로 리턴 함
public static boolean isUpperCase(char ch) - ch가 공백인지 true, false로 리턴 함
public static char toLowerCase(char ch) - ch가 대문자인지 true, false로 리턴 함
public static char toUpperCase(char ch) - ch를 소문자로 리턴 함
public static char toUpperCase(char ch) - ch를 대문자로 리턴 함
char를 클래스로 변환한 것
중요 메소드
public static boolean isDigit(char ch) - ch가 유니코드인지 true, false로 리턴함
public static boolean isLetter(char ch) - ch가 숫자인지 true, false로 리턴 함
public static boolean isLetterOrDigit(char ch) - ch가 문자인지 true, false로 리턴 함
public static boolean isLowerCase(char ch) - ch가 문자·숫자인지 true, false로 리턴함
public static boolean isSpace(char ch) - ch가 소문자인지 true, false로 리턴 함
public static boolean isUpperCase(char ch) - ch가 공백인지 true, false로 리턴 함
public static char toLowerCase(char ch) - ch가 대문자인지 true, false로 리턴 함
public static char toUpperCase(char ch) - ch를 소문자로 리턴 함
public static char toUpperCase(char ch) - ch를 대문자로 리턴 함
자바 Integer 클래스
Integer 클래스
자바의 기본 자료형 중 int를 클래스로 제공하는 것
주요메소드
public byte byteValue( ) - 객체의 값을 byte 형으로 리턴 함
public double doubleValue( ) - 객체의 값을 double 형으로 리턴 함
public float floatValue( ) - 객체의 값을 float 형으로 리턴 함
public int intValue( ) - 객체의 값을 int 형으로 리턴 함
public long longValue( ) - 객체의 값을 long 형으로 리턴 함
public short shortValue( ) - 객체의 값을 short 형으로 리턴 함
자바의 기본 자료형 중 int를 클래스로 제공하는 것
주요메소드
public byte byteValue( ) - 객체의 값을 byte 형으로 리턴 함
public double doubleValue( ) - 객체의 값을 double 형으로 리턴 함
public float floatValue( ) - 객체의 값을 float 형으로 리턴 함
public int intValue( ) - 객체의 값을 int 형으로 리턴 함
public long longValue( ) - 객체의 값을 long 형으로 리턴 함
public short shortValue( ) - 객체의 값을 short 형으로 리턴 함
자바 래퍼 클래스(Wrapper class)
래퍼 클래스(Wrapper class)
자바에서는 자바의 기본 자료형을 클래스로 정의하여 객체 단위로 처리할 수 있도록 제공하는 클래스
자바의 기본 자료형인 byte, short, int, long, float, double, char, boolean형에 대응하는 Byte, Short, Integer, Long, Float, Double, Character, Boolean의 Wrapper 클래스 및 큰 숫자를 다루기 위한 java.math.BigInteger와 java.math.BigDecimal 클래스를 제공
자바에서는 자바의 기본 자료형을 클래스로 정의하여 객체 단위로 처리할 수 있도록 제공하는 클래스
자바의 기본 자료형인 byte, short, int, long, float, double, char, boolean형에 대응하는 Byte, Short, Integer, Long, Float, Double, Character, Boolean의 Wrapper 클래스 및 큰 숫자를 다루기 위한 java.math.BigInteger와 java.math.BigDecimal 클래스를 제공
자바 오브젝트(Object) 클래스
오브젝트(Object) 클래스
모든 클래스의 최상위 클래스인 Object는 모든 객체의 타입이 됨
모든 클래스가 Object 후손 클래스이기 때문에 Object가 가진 메소드를 재정의해서 필요에 따라 사용하게 됨
오브젝트(Object) 클래스 주요 메소드
Object 클래스의 주요 메소드는 다음과 같음
protected Object clone( ) - 객체 자신의 복사본을 리턴함
public boolean equals(Object obj) - 객체 자신과 객체 obj가 같은 객체인지 확인하고 알려줌(같으면 true)
protedcted void finalize( ) - 객체가 소멸할 때 가비지 컬렉터에 의해 자동으로 호출되며 수행되어야 하는 코드가 있는 경우에만 오버라이딩함
pubilc class getClass( ) - 객체 자신의 클래스 정보를 담고 있는 Class) 인스턴스를 리턴함
public int hasCode( ) - 객체 자신의 해시 코드를 리턴함
public int hasCode( ) - 객체 자신의 해시 코드를 리턴함
public String toString( ) - 객체 자신의 정보를 문자열로 리턴
public void notify( ) - 객체 자신을 사용하려고 기다리는 스레드를 하나만 깨움
public void notifyAll( ) - 객체 자신을 사용하려고 기다리는 모든 스레드를 깨움
public void wait( ) - 다른 스레드가 notify( )나 notifyAll( )을 호출할 때까지 현재 스레드를 무한히 또는 지정된 시간(timeout, nanos)동안 기다리게 함
모든 클래스의 최상위 클래스인 Object는 모든 객체의 타입이 됨
모든 클래스가 Object 후손 클래스이기 때문에 Object가 가진 메소드를 재정의해서 필요에 따라 사용하게 됨
오브젝트(Object) 클래스 주요 메소드
Object 클래스의 주요 메소드는 다음과 같음
protected Object clone( ) - 객체 자신의 복사본을 리턴함
public boolean equals(Object obj) - 객체 자신과 객체 obj가 같은 객체인지 확인하고 알려줌(같으면 true)
protedcted void finalize( ) - 객체가 소멸할 때 가비지 컬렉터에 의해 자동으로 호출되며 수행되어야 하는 코드가 있는 경우에만 오버라이딩함
pubilc class getClass( ) - 객체 자신의 클래스 정보를 담고 있는 Class) 인스턴스를 리턴함
public int hasCode( ) - 객체 자신의 해시 코드를 리턴함
public int hasCode( ) - 객체 자신의 해시 코드를 리턴함
public String toString( ) - 객체 자신의 정보를 문자열로 리턴
public void notify( ) - 객체 자신을 사용하려고 기다리는 스레드를 하나만 깨움
public void notifyAll( ) - 객체 자신을 사용하려고 기다리는 모든 스레드를 깨움
public void wait( ) - 다른 스레드가 notify( )나 notifyAll( )을 호출할 때까지 현재 스레드를 무한히 또는 지정된 시간(timeout, nanos)동안 기다리게 함
피드 구독하기:
글 (Atom)