본문 바로가기

JAVA

(158)
불변/가변객체2 String str1 = "안녕"; String str2 = "안녕"; String str3 = new String("안녕2"); // --> 새로운 문자열 객체를 생성하는 방법 중 하나입니다. // --> 이 코드는 "안녕2"라는 문자열을 가진 새로운 문자열 객체를 생성하고, 그것을 str3 변수에 할당합니다. // --> 이 경우에는 항상 새로운 문자열 객체를 생성하게 됩니다. System.out.println(str3 + "str3"); String str4 = "Hello, 안녕, aa"; // String. --> static인것들이 보임(위에 s붙은 애들) // static인것들 : 함수다! 외부에서 입력받은 값으로 해결하는 애들 // static API들은 무조건 '클래스명.'으로 호출하기 ..
라이브러리 // 라이브러리 : // --> 프로그래밍에서 자주 사용되는 코드, 함수, 클래스, 모듈 또는 패키지의 모음 // --> 라이브러리를 사용하려면 해당 라이브러리를 프로젝트에 포함하고, 필요한 클래스 또는 함수를 가져와 사용하면 됨 // API검색했을 때 -> 초록색 : public, 위에 s : static, 위에 f : final // 예시 --> 저 API가 뭔지몰라도 쓸 수는 있겠찌. double d = Math.pow(5, 4); System.out.println(d); long a1 = Math.floorDiv(17, 2); System.out.println(a1); // math클래스의 필드에 있는 애들 System.out.println(Math.E);// static final : 완벽한 상..
Enum(열거형) // Enum // -> 열거형은 상수 집합을 나타내는 데 유용하며, 코드의 가독성을 향상시킬 수 있습니다. public enum Season { SPRING, SUMMER, FALL, WINTER } public static void main(String[] args) { // Season은 열거형이며, SUMMER은 Season 열거형의 상수 중 하나입니다. // currentSeason 변수에 현재 계절을 나타내는 값으로 SUMMER를 할당합니다. Season currentSeason = Season.SUMMER; System.out.println("Current season is " + currentSeason); if (currentSeason == Season.SUMMER) { System.o..
Class 설계원칙 // // // 캡슐화 & 정보의 은닉 // 응집도는 높이고, 결합도는 낮추자! // // 1. ★★★ 단일 책임 원칙 (SRP - Single Responsibility Principle) ★★★ 우선순위임! // : 각 클래스와 메소드들은 단 하나의 책임만 가져야 하며, 변경 이유는 하나여야 함. // --> for문안에 for문을 넣지 말자. 클래스를 만들어서 for안에 넣는 식으로 변경하기. (가능하다면) // // 2. 개방-폐쇄 원칙 (OCP - Open-Closed Principle) // : 소프트웨어 엔티티는 확장에는 열려 있고, 수정에는 닫혀 있어야 함 // // 3. 리스코프 치환 원칙 (LSP - Liskov Substitution Principle) // : 서브타입은 슈퍼타입으로..
네트워크 관련 이론 ## IP ★★★ "Internet Protocol"의 약자로, 컴퓨터 네트워크에서 기기와 호스트 간의 통신을 위해 사용되는 주소 체계입니다. IP 주소는 컴퓨터, 서버, 라우터, 스마트폰 또는 다른 네트워크 기기를 식별하는 데 사용됩니다. # IP 주소는 다음 두 가지 주요 형식으로 나타낼 수 있습니다: IPv4 (Internet Protocol version 4): 32비트 숫자로 표현됩니다. 주소 형식은 "x.x.x.x"로, 각각의 "x"는 0부터 255 사이의 10진수 숫자입니다. 예를 들어, "192.168.1.1"은 흔히 사용되는 IPv4 주소입니다. 그러나 IPv4 주소 공간의 부족으로 인해 IPv6가 개발되었습니다. IPv6 (Internet Protocol version 6): IPv6 ..
Polymorphism활용_TV 1. Main public static void main(String[] args) { // 조립식 설정코드 TvFactory factory = new TvFactory();// 기본생성자로 불러오기. Tv tv1 = factory.create("Samsung");// 여기서 삼성을 엘지로 손수 바꿔줘도 되겠지만은..... Tv tv2 = factory.create("Lg"); // 실행코드 User user = new User(); user.setTv(tv2);// 여기에 tv1으르 넣는지 2를 넣는지에 따라 출력이 달라짐. user.watchTv(); } 2. TV(interface) // 자바 문법에서의 인터페이스? API들의 표준을 제공하는 것. // 1. 조립식 프로그래밍(-> 오버라이딩을 이용..
Thread활용_ChattingRoom_serverMain 1. ServerRecieveThread class class ServerRecieveThread extends Thread{ private String nickName; private Socket socket; public ServerRecieveThread(Socket socket) { this.socket = socket; } @Override public void run() { try { DataInputStream dis = new DataInputStream(socket.getInputStream()); while(true) { int command = dis.readInt(); // 1. 닉네임 설정 / 2. 메세지보내기 / 3. 종료 if(command == 1) { nickName = d..
Thread활용_ChattingRoom_clientMain 1. recieveThread class class RecieveThread extends Thread{ private Socket socket; public RecieveThread(Socket socket) { this.socket = socket; } public void run() { try { DataInputStream dis = new DataInputStream(socket.getInputStream()); while(true) { String message = dis.readUTF(); System.out.println(message); } }catch (Exception e) { //e.printStackTrace(); System.out.println("접속이 종료되었습니다"); } ..