본문 바로가기

java22

[자료구조, 알고리즘] 리스트#3 - js로 CircularLinkedList 구현, 자바로 생각해보기 [연결리스트]- 메모리 상에서는 떨어져있는 데이터 : 각각 연결하여 1열의 개념의 데이터 저장공간을 만듦- 핵심(1) node : 현재 데이터와 현재와 연결된 다음 데이터를 가리키는 주소를 함께 저장 - node -> data, next(2) node 간 어떻게 연결할 것인가, 연결되어져있는 node 탐색방법 - 연결 형태에 따라 단순/원형/양방향 연결리스트 나뉨 [원형 연결리스트]- 단순 연결리스트와 마찬가지로 단방향 : 역방향까지 지원하는 양방향 연결리스트는 다음 포스팅!- 처음 추가된 node와 마지막 node가 연결되어 원형을 띔 - 단순 연결리스트는 head -> tail node로 가기위해 tail에서 next node로 순차탐색=> 위의 그림처럼 head를 둬도 되지만, 원형 연결리스트의 특.. 2017. 9. 6.
[Java] 제어문 - 조건, 반복 [제어문]- main() 함수의 흐름을 제어할 수 있는 수단 : 다양한 작업을 할 수 있지! - 종류 (1) 조건문 : if ~ else if ~ else , switch => switch: 상황(조건)이 4가지 이상일 때, 변수의 값에 따라 제어를 할 때 사용, break 필히 사용(안쓰면 다른 case로) => switch: char 타입도 처리할 수 있음, 영어 대소문자에 관계없이 똑같은 알파벳이라면 동일 처리 => switch: 정수타입(byte, short, char, int, long) + 정수값 산출 연산식 + String(java 1.7 추가) (2) 반복문 : for, while, do-while => for: 초기화 둘 이상, 증감식 둘 이상 있어도 됨( 쉼표(,)로 구분 ) => fo.. 2017. 9. 3.
[Java] 변수, 연산자 : 기본이지만 잘 모르면 에러의 근원 [앞으로 포스팅하는 내용] - 자바 기본 systax를 공부하고 중요한 부분만 포스팅할 것 : 알아둬야할 규칙, 자바 프로그래밍에 있어 꼭 알아둬야할 점 등 [Hello World 그리고 syntax] - 프로그래밍 언어 첫번째 실행 단계인 Hello World 띄우기 public class Hello{ public static void main(String[] args){ System.out.println("Hello World!"); }} => 클래스와 메서드 : 메서드는 단독으로 작성될 수 없고, 클래스 내부에 존재해야함 => 클래스명의 첫번째는 항상 대문자, 클래스명과 파일명은 일치해야함 => JVM이 기계어로 번역 후 실행시킬 때 main()을 찾아 실행함 : 이를 엔트리(Entry) 포인트라 .. 2017. 9. 2.
[Java] 자바 시작! - 왜? 자바 특징, JRE, JDK, JVM 살펴보기 [자바를 다시 하는 이유]- 일단 재밌다 : 내가 재밌어하고 하고 싶어하니깐 더 잘할 수 있을 것 같았음 - 처음 접한 언어가 자바- 다시 해보고 싶은 마음이 들었음 - 범용성 : 안드로이드 개발 뿐만 아니라 웹 등 여러 곳에서 사용할 수 있음 - 국내 다수의 기업에서 자바를 사용 - 이식성 : 동일한 코드 다른 곳에서 사용! - 자바스크립트에 대한 약간의 불만 : 디버깅, 지금은 컨텍스트, 변수객체, 스코프 등등 알고있어서 실수없이 잘하지만 그래도 찝찝함이… 똑 부러지는 언어를.. - 더 빠져보고 싶은 생각 - 그래서 시작! [자바의 특징]- 언어의 특징을 아는 것은 매우 굉장히 엄청 중요하다! (1) 오크(Oak) 라는 언어에서 부터 시작 : 가전제품에서 사용될 목적 (2) 이식성이 뛰어남 : 서로 .. 2017. 9. 1.
[Java] java.lang 패키지 : Calendar, DateFormat, TimeZone 날짜와 시간은 프로그램에 있어서 아주 자주 사용되는 데이터이다.가령 타임라인이 있다고 하자. 타임라인에 쓰여진 글들은 말 그대로 타임순서대로 나열되어 있는 것이다.이때 필요한 것이 시간/날짜를 알 수 있는 클래스다.java.lang > java.util 패키지에서는 이러한 기능을 하는 표준클래스들이 있다. [Calendar 클래스]캘린더 클래스는 인터페이스다. 인터페이스인 이유는 나라마다 날짜를 계산하는 방법(우리나라 : 양력, 음력)이 문화와 지역에 따라 다르기 때문이다.캘린더 클래스에서는 기본적으로 날짜를 계산하는 메소드만 있고 나머지는 인터페이스를 구현하는 클래스에서 따로 구현을 해야한다.캘린더 클래스를 구현하여 양력을 계산하는 GregorianCalendar 클래스가 있다.api 참고 : http.. 2017. 1. 21.
[Java] java.lang 패키지 : StringTokenizer [StringTokenizer]문자열로부터 토큰을 추출하는 기능을 하는 클래스, 여기서 말하는 토큰이란 문자열을 구성하는 단위를 말한다."토끼 강아지 고양이" 라는 문자열이 있다면 "토끼" "강아지" "고양이" 가 토큰이다.보통 데이터를 가져와서 어느 기준을 따라 자르고 저장할 때 중간과정에서 많이 쓸 것으로 보인다. [메소드] => hasMoreToken : 문자열의 토큰을 반환할 때 다음 토큰이 있는지 없는지 검사한 후 boolean 값을 반환하는 메소드, 반복작업할 때 씀 => nextToken : 규칙(델리미터)에 따라서 잘라진 토큰을 하나씩 반환하는 메소드 String str8 = "제목 : 진브로의 하루, 페이지수 : 100, 호수 : 1"; StringTokenizer stok = new S.. 2017. 1. 20.
[Java] java.lang 패키지 : StringBuilder, StringBuffer [StringBuilder와 StringBuffer]문자열에 대한 변경처리를 하기위한 클래스다.버퍼(문자열을 수정하기 위한 임시저장공간)에 기존 문자열을 저장해두고 수정하는 방식이다.버퍼의 크기는 최초 16이며, 생성자의 지정에 따라 크기를 지정할 수 있다. (버퍼 사이즈는 1글자 당 버퍼 크기 1)위의 클래스들로 작업할 때 최초 버퍼 크기가 맞지 않아 늘리는 작업이 필요한데, 이 작업은 자동으로 된다.버퍼의 크기는 실제 더 필요한 사이즈보다 2배정도 더 생성하는데, 불필요하게 크게 메모리에 할당되어 낭비될 수 있으므로 버퍼크기는 잘 예상하는 것이 좋다.두 클래스의 생성자, 메소드 형태, 기능이 거의 동일하다. [두 클래스의 차이점]멀티쓰레드 환경이냐 싱글쓰레드 환경이냐이다.다시말해 동시에 처리를 하는 .. 2017. 1. 20.
[Java] java.lang 패키지 : String [java.lang 패키지 클래스] : 자바의 기본 클래스 및 인터페이스 모음 패키지, 자동 import됨 [문자열 관련 클래스(String, StringBuffer, StringBuilder, StringTokenizer)] 1) String : 문자열을 데이터 타입(객체)로 선언하는 클래스이며, concat, replace 등 문자열을 조작하는 메소드를 멤버로 가지고 있다. => 문자열을 생성하는 방법은 객체 생성, 리터럴 2가지가 있음 => 리터럴로 생성하면 값이 같을 경우 같은 참조값을 갖기 때문에 == 으로 참조값을 비교했을 때 true를 반환함 [메소드] => concat : 기존 문자열에 다른 문자열을 붙일 때 사용하는 메소드 => replace : 문자열 중 일부를 변경할 때 사용하는 메소.. 2017. 1. 20.
[Java] 접근제어자 [접근제어자]접근제어자는 클래스 내부 멤버변수, 메소드에 대한 접근을 제어하기위한 명령어이며, 세가지로 나뉜다.1) public : 어디에서나 접근 가능함(인터페이스에서는 상수 - 변수 없이 상수로 선언됨, 메소드 모두 public으로 고정되어있음) 2) protected : 같은 패키지 내에서만 클래스 내부구성요소(변수, 메소드)는 사용할 수 있고 외부패키지에서는 사용안됨3) private : 해당 클래스 내부에서만 사용가능함(객체를 생성하더라도 멤버변수/메소드를 호출할 수 없음)생성자도 private을 설정할 수 있다. 왜 사용하냐고 하겠지만 생성자에서 다른 생성자를 호출해서 하나의 생성자로 모이게끔 코드를 구성할 때 최종 생성자만 private로 설정해놓는 것이다.(객체 생성시 사용자가 아닌 관리자.. 2017. 1. 20.
[Java] 패키지 클래스와 인터페이스 파일이 많아지면 그만큼 관리하기가 어렵고 번거롭기도하고, 중복되지 않게 이름붙이는 것도 어렵다. 이를 위해 각각의 기능 혹은 어떤 기준에 따라 패키지의 개념을 통해 나눠 클래스, 인터페이스 파일을 관리할 수 있다. 다시 설명하자면 하나의 프로젝트가 있고 프로젝트를 완성하기위해 각각의 기능을 구현해야할 것이다. 각각의 기능을 담당하는 클래스, 인터페이스 파일을 프로젝트 내에 있는 디폴트 패키지 폴더에 한 곳에 모두 모아 둘 것이 아니라 각각의 패키지를 생성한 뒤 거기에 맞게 클래스, 인터페이스 파일을 옮겨서 관리를 한다. 프로젝트 전체 폴더 내에 기능에 맞춰 새로운 폴더를 만들고 사용하는 것이다. 클래스 혹은 인터페이스 파일의 이름이 같다하더라도 패키지가 다르기때문에 각각 다르게 인식한.. 2017. 1. 20.