JAVA/Java: 149개의 글
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/2MX2E/btq0y0l8RTh/0d5Ichc9kaqLyUldj7ufGK/img.jpg)
1. static 이란? 객체마다 데이터를 가지고 있는데, 이걸 공유해야 할 상황에 static을 쓴다. 여러 객체의 메소드들이 동시에 접근, 수정할 수 있는 전역변수같은 느낌이다. static 키워드를 사용한 변수를 클래스 변수라고 한다. 즉 객체가 아닌 클래스의 변수이기 때문에 new로 객체를 안만들었어도 사용이 가능하다. ex. System.out.println(Test.count); 2. 메모리 상 위치 클래스 변수는 JVM Runtime Data Area에서 Method area 에 들어간다. 여기서 클래스는 Method area에, 객체는 heap에 올라간다. static이 붙으면 클래스의 시그니처?같은 것들이 메모리 상에 로딩되면서 같이 올라가는 것이다. 따라서 아래에서 설명할 static ..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/bcJuiX/btq0vPyE6jv/fDGNK4c0YVkh4QXfHhKwE1/img.jpg)
1. 접근제어자의 종류 현재 클래스 동일 패키지 상속받은 하위클래스 모든 클래스 public O O O O protected O O O X private O X X X (default) O O X X public : 모든 외부에서 직접 접근하거나 호출 가능 protected : 현재 클래스와 동일 패키지이거나 다른 패키지이더라도 상속 시에는 접근하거나 호출 가능 private : 현재 클래스 밖에서는 사용X (default) : 현재 클래스와 동일한 패키지 내에서만 접근하거나 호출 가능, 뭐 안붙이면 이거다. 2. 주로 어디다 쓰는가 클래스는 public 과 default만 선택가능하다. 필드는 다 쓸 수 있지만 보통 private로 한다. 완벽한 상수는 public static을 주로 사용한다. 메소드..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/y6Z8d/btq0vQjXsyV/PH64tkKJV2uXXhTA7FPC2K/img.jpg)
1. 생성자란? 객체를 생성할 때 init하는 것이다. 생성자는 오로지 클래스에서 객체를 생성(new)할 때만 사용된다. 몇가지 특징으로는 생성자의 이름은 클래스명과 동일하고, 리턴 타입이 없다. 2. 기본 생성자 생성자를 따로 정의하지 않고 클래스를 만들더라도, 객체는 만들어진다. 이것은 컴파일러가 default 생성자를 끼워넣었기 때문이다. // Test.java public class Test { public static void main(String[] args) { System.out.println("hello world"); } } // javap -c Test.class C:\Users\sjh836\Desktop>javap Test.class Compiled from "Test.java" p..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/bAziGH/btq0vQ5mpzN/pcViPdCX0d30pve7KHc7F0/img.jpg)
참조문서 : https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html 1. 예외처리란? Exception Handling 이라고 하며, 잘못된 하나로 인해 전체 시스템이 무너지는 결과를 방지하기 위한 기술적인 처리이다. java에서는 예외와 에러도 객체로 처리한다. 예외가 주로 발생하는 원인 사용자의 잘못된 데이터 입력 잘못된 연산 개발자가 로직을 잘못 작성 하드웨어, 네트워크 오작동 시스템 과부하 2. Throwable 클래스 (클릭하면 크게 보인다..) Throwable 클래스는 예외처리를 할 수 있는 최상위 클래스이다. Exception과 Error는 Throwable의 상속을 받는다. 유명한 것들만 정리해보았으며, 실제로 더 많다. i..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/4I9iH/btq0vQ5hqGR/hgGlvikOsa6UX7j77IhVW1/img.png)
참조문서 : https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html 1. 쓰레드란? 자바의 메인메소드 역시 하나의 실행흐름으로서, 메인 쓰레드에 해당한다. 이것은 main() 메소드에서 Thread.currentThread().getName(); 를 통해 확인이 가능하다. 쓰레드를 이용하면 하나의 프로세스에서도 병렬적(동시적)으로 처리, 즉 여러 개의 처리 루틴을 가질 수 있다. 단순 반복의 코드를 실행할 때도 여러 개의 쓰레드를 만들어서 분리 시킨 뒤 결과 데이터를 받아 합치면 그만큼 시간을 절약할 수 있다. 특히 짧은 시간 내에 많은 사용자를 처리해야하는 대용량 시스템이나 CPU 활용을 극대로 해서 처리해야 하는 복잡한 연산 작업 등에 많이 ..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/YLVyb/btq0Ao7dKZT/9Gh5v9YSzkWBEj4enAAN8k/img.png)
참조문서 : https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html 1. 컬렉션이란? java.util 패키지에서 가장 핵심, 여러 개의 객체를 보관할 수 있게 만들어진 클래스들(자료구조) 주요 용어 리스트(List) : 순서를 가지고 있으며, 중복을 허용하는 보관 구조(인덱스 번호가 핵심) 세트(Set) : 순서를 가지지 않고, 데이터의 중복을 허용하지 않는 구조 맵(Map) : 키-값을 가지며, 키를 가지고 원하는 데이터를 검색하는 구조 Element : 자료구조 안에 들어가는 데이터를 의미 시간복잡도 사진출처: http://bigocheatsheet.com/ 2. *List 계열 리스트는 내부적으로 무한대의 배열을 가진다. Array..
![](http://i1.daumcdn.net/thumb/C200x150/?fname=https://blog.kakaocdn.net/dn/qAobe/btq0zZmkJhu/OKo1asBYY36pTC75SocV80/img.png)
1. JVM(Java Virtual Machine)이란? jvm은 java를 운영체제로부터 독립적으로 실행시켜주는 핵심이자 원리이다. 예를들어 C언어의 경우 소켓프로그램을 윈도우에서 짜면, 리눅스에서는 같은 코드로 돌아가지 않는다. 컴파일조차 실패할거다. 헤더파일도 다르고 함수명도 전부 다르니ㅋㅋ 그렇지만 java는 소켓프로그램짜두면 윈도우든 리눅스든 맥이던 플랫폼에 상관없이 돌아간다. 2. JVM 구성요소 JVM은 위 그림처럼 4가지 구성 요소를 가지고 있다. 3. Class Loader .java 파일을 javac로 컴파일하면 바이트코드(.class)가 나온다. 이 파일을 컴파일 타임이 아닌 런타임에(동적으로) 메모리로 올려서 실행하는 부분이 Class Loader이다. ※ Class Loader에 ..
equals 대소문자를 구분하며 문자열과 문자열을 비교하여 true/false 를 결과값으로 반환합니다. public class EqualsTest{ public static void main(String[] args){ boolean result; String target = "hello"; // result : true result = target.equals("hello"); System.out.println(result); // result : false(대소문자 구별) result = target.equals("HELLO"); System.out.println(result); // result : false result = target.equals("helloooo"); System.out.pr..
import org.apache.commons.lang.math.NumberUtils;import org.apache.commons.lang.StringUtils; // 자연수 + 공백assertFalse(StringUtils.isNumeric(null));assertTrue (StringUtils.isNumeric(""));assertFalse(StringUtils.isNumeric(" "));assertTrue (StringUtils.isNumeric("0"));assertTrue (StringUtils.isNumeric("123"));assertFalse(StringUtils.isNumeric("12 3"));assertFalse(StringUtils.isNumeric("ab2c"));assertF..
mybatis에서 다중 insert를 해야 될 일이 생겼다. List 형태의 객체를 이용해서 insert를 해야 하는데 두가지 방법이 있다.한가지는 단일 insert mapper를 구현하고 insert mapper를 List를 이용해 반복해서 insert한다.또 다른 방법이 이제 부터 설명할 foreach를 이용한 다중 insert이다.두가지 모두 예제를 통해서 설명해 보겠다. 1. UserDto 클래스?12345678910111213141516171819202122232425public class UserDto { private long seq; private String username; private int age; public long getSeq() { return seq; } public vo..