프로그래밍/java

개발자 환경 구축 40일차 (25/1/7)

wkun 2025. 1. 7. 17:58

contents

 

개발자환경구축

1.운영체제 기초 활용하기

1)운영체제 식별

2)운영체제 기본 명령어 활용

3)운영체제 작업 우선순위 설정

2.기본 개발환경 구축하기

1)운영체제 설치

2)개발도구 설치

 

JAVA 프로그래밍

CHAPTER01 자바의 시작

1.자바란?

2.자바의 특징

3.개발 환경 준비

1)JDK 설치

2)환경변수 설정

3)JDK 설치 여부 확인

4)이클립스 설치

5)이클립스 실행하기

6)이전 작업 파일 불러오기

 

CHAPTER02 변수와 상수

1.변수란?

1)변수의 선언과 초기화

2)데이터 타입(Data type)

3)형변환

4)상수의 선언

 

CHAPTER03 연산자

1.연산자의 종류와 우선순위

2.산술 연산자

3.단항 연산자

1)부호 연산자(+, -)

2)논리 부정 연산자(!)

3)증감 연산자(++,--)

4.비교 연산자(equals)

1)대소비교 연산자(<,>,<=,>=)

2)등가비교 연산자((==, !=)

5.논리 연산자(&&,||,^)

 

 

 

------------------------------------------------------

 

 

개발자환경구축

 

 

1.운영체제 기초 활용하기

 

1)운영체제 식별

-응용소프트웨어 개발에 필요한 다양한 운영체제의 특징을 식별 할 수 있음

 

운영체제

-컴퓨터 시스템이 제공하는 하드웨어(H/W)와 소프트웨어(S/W) 기능을 사용할 수 있도록 해주는 시스템 소프트웨어(S/W)로, 한정된 시스템 자원을 효율적으로 사용할 수 있도록 관리 및 운영함으로서 사용자에게 편리성을 제공함. 운영체제가 컴퓨터 시스템과 사용자 간의 인터페이스(interface)를 제공함

 

1.운영체제의 주요 기능

(1)처리능력 향상

-한정된 시간 내 최대한의 테이터를 처리

(2)응답시간 단축

-처리 요청으로 부터 처리 완료까지 소요기간 최소화

(3)신뢰도 향상

-시스템 장애의 처리

(4)컴퓨터 시스템과 사용자 간 인터페이스(Interface) 기능 제공

(5)출력 역할 지원

(6)각 프로그램과 사용자 간 보호

(7)주기억 장치 관리

(8)CPU를 통한 프로그램 실행 관리

(9) 컴퓨터 시스템 내 파일 관리

(10)컴퓨터 시스템 명령어 해석/수행

 

2.운영체제의 종류

(1)윈도우 OS

-Microsoft사 제품으로 유료로 다양한 라이선스 정책이 적용되어 있음. 주로 중소 규모 및 개인용 PC의 OS로 사용됨

(2)UNIX

-IBM, HP, Sun사의 제품으로 유료로 다양한 라이선스 정책이 적용되어 있음. 주로 대용량 처리, 안정성이 요구되는 서버(Server) 제품군에 사용됨

(3)Linux

-Linux Torvalds사의 제품으로 무료임. 중대 규모 서버에 사용됨

(4)iOS

-Apple사 제품으로 하드웨어의 번들(Bundle)임. 스마트폰 및 태블릿 PC에 사용됨

(5)Android

-Google사 제품으로 무료임. 스마트폰 및 태블릿 PC에 사용됨

 

2)운영체제 기본 명령어 활용

-CLI(Command Line Interface) 및 GUI(Graphic User Interface) 환경에서 운영체제의 기본 명령어을 활용할 수 있음

 

◎운영체제 기본 명령어 사용 환경

-운영체제(O/S)를 제어하기 위한 수단은 CLI(Command Line Interface)와 GUI(Graphic User Interface)가 있음

 

1.CLI(Command Line Interface)의 특징

-CLI는 사용자가 직접 명령어를 입력하여 컴퓨터 시스템에게 명령을 내리는 방식

(1)작업 환경

-텍스트 기반의 작업 환경

(2)작업 형태

-사용자와 컴퓨터 간 텍스트 터미널을 통해 상호 작용하는 방식

(3)작업 방법

-작업 명령은 사용자가 키보드 등을 통해 문자열 형태로 입력, 출력도 문자열 형태

 

2.GUI(Graphic User Interface) 기본 명령어

-GUI는 사용자가 마우스 등을 통해 윈도에서 프로그램을 실행하고 파일을 이동하는 방식

(1)작업 환경

-마우스 기반 제어시스템 기반의 작업 환경

(2)작업 형태

-제어프로그램을 통해 사용자와 컴퓨터가 상호 작용하는 방식

(3)작업 방법

-마우스 기반의 제어 시스템이 GUI가 제공되고 설치도 화면 위주로 사용

 

◎운영체제 기본 명령어

1.윈도 기본 명령어

(1)윈도 명령어 종류

-윈도 CMD 창에서 help 명령어 실행

(2)윈도 명령어 주요 설명

 

<윈도 CMD 명령어>

구분 명령어
시스템 정보 확인 systeminfo
레지스트리 편집기 실행 regedit
시스템 구성 편집기 sysedit(이전:실행x) -> maconfig(현재)
텔넷 접속 명령어 telnet open 사이트 주소
네트워크 상태 확인 netstat -na
시스템 파일 검사기 sfc
윈도 서비스 보기 services.msc
성능 모니터 뷰 perfmon.msc
로컬 보안 설정 secpol.msc
원격 데스크톱 연결 사용 mstsc.exe
컴퓨터 관리 compmg mt.msc
장치 관리자 devmgm t.msc
현재 폴더에 있는 목록을 확인 dir

 

2.리눅스 기본 명령어

(1)리눅스 기본 명령어 주요 설명

 

<리눅스 주요 명령어>

구분 명령어
현재 위치의 파일목록 조회 ls
디렉터리 이동 cd
파일 복사 cp
파일 이동 mv
파일 제거 rm
디렉터리 생성 mkdir
파일의 내용을 화면에 출력 cat
화면에 출력되는 결과를 파일로 저장 redirection
자주 수행하는 명령어 설정 alias

 

3)운영체제 작업 우선순위 설정

-운영체제에서 제공하는 작업 우선순위 설정방법을 이용하여 애플리케이션의 작업 우선순위를 조정할 수 있음

 

◎운영체제 프로세스 개요

-운영체제 제공 작업 우선순위 설정방법을 이용하여 애플리케이션 작업 우선순위를 조정 할 수 있음

 

1.운영체제의 프로세스의 개념

(1)CPU를 통해 수행되는 사용자 및 시스템 프로그램

(2)시스템의 작업 단위

 

2.운영체제의 프로세스의 특징

(1)현재 실행 중이거나 곧 실행이 가능한 프로그램

(2)운영체제 내에 PCB를 가진 프로그램

(3)목적 또는 결과에 따라 발생하는 사건들의 과정

(4)프로세스는 병행 수행 가능

(5)CPU는 수시로 프로세스들 사이를 다중화하여 전환

(6)지정된 결과를 얻기 위한 계통적 동작

(7)비동기적 행위(Asynchronous Activity)

(8)프로세스가 할당하는 개체(Entity)로서 디스패치(Dispatch) 가능

 

◎운영체제 프로세스 종류

1.순차 프로세스

1)한 프로세스의 수행이 순차적인 방법으로 진행

2)어느 한순간에 많아야 하나의 명령어만 프로세스를 대표하여 수행하게 됨

3)현재 실행 중인 하나의 프로그램으로 프로세스가 포함하고 있는 내용

 (1)프로세스 문맥: 상태 워드나 레지스터들

 (2)기억장치 문맥: 데이터 세그먼트, 코드 세그먼트, 실행 스택 등

 (3)프로세스와 연관된 속성들

   1)프로세스 이름: 프로세스가 생성될 때 할당된 내부 번호

   2)우선순위: CPU를 할당하는 스케줄링에 사용

   3)권한: 정보 보호 및 수행할 연산을 지정

 

2.병행 프로세스

병행 프로세스의 개념

(1)프로그램 그 자체가 프로세스는 아님

(2)하나의 프로그램 = 수동적(Passive)인 단위

(3)하나의 프로세스 = 능동적(Active)인 단위

 

◎프로세스 상태의 개념

1.상태(State)

(1)컴퓨터 시스템 내에 하나의 프로세스가 존재하는 동안 그 프로세스는 계속해서 여러 사건들에 의해 일련의 상태 변화를 거침

(2)구분: 제출(Submit) 상태, 보류(Hold) 상태, 준비(Ready) 상태, 실행(Running) 상태, 대기(Waiting) 상태, 완료(Complate) 상태

2.준비 리스트(Ready List)와 대기 리스트(Waiting List)

(1)준비 리스트

-우선순위를 부여하여 가장 높은 우선순위를 갖는 프로세스가 다음 순서에 CPU를 할당 받음

(2)대기 리스트

-우선순위가 존재하지 않음

 

◎윈도우 운영체제에서 작업 운선순위를 설정을 수행

1)윈도 "실행"메뉴에서 작업관리자 명령어(taskmgr)를 입력한 후 확인 버튼을 클릭함

2)작업관리자 메뉴에서 프로세스 목록을 확인함

3)작업관리자 메뉴에서 프로세스의 우선순위 설정 메뉴로 접근함

4)작업관리자 메뉴의 프로세스 우선순위 설정 메뉴에서 애플리케이션의 현제 우선순위를 확인함

5)작업관리자 메뉴의 프로세스 우선순위 설정 메뉴에서 애플리케이션의 우선순위를 변경(보통->낮음)을 함

6)애플리케이션 프로세스의 우선순위가 변경됨을 확인함

 

*작업관리자->세부정보tab->PID->우클릭->우선순위설정(높음, 낮음 등)

 

 

2.기본 개발환경 구축하기

 

1)운영체제 설치

-응용소프트웨어 개발을 위하여 선정된 운영체제를 설치할 수 있음

 

◎운영체제별 개발환경의 이해

-개발환경 구축은 설치하는 운영체제에 따라 웹 서버, 데이터베이스, 프로그래밍 언어가 상이할 수 있음. 운영체제별 벤더사에 종속되거나 호환성 확보를 위해서는 별도의 프로그램을 필요에 따라 설치할 수 있음

 

<운영체제별 개발환경 구축 비교>

구분 윈도 유닉스
주요 OS Windows7, Windows10
Windows Server
AIX, HP-UX, Solaris
Linux[Redhat, Fedora]
프로그래밍 언어 ASP, ASPX
PHP for Win
JSP for Win
PHP
JSP
웹 서버 IIS,
Apache for windows
Apache
데이터베이스 MS-SQL MySQL
Oracle
Solaris

 

2)개발도구 설치

-응용소프트웨어 개발에 필요한 개발도구를 설치할 수 있음

 

◎개발도구 종류

<개발도구별 서버명, 설치 S/W, 운영체제 현황 사례

개발도구 서버명 설치 S/W 운영체제
Eclipse 3.7.r1 C:\Eclipse WTP를 포함한 Eclipse IDE 프로그램
SUN JDK 1.5.0_17 Eclipse에 포함 J2SE 1.5 버전을 준수하는 자바 컴파일러, 표준 라이브러리, JRE(Java Runtime Enviroment)등을 포함하는 SDK(SoftWare Development Kit) 프로그램
SVN
Git
1.7 Eclipse에 포함 프로그램 소스 관리를 위한 형상관리 프로그램
Apache Tomcat 5.5 Eclipse에 포함 웹 애플리케이션 서버

 

*버전 안 맞으면 에러

 

 

-------------------------------------------------

 

 

JAVA 프로그래밍

 

 

CHAPTER01 자바의 시작

 

1.자바란?

-자바는 미국의 Sun Microsystems사에서 개발한 객체지향 프로그래밍 언어임. 원래는 제임스 고슬링(James Gosling)이라는 사람이 가전제품에 사용할 수 있는 프로그램을 위해 만들었지만 현재는 목적이 변경되어 인터넷에 적합한 웹 어플리케이션 개발 언어가 됨

-자바는 2000년대 중반 이후부터 전 세계에서 가장 많이 쓰이는 언어가 되었으면 지금까지 모든 산업 분야에 적용되고 있음. 특히 스마트 폰의 운영체제인 안드로이드(Android)가 자바 언어를 기반으로 만들어졌기 때문에 최근에도 활발히 사용되고 있음

 

2.자바의 특징

-모든 프로그래민 언어에는 각각의 특징이 있으며, 자바에도 자바만의 특징이 있음

 

1)객체지향 언어임

-자바는 처음 개발할 때부터 객체지향언어로 개발되었기 때문에 객체지향언어의 특징인 상속, 캡슐화, 다향성이 잘 나타남

2)배우기 쉬움

-기존 객체지향언어들의 구조는 매우 복잡함. 하지만 자바는 기존의 언어의 장점은 흡수하고 단점은 버려서 간결하게 객체지향적인 설계가 가능함

3)운영체제(플랫폼)에 독립적임

-기존의 언어들은 운영체제에 따라서 코드를 따로 작성해야 함. 하지만 자바는 자바 가상머신(JVM)을 통해서 어떤 운영체제에서도 동일하게 실행할 수 있는데, JMV이 프로그램을 해당 운영체제가 이해할 수 있도록 변환하여 전달하기 때문임

4)가비지 컬렉션(Garbage Collection)을 지원함

-가비지 컬렉션은 개발자가 메모리를 관리하지 않아도 되는 메모리 회수 기법임. 자바 프로그램이 실행될 때 개발자가 직접 메모리를 해제하거나 관리할 필요가 없이 가비지 컬렉터(garbage collector)가 자동으로 메모리를 관리하기 때문에 코드가 간결해짐

5)동적임

-프로그래밍을 실행할 때 적절한 시점에 실행에 필요한 라이브러리들을 연결함

6)스레드를 지원함

-다른 언어와는 달리 자바에서는 스레드 관련 라이브러리를 제공하기 때문에 스레드를 활용해서 프로그램을 작성함. 스레드를 이용하면 네트워크 프로그래밍이나 복잡한 작업을 효과적으로 처리함

7)네트워크 프로그래밍과 분산처리를 지원함

-자바는 네트워크 프로그래밍을 하는 것이 목적이므로 다양한 네트워크 관련 API가 제공됨. 또한, 자바는 분산 환경 프로그래밍에 적합함

 

3.개발 환경 준비

-자바로 프로그램을 작성하기 위해서는 알맞은 개발 환경을 구축해야함

 

1)JDK 설치

-자바를 사용하기 위해서는 JDK를 설치해야함. JDK는 Java Development Kit의 줄임말로써 자바 개발을 위한 도구들의 모음임

 

 

 

Download the Latest Java LTS Free

Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.

www.oracle.com

 

(1)JDK를 설치하기 위해서는 먼저 https://www.oracle.com/kr/java/technologies/downloads/ 사이트 접속

(2)로그인 후: Java17버전 -> Windows x64 Installer -> [DOWNLOAD]  (자신의 운영체제에 맞게 다운로드)

(3)C:\Program Files\Java\jdk-17 경로확인

 

2)환경변수 설정

-JDK에서 제공하는 실행 파일들을 어느 위치에서나 실행하기 위해서는 환경변수를 설정해야함. 실행 파일들은 bin 디렉터리에 제공되기 때문에 이 bin 디렉토리까지를 Path 환경 변수로 설정함

 

-*win키 + s: 찾기 -> 시스템 환경변수 편집 실행 -> [고급] 환경변수 -> 시스템 변수 -> Path 클릭 ->새로만들기 ->C:\Program Files\Java\jdk-17\bin 경로 붙여넣기(bin이 있는 경로 추가)-> 확인

 

3)JDK 설치 여부 확인

-[시작]-[보조 프로그램]-[명령 프롬프트]  또는 [실행] 메뉴에서 'cmd' 명령어 입력-> 명령 프롬프트 화면 실행->명령어 java -version 작성->엔터(자바 버전 출력 확인)

 

4)이클립스 설치

 

 

Eclipse Downloads | The Eclipse Foundation

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 415 open source projects, including runtimes, tools and frameworks.

www.eclipse.org

 

(1) 이클립스를 설치하기위해 공식 홈페이지 https://www.eclipse.org/downloads/ 에 접속-> [DOWNLOAD] 클릭

(2)다운로드 완료되면 설치파일을 더블클릭하여 설치 시작

(3)[eclipseinstaller]가 나타나면 [Eclipse IDE for Java Developers] 클릭

(4)[INSTALL] 클릭 프로그램 설치

(5)설치 완료 후 [LAUNCH] 클릭

(6)이클립스 실행 -> workspace를 원하는 경로로 설정(Java 폴더 생성)->[Launch]  실행 -> welcome 창 닫기

*창 안뜰때: File -> switch workspace -> other 경로 바꾸기

(7)JDK버전 설정: window -> preference -> Java -> Installed JREs -> [add]클릭 -> standard VM -> next -> Directory: C:\Program Files\Java\jdk-17 폴더 선택 -> [Finish] -> jdk-17(default) 선택 -> apply and close

 

*JDK > Java Development Kit 도구모음집

 > 컴파일: 소스코드(.java) -> 바이트 코드(.class) > 실행(해석 후 실행)

 > 표준 라이브러리 제공: 입출력 처리, 네크워크 통신 등

 > 디버깅 및 관리

 

*Eclipse IDE for Java Developers 통합환경지원 툴

 > 코드 편집

 > 컴파일, 디버거

 > 프로젝트 관리

 > GUI 디자인

 

5)이클립스 실행하기

(1)프로젝트 생성: [File] -> [New] -> [Java Project] 클릭

(2)Project name 입력 -> [Finish] 클릭

(3) 생성한 프로젝트의 [src] 폴더 -> 우클릭 -> [New] -> [Class] -> Name(첫글자, 다음글자 대문자) 입력 -> public static void main(String[] args) 체크 -> [Finish] 클릭

(4)public static void main(String[] args) { } 중괄호 사이 코드 작성

(5)코드 실행: 메뉴 [Run]-[Run As]-[Java Applicaion] 또는 우클릭-[Run As]-[Java Applicaion] 실행 -> [console] 창 출력

*[ctrl] + s: 저장 / [ctrl] + +: 화면 키우기

*캡처 에러 -> 스프레드 시트에 저장 -> 수정확인 검토

 

6)이전 작업 파일 불러오기

(1)[File] -> [Open File] 클릭

(2)파일 선택 [열기] 클릭

(3)선택한 프로젝트 파일 확인

 

 

CHAPTER02 변수와 상수

 

1.변수란?

-변수(Variable)는 프로그램의 처리 과정에서 데이터를 담아둘 수 있는 메모리의 공간을 의미함. 하나의 변수에는 하나의 값만 저장할 수 있고 이 값을 변경할 수 있기 때문에 변할 수 있는 값, 즉 변수(Variable)라고 부름

 

1)변수의 선언과 초기화

-변수를 사용하려면 먼저 선언을 해야 함. 변수의 선언 형식은 다음과 같음

                  int      a;     -> 변수선언
                   |        |
(1)데이터 타입   (2)변수명
 
                  int   a     =        1;
                                |          |
                  대입연산자  초기값

 

(1)데이터 타입:  변수에 기억시킬 데이터의 형태를 의미

(2)변수명: 기억장소 주소를 대신하여 사용할 이름

(3)초기값: 변수를 선언한 후 기억시킬 값

 

*자바에서 변수의 이름을 명명할 때는 몇 가지 규칙이 있음

-변수 이름은 숫자로 시작할 수 없고, 특수문자는 '$'과 '_'만 사용할 수 있음

옳은 예 틀린 예
name2 2name
$temp #temp

 

-자바에서는 대소문자를 구별함. 따라서 대소문자가 다른 변수는 별개의 변수임

옳은 예 틀린 예
int apple;
apple = 1;
int apple;
Apple = 1; //오류발생

 

-자바 예약어를 변수명으로 사용할 수 없음. 예약어란 프로그래밍을 하는데 있어 미리 의미가 정해진 단어들임

abstract boolean break byte
case catch char class
const continue default do
double else extends false
finally float for goto
if implements import instanceof
int interface long native
new null package private
protected public return short
static super synchronized switch
this throw throws transient
true try void voatile
while      

 

*변수명을 짓는 방법에는 헝가리언, 카멜, 파스칼 표기법 등이 있음

-헝가리안 표기법: 변수에 자료형을 구분 지을 수 있도록 접두사를 달아서 표기하는 방법임

자료형 접두사 예시
int i int iNum;
float f float fEpsilon;
bool b bool bPoket;

 

-카멜 표기법: 두 개 이상의 단어가 사용된 경우 새로운 단어가 나타나면 대문자를 사용하여 표기하는 방법이며 대체로 함수명과 변수명을 지을 때 사용됨 ex) int myAge;, int newPeople;

-파스칼 표기법: 모든 단어의 첫 글자를 대문자로 표기하는 방법이며 클래스 명을 지을 때 사용됨

ex) class GameEngine{};

cf)스네이크 표기법: 소문자(_)소문자 밑줄

 

*프로그래밍 권장사항

-권장사항이므로 반드시 지킬 필요는 없지만 이는 프로그래머 간 일종의 약속임. 이런 약속을 통해 프로그램을 읽기 쉽게 만들어주기 때문에 될 수 있으면 지켜주는 것이 좋음

-변수와 메서드의 이름은 소문자로 시작하고 클래스의 첫 글자는 대문자로 시작함. ex) 변수 car, 클래스명: Car 

-상수의 이름은 모두 대문자로 함. 여러 단어로 이루어질 경우 '_'로 구분함 ex) PI, MAX_VALUE

-여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 함 ex) personName, StringBuffer

-변수의 이름은 의미 있는 이름으로 하는 것이 좋음 ex) String s = "jason" -> String name = "jason"

 

2)데이터 타입(Data type)

-데이터에는 정수, 실수, 문자, 논리(참 또는 거짓) 등이 있는데 각각의 데이터를 담을 수 있는 변수의 종류가 다름. 그래서 데이터 타입으로 어떤 데이터를 담는 변수인지 표시함. 데이터 타입에는 정수형, 실수형, 문자형, 논리형이 있음

 

(1)정수형 데이터 타입

-정수형 데이터 타입은 정수를 저장할 때 사용하는 데이터 타입임. 정수형 데이터 타입에는 크기별로 byte, short, int, long 네 가지가 있음

자료형 바이트 비트 저장 가능한 값의 범위
byte 1 8 -128 ~ 127
short 2 16 -32,768 ~ 32,767
int 4 32 -2,147,483,648 ~ 2,147,483,647
long 8 64 - 2^63  ~ 2^63-1

 

(2)실수형 데이터 타입

-실수형 데이터 타입은 실수를 저장할 수 있는 데이터 타입이며 float과 double이 있음

자료형 바이트 비트 저장 가능한 값의 범위
float 4 32 1.4 * 10^-45 ~ 3.4*10^38
double 8 64 4.9*10^-324 ~ 1.8*10^308

 

(3)문자형 데이터 타입

-문자형 데이터 타입은 문자를 담을 수 있는 데이터 타입이며 char가 있음. char형은 변수 당 하나의 문자를 저장함

자료형 바이트 비트 저장 가능한 값의 범위
char 2 16 0 ~ 2^16-1(유니코드 0 ~ 65535)

 

-자바에서는 유니코드(2byte)를 사용하므로 char 자료형은 2바이트를 사용함. 또 음의 값을 표현할 필요가 없어서 저장 가능한 값의 범위는 0부터 시작함. char형 변수에 저장되는 문자는 컴퓨터가 인식할 수 있도록 숫자의 형태로 저장됨

-문자를 변수에 대입할 때는 작은 따옴표(' ')를 사용함

 

(4)논리형 데이터 타입

-논리형 데이터 타입에는 true와 false를 저장하는 자료형인 boolean이 있음. 즉, 0과 1로만 표현이 가능하기 때문에 실제로 필요한 메모리는 1bit이지만 자바에서 데이터를 다루는 최소 크기는 byte이기 때문에 실제로는 1byte의 크기가 있음. 참고로 자바에서는 ture와 True는 다르게 취급하므로 True를 대입할 경우 오류가 발생함 

 

3)형변환

-형변환이란 말 그대로 변수나 상수의 데이터 타입을 다른 타입으로 바꾸는 것을 의미함

-형변환에는 자동 형변환과 명시적 형변환이 있음. 자동 형변환은 프로그램 작성자가 별도의 작업을 하지 않아도 자바가 알아서 알맞은 타입으로 변환해주는 형변환이고, 명시적 형변환은 프로그래머가 변수의 자료형을 강제로 바꾸는 것을 말함

 

<자동 형변환을 하는 프로그램>

 

Exam-1.java

package ch01;


public
 class Ex01 {



public static void main(String[] args) {
// TODO Auto-generated method stub
byte a = 127; //byte가 가질 수 있는 최댓값
int b = a; // 자동형변환(byte->int)
System.out.println(b);

float c = b; // 자동형변환(int->float)
System.out.println(c);
}


}

실행 결과

127
127.0

 

-명시적 형변환은 프로그래머가 데이터 형을 강제로 변환함. 명시적 형변환은 다음과 같은 형식으로 선언함

(변환하고자하는 타입) 변수명;

 

<명시적 형변환을 수행하는 프로그램>

 

Exam-2.java

package ch01;


public
class Ex02 {



public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 263;
System.out.println(a);
byte b = (byte)a; //명시적 형변환
System.out.println(b);

float c = 123.456f;
double e = 123.456;
System.out.println(c);
System.out.println(e);

double d = (int)c;
System.out.println(d);


}


}

 

실행결과

263
7

123.456
123.456
123.0

 

-명시적 형변환 시에는 데이터 손실이 발생할 수 있음. 예를 들어, 실수형 데이터를 정수형으로 변환하면 데이터 손실이 발생할 수 있음

 

4)상수의 선언

-상수는 프로그램 실행 중에 변경할 수 없는 고정된 값임. 상수는 프로그램 언어에 정해져 있지만, 사용자가 직접 상수를 선언함. 상수를 선언하는 방법은 다음과 같음

final 데이터 타입 상수명 = 값;

 

<상수를 선언한 후 값을 변경하면 어떻게 되는지 보여주는 프로그램>

 

Exam-3.java

package ch01;


public
 class Ex03 {

final int MAX_LOGIN = 10; //기준: 바뀌면 안됨(대문자)
final int PROCESS_RUNNING = 1;
final int PROCESS_STOP = 2;
int attempts = 0;


public void tryLogin(String password) {
if(attempts < MAX_LOGIN) {
System.out.println("시도 가능");
attempts++;
}else {
System.out.println("가능 횟수 초과");
}
}


public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 3; //선언+초기값 할당
a = 4; //재할당
System.out.println(a);


final double PI = 3.14;
PI = 3.15; //에러 발생
System.out.println(PI);


}


}

-변수 a는 3에서 4로 값이 변경할 수 있지만 final이 붙은 'PI'는 상수이므로 값을 변경하면 에러가 발생함

 

 

CHAPTER03 연산자

 

1.연산자의 종류와 우선순위

-연산자란 특정한 연산을 수행하기 위해 사용하는 기호임

1)변수에 담긴 데이터를 연산하기 위해

2)변수에 담긴 데이터를 비교하여 제어문 등에서 활용하려고

-연산자는 사용하는 목적에 따라 산술 연산자, 단항 연산자, 비교 연산자, 논리 연산자, 쉬프트 연산자. 기타 연산자로 구분함

종류 연산자 설명
산술 연산자 + - * / % 사칙연산 및 나머지 연산
단항 연산자 - 부호 연산자
! 논리 부정 연산자
++ -- 증감 연산자
비교 연산자 > < >= <= == != 양 변을 비교하는 연산
논리 연산자 && || ^ AND, OR, XOR 연산(2진수로 비트비교해서 다르면 ture, 같으면 false)
쉬프트 연산자 << >> >>> 비트를 이동하는 연산
기타 연산자 (조건)?참:거짓 삼항 연산자
= += -+ *= 대입 연산자

 

*연산의 방향

-연산의 대부분은 왼쪽에서 오른쪽으로 실행하지만, 단항 연산자(!, ~, +, -, ++, --)와 대입 연산자(=, +=, -=. *=) 등은 오른쪽에서 왼쪽으로 실행함

 

-여러 종류의 연산자가 하나의 식에 포함되어 있으면 연산자 우선순위에 따라 연산 순서가 결정됨. 연산자 우선순위는 다음과 같음

연산자 우선순위 종류 연산자
1 최우선 연산자 [ ], ( ), .
2 단항 연산자 !, ~, +, -, ++, --
3 산술 연산자 +, -, *,  /, %
4 쉬프트 연산자 << >> >>>
5 비교 연산자 <, >, <=, >=, ==, !=
6 논리 연산자 && ||
7 삼항 연산자 (조건)?참:거짓
8 대입 연산자 =, +=, -=, *= 등(산술과 조합)

 

2.산술 연산자

-산술 연산자를 변수 또는 상수와 함께 사용하여 기본적인 계산을 할 수 있음

-산술 연산자는 상수 또는 변수 등을 이용하여 사칙 연산(+, -, *, /)과 나머지 연산(%)을 하는 연산자임. 산술 연산자에는 다음과 같은 것들이 있음

연산자 의미 사용방법 설명
+ 더하기 c = a + b 변수c에 a와 b의 더한 결과 값을 대입
- 빼기 c = a - b 변수c에 a에서 b를 뺀 결과 값을 대입
* 곱하기 c = a * b 변수c에 a와 b를 곱한 결과 값을 대입
/ 나누기 c = a / b 변수c에 a를 b로 나눈 결과 값을 대입
% 나머지 c = a % b 변수c에 a를 b로 나눈 나머지를 대입

 

*나머지 연산자는 정수만 사용할 수 있으며 연산의 결과가 몫이 아닌 나머지 값을 구할 때 사용함(몫 제외)

 

<사칙 연산과 나머지 연산을 실행하는 프로그램>

 

Exam-4.java

package ch01;


public
class Ex04 {



public static void main(String[] args) {
// TODO Auto-generated method stub
// double a = 10.3;
int a = 10; //a에 10을 대입
int b = 3; //b에 3을 대입
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);
System.out.println(a%b);
}


}

 

실행결과

13
7
30
3
1

 

-연산에 사용된 데이터 타입에 따라 사칙 연산의 결과가 결정되는 것을 알 수 있음. 나머지 연산자는 데이터 타입이 정수형인 경우에만 사용함

 

3.단항 연산자

-단항 연산자는 항이 하나인 연산자임

-단항 연산자에서는 부호 연산자(+, -)와 논리 부정 연산자(++, --)가 있음

연산자 의미 사용방법 설명
+, - 부호 연산자 -a 변수 a의 부호를 바꿈
! 부정 연산자 !a 논리 부정 연산자는 참(true)을 거짓(false)으로, 거짓(false)을 참(true)으로 바꾸는 연산자임
++ 증가 연산자 ++a; 또는 a++; 변수 a에 1을 더하여 a를 기억시킴
-- 감소 연산자 --a; 또는 a--; 변수 a에 1을 뺀 후 a에 기억시킴

 

1)부호 연산자(+, -)

-부호 연산자는 변수 앞에 붙어 피연산자의 부호를 결정해주거나 부호를 변경하는 역할을 함

 

<부호를 바꿔 출력하는 프로그램>

 

Exam-5.java

package ch01;


public
class Ex05 {



public static void main(String[] args) {
// TODO Auto-generated method stub
int a = -1; //a에 -1을 대입합니다.
int b = 2; //b에 2를 대입합니다.
System.out.println(a); //a를 출력합니다.
System.out.println(-b); //b의 부호를 바꿔 출력합니다.

}


}

 

실행결과

-1
-2

 

2)논리 부정 연산자(!)

-논리 부정 연산자는 참(true)을 거짓(false)으로, 거짓(false)을 참(true)으로 바꾸는 연산자임

 

<boolean 변수의 값을 바꾸는 프로그램>

 

Exam-6.java

package ch01;


public
class Ex06 {



public static void main(String[] args) {
// TODO Auto-generated method stub
boolean a = true;
boolean b = false;
boolean c = !b; //b의 값을 반대로 바꾸어 대입합니다.
System.out.println(a); //true가 출력됩니다.
System.out.println(!a); //값을 바꾸어 출력합니다.

System.out.println(b); //false가 출력됩니다.
System.out.println(c); //true가 출력됩니다.


}


}

 

실행결과

true
false
false
true

 

3)증감 연산자(++,--)

-증감 연산자는 부호에 따라 변수에 저장된 값을 1 증가시키거나 1 감소시키는 연산자임. 증감 연산자는 변수의 앞과 뒤에 각각 붙을 수 있는데 앞에 붙은 경우과 뒤에 붙은 경우를 구분해야 함

-증감 연산자의 사용방법은 다음과 같음

++변수명: 변수가 사용되기 전에 값이 증가
변수명++: 변수가 사용된 후에 값이 증가
--변수명: 변수가 사용되기 전에 값이 감소
변수명--: 변수가 사용된 후에 값이 감소

 

<증감 연산자를 사용하여 연산의 결과를 화면에 표시하는 프로그램>

 

Exam-7.java

package ch01;


public class Ex07 {


public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 1;
System.out.println(a); //현재 a는 1

a++; //a의 값을 1증가
System.out.println(a); //증가되었으므로 2
System.out.println(++a); //증가시킨 다음에 출력했으므로 3
System.out.println(a++); //먼저 3을 출력한 다음에 1증가
System.out.println(a); //현재 a는 4


}


}

 

실행결과

1
2
3
3
4

 

4.비교 연산자(equals)

-비교 연산자는 양변을 비교하여 맞으면 참(ture), 다르면 거짓(false)을 반환하는 연산자임

-비교 연산자의 결과는 참 또는 거짓으로 주로 반복문이나 조건문과 같은 제어문에 사용됨

 

종류 연산자 연산자 사용방법 설명
같다 == a == b a와 b가 같으면 참
작다 < a < b a가 b보다 작으면 참
크다 > a > b a가 b보다 크면 참 
작거나 같다 <= a <= b a가 b보다 작거나 같으면 참
크거나 같다 >= a >= b a가 b보다 크거나 같으면 참
같지 않다 != a != b a와 b가 같지 않으면 참

 

1)대소비교 연산자(<,>,<=,>=)

-대소비교 연산자는 실제 부등호의 방향이 결과와 일치하면 참(true)을, 다르면 거짓(false)을 반환함

 

<세 개의 변수 값을 비교하여 결과를 표시하는 프로그램>

 

Exam-8.java

package ch01;


public class Ex08 {


public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b); //10 < 20
System.out.println(a > b); //10 >20
System.out.println(a + b <= c); //10 + 20 <= 30
System.out.println(a + b >= c); //10 + 20 >= 30


}


}

 

실행결과

true
false
true
true

 

2)등가비교 연산자((==, !=)

-등가비교는 양변이 같은지 다른지 비교하여 참(true) 또는 거짓(false)을 반환하는 연산자임

 

<등가비교 연산자를 사용하여 두 변수의 값을 비교하는 프로그램>

 

Exam-9.java

package ch01;


public class Ex09 {


public static void main(String[] args) {
// TODO Auto-generated method stub
double a = 3.14;
double b = 5.14;
System.out.println(a == b);
System.out.println(a != b);

String c1 = "Hello JAVA!"; //"Hello JAVA" > 상수 : 메모리(주소가 동일)
// String c2 = "Hello JAVA!"; // 같은 메모리를 공유
//
// String c3 = new String("Hello JAVA!"); //제품1 : 메모리(별개의 주소)
// String c4 = new String("Hello JAVA!"); //제품2 : 메모리(별개의 주소)
// System.out.println(c1 == c2); //같은 메모리 주소 > true
// System.out.println(c3 == c4); //다른 메모리 주소 >false
// System.out.println(c3.equals(c4)); //equals() : 값을 비교, "Hello JAVA!" == "Hello JAVA!" >true

System.out.println(c1.equals("Hello java!"));
//자바에서 대소문자는 다르게 취급되므로 false를 반환합니다.
System.out.println(c1.equals("Hello JAVA!"));


}


}

 

실행결과

false
true
false
true

 

-자바에서 문자열을 비교하고 싶을 때는 equals()라는 메서드를 사용해야 함(숫자 상관x) 

 

5.논리 연산자(&&,||,^)

-논리 연산자는 여러 가지 조건을 동시에 검사할 때 사용하는 연산자로서, 두 항의 값이 boolean 값일 경우에 사용하는 연산자임(true, false)

-논리 연산자에는 AND(&&)와 OR(||), 그리고 XOR(^) 연산자가 있으며, AND는 두 항이 모두 참(true)일 경우에만 결과가 참(true)이 되며, OR(||)는 두 항 중 하나라도 참(true)이면 결과는 참(true)이 됨. XOR는 두 항이 서로 다를 경우에는 참(True), 같으면 거짓(false)이 됨

종류 연산자 사용 예 설명
AND && a && b a가 참이고 b이면 참이 됨
OR || a || b a 또는 b 중 하나라도 참이면 참이 됨
XOR ^ a ^ b 두 개의 비트가 서로 다를 때 참/ 다를 때 거짓

 

<논리 연산자를 사용하는 프로그램>

 

Exam-10.java

package ch01;


public class Ex10 {


public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 10;
System.out.println(5 < a && a < 15); // 5<a<15 true && true > true
System.out.println((5 < a && a < 15) && a % 2 == 0); // 5<a<15 (true && true) && true > true

a = 4;
System.out.println((5 < a && a < 15) && a % 2 == 0); // (false && true) : false && true > false
System.out.println((5 < a && a < 15) || a % 2 == 0); // (false


}


}

 

실행결과

true
true
false
true