자바 54

자바(java)의 연산(1)

연산 우선 순위 사칙 연산에서 곱셈, 나눗셈이 덧셈, 뺄셈보다 우선 순위가 높듯이, 프로그램 연산에도 우선 순위가 존재한다. 그 순위는 다음과 같다. 단항 연산자 (++, --, !, ~) 비교 연산자 (, >) 논리 연산자 (&&, ||, &, |, ^) 이항 연산자 (+, -, *, /, %) 삼항 연산자 (>, :) 대입 연산자 (=, +=, -=, *=, /=) public class ex15 { public static void main(String[] args) { // 연산자 // 연산자 우선순위 : 같은 줄에서 먼저 처리되는 순서 // 예) int i = 3 * 2 + 10 / 5; //출력값 8 // 단항연산자 - 우선순위 높음 // 이항연산자 // 삼항연산자 // 대입연산자 - 우선수위..

공부/java 2023.01.23

자바(java)의 버퍼 메모리

버퍼 메모리란, 앞선 코드를 처리하느라 밀린 뒷 코드들을 일시적으로 저장하는 공간이다. 이해를 쉽게 하기 위해 비유를 들어보자. 인기 있는 식당에 가면 자리가 만석일 경우, 대기표를 주면서 준비된 의자에 앉아서 자리가 날때까지 기다리게 한다. 자바 프로그램도 마찬가지다. 먼저 온 손님(데이터)으로 인해 나중에 온 손님의 주문을 처리할 수 없을때, 버퍼 메모리(의자)에 데이터를 대기시키고 나중에 실행한다. 덕분에 데이터 손실이 일어나지 않고, 밀린 요청사항(코드)를 모두 처리할수 있다. 임시 저장소라는 측면에서 캐시 메모리와 하는 일이 비슷하지만, 캐시는 빠른 처리를 위해 자주 쓰이는 데이터를 보관하는 공간이고, 버퍼는 데이터 유실이 일어나지 않도록 보관하는 공간이라는 차이점이 존재한다.

공부/java 2023.01.23

자바 데이터 타입 변환(형변환)

형변환 (데이터 타입 변환) 형변환은 자동형변환(묵시적)과 강제형변환(명시적)이 존재한다. 자동형변환은 프로그램이 코드를 해석하면서 알아서 상황에 맞춰 자동적으로 형식을 변환하는 것을 의미한다. 자동적으로 시행됨으로 사용자가 따로 신경쓸 것은 없다. 반대로 강제로 형변환을 사용할때는 숫자의 크기에 유의해야 한다. 작은 형식을 큰 형식으로 변환하는 과정은 큰 문제가 없지만, 큰 형식을 작은 형식으로 변환할 때 문제가 생긴다. 변환된 작은 형식에 할당된 용량으로 표현 불가능한 값일때, 값이 짤리거나 소수점이 사라지는 일이 생기기도 한다. 기본형들의 크기는 다음과 같다. 정수형: long(8byte) > int (4byte) > short(2byte) > byte (1byte) 실수형: double(8byte..

공부/java 2023.01.22

자바(java)의 데이터 타입

데이터 타입 모든 데이터는 그에 맞는 형식이 존재한다. 형식은 크게 값타입과 참조타입으로 나눠진다. 값타입: 기본형 8개. 기본적으로 주어지는 정해진 크기의 용량을 가진다. 참조타입 : 문자열형, 함수형, 객체형이 존재한다. 직접적인 데이터가 아닌, 데이터들이 담긴 주소값을 담는다. 데이터 타입은 기본형 8개와 나머지로 이뤄진다. 기본형 (괄호 안의 숫자는 해당 형식들이 선언될때 가지는 메모리 용량이다. 단위는 byte.) 1. 정수형 : int(4), long(8), short(2), byte(1), char(2) 2. 실수형: double(8), float(4) 3. 논리형 : boolean (1) 참조형 문자형 : char 로 선언. 오직 한개의 문자만 담을 수 있으며 단따옴표(' ')를 통해 표현..

공부/java 2023.01.22

타임리프 사용법

StaticWeb(정적 웹페이지) static폴더에 html파일을 만들어야 한다 안의 데이터가 입력값이나 다른 요인에 따라 동적으로 변하지 않는 정적인 웹페이지를 말한다. **스프링부트는 따로 맵핑해주지 않아도 초기 값으로 index.html을 초기 페이지로 감지한다. 이는 templates폴더에 있건, resources폴더에 바로 넣건 알아서 찾아진다. **맵핑(mapping) : 미리 url을 지정해두고, 사용자로부터 어떤 요청이 왔을때 자동적으로 해당 url로 가도록 설정하는 것. 스프링부트에 오신 것을 환영합니다. 서브페이지로 이동 파일 다운로드 링크(png,jpg,pdf,zip) 이미지파일 다운로드 링크 서브페이지 입니다. package com.study.springboot; import org..

공부/java 2023.01.22

자바(java)의 출력 함수

출력함수의 세종류 1. println : 문자열을 출력하고 줄바꿈을 함 (ln은 Line의 약자) 2. print : 문자열을 출력함. 줄바꿈X. 3. printf : c언어 스타일의 출력문. Format(형식화)된 출력문. 1. println public class ex01 { public static void main(String[] args) { System.out.println("java programming~"); System.out.println("java programming~"); } } 결과: java programming~ java programming~ 내용이 없는 println은 줄바꿈만 한다. public class ex01 { public static void main(Strin..

공부/java 2023.01.22

18일차 복습

GUI 기반 소프트웨어 만들기 GUI(Graphic User Interface) 우리가 흔히 보는 창을 띄워서 버튼을 눌러서 입력하고 x표시를 눌러 화면을 끄는 창(Interface)를 말한다. 요즘은 SAAS(서비스형 소프트웨어)라고 해서 대부분 웹 브라우져로 해결할수 있기 때문에 설치 소프트웨어 자체가 사장되어가는 분위기다. 특히 자바같이 연식이 있는 GUI라면 더더욱 그렇다. 크게 AWT와 SWING 두개의 방식이 존재한다. AWT는 저수준의 UI를 지원하며 Frame, Panel을 사용한다. 반대로 향상된 SWING는 고수준의 UI를 지원하며, JFrame, JPnel을 사용한다. 여기서 Frame란 윈도우창 뼈대, Panel이란 컨트롤 컨테이너, 즉 각종 조작 버튼, 입력창 등을 포함한 프레임 ..

공부/java 2022.12.08

16-17일 통신

통신 통신은 HTTP와 소켓(socket)통신으로 나눠진다. HTTP통신은 웹 브라우저와 같이 클라이언트(사용자)가 서버에 요청을 보낼때만 응답하는 통신이다. 예를 들어 우리가 특정 사이트에 로그인 할때, 우리는 "이 정보(ID/PW)가 맞는지 확인해주세요." 하는 식의 요청을 보내고 그에 맞춰 웹사이트에서는 "맞네요" 또는 "아닙니다" 와 같은 정보를 돌려주는 것이다. 반면 소켓 통신은 양방향 통신이다. 특정 포트(창구)를 통해 서버와 클라이언트가 실시간으로 정보를 주고받으며 소통할 수 있다. 채팅, 게임과 같이 응답 흐름이 양방향인 경우는 소켓통신이다. 연결지향적이며, 포트가 공개되어 있지 않아 제3자가 접근하기 힘들다. 달리 TCP/IP통신이라고 말하기도 한다. 포트, ip주소등, 서로 연결하기 위..

공부/java 2022.12.06

16일차 복습

본래 어제 올려야 했으나, 막혔던 문제를 하루종일 붙잡고 있었던 관계로 하루 늦게 작성한다. IO (Input Output) 파일 읽고 쓰기 크게 3종류가 존재한다. 1. 바이트(byte)단위 2. 문자 단위 3. 대용량 - 속도 개선 1. 바이트 단위 파일쓰기 FileOutputStream 클래스: 주어진 file객체가 가르키는 파일을, 바이트 스트림으로 읽기 위한 클래스. 객체를 생성할때 FileOutputStream ( file ) 형식의 생성자 함수값을 넣어줘야 한다. 파일 경로를 넣어줄 수 도 있고, 파일이름을 넣을 수도 있다. public class ex121 { public static void main(String[] args) { String filePath = "./out1.txt"; ..

공부/java 2022.12.06

15일차 복습

콜렉션 클래스 리스트, 맵, 셋을 포함하는 상위 클래스. Hash란? 초보자인 만큼, 깊게 파지 않고 쉽게 설명하자. 간단하게 말해 Arrray List의 문제를 해결하기 위해서 나온 방식이다. 크게 map과 set이 존재한다. ArrayList는 검색이 빠를지 모르나 아이템의 추가/삭제가 힘들다. 그러나 map은 인덱스를 특정한 값과 연결시켜 저장하기에 (Key와 Value) 필요한 데이터만 호출하는데 편리하다. 또한 set는 중복을 허용하지 않고 순서가 없다는 특징, 즉 인덱스가 부여되지 않는다는 점 덕분에 내부에 어떤 값이 존재하는지 빠르게 확인할 수 있다. HashMap Key와 Value값으로 저장된다. 여기서 Key란, 인덱스 값에 또다른 값을 저장한 것이다. Map map = new Hash..

공부/java 2022.12.04