목록JAVA (60)
The Debugging Chronicles : "코드의 미학"
package class01;import java.util.ArrayList;// 컬력션 프레임워크// 배열리스트public class Test01 { public static void main(String[] args) { // 배열[] : 개수가 정해져 있음, 관련성, 자료형 // 배열리스트 : 개수 무제한 Generic// ArrayList al = new ArrayList(); ArrayList al = new ArrayList();// al.add(3.14);// al.add("apple");// al.add('A');// al.add(10); al.add(100); al.add(20); al.add(1,123); // 오버로딩 System.out.println(al..
자바의 추상화 자바 웹 개발을 하다보면 JAVA가 아닌 언어를 사용할 확률이 점점 높아집니다.JAVA를 기반으로한 회사마다의 새로운 언어 or 프레임워크가 많다 그 회사에서만 사용하는 언어 혹은 기술이 있다만약 JAVA만 공부하면, 다른 언어를 만났을 떄 ….. 어 안배워서 모른다,… 라는 이야기가 나오면 개발자 인생 끝…. 세상 모든 JAVA기반 언어들이 공통으로 하는 모토 혹은 기준 같은게 있는데, 그게 바로 “추상화”개념을 반드시 가지고 있다는 점 그래서 웹 개발 책이나 인강을 보면 잘안나올 수도 있다, 당장 안쓰긴함 >>> 세상 모든 언어들이 이 “추상화”개념을 바탕으로 뭔가 한다는 점…. ——————————————————————————— 추상화의 역사 네모 클래스, 원 클래스, 세모 클래스가..
package class05;class Shape { String name; double area; String color; Shape(String name) { this(name,"검정"); } Shape(String name,String color) { this.name=name; this.color=color; this.area=0.0; } void draw() { System.out.println(this.color+"색 "+this.name+"모양 넓이 : "+this.area); } void setArea() { System.out.println("Shape에서 호출한 setArea()"); }}class Circle extends Shape { int radius; static f..
package class02;// [상속]// 부모 클래스(상위 클래스)의 코드를// 자식 클래스(하위 클래스)가 전부 '재사용' 할 수 있다.// "유지보수 용이성 극대화"// 코드를 잘게잘게 잘라야함 == 모듈화(컴포넌트화,함수화)// --->> 코드 재사용성 증가// 오류 발견시 수정을 적게함// --->> 오류의 파급효과 절감// 결과를 다양하게 추출할수있음// 개발시간 단축,개발비용 축소class Point { int x; int y; Point(int x,int y){ this.x=x; this.y=y; System.out.println("부모 생성자 호출됨"); } void printInfo() { System.out.println("("+this.x+","+this.y+")");..
package class01;//원// 반지름// 넓이 = 반지름*반지름*PI(3.14)class Circle{ String name; int radius; // 반지름 double area; // 넓이 // final == 변수값 고정 == 상수화 static final double PI = 3.14; //원주율 // 멤버변수 필드 속성 attribute property // 멤버변수 초기화 // 생성자에서 초기화 // static 클래스변수 공유자원 // 클래스에서 초기화 //객체 c1의 값 을 변경해도, // 객체 c2의 값에 영향 xxx ==> "객체와 무관하게" static // 주인이 객체 x 클래스 o Circle (String name , int radius){// this.PI = ..
package class01;class Product { int num; //PK String name; int cnt; int price; //생성자 오버로딩 Product(int num, String name){ this.num = num; // 시스템에서 부여하는 값 ->외부에서 가져와야함 this.name = name; //상품명 this.cnt = 0; //재고; this.price = 0; //가격; } Product(int num, String name,int cnt, int price){ this.num = num; // 시스템에서 부여하는 값 ->외부에서 가져와야함 this.name = name; //상품명 this.cnt = cnt; //재고; this.price =..
package class06;// 특정 멤버변수의 값을 반드시 넣도록 "강제"하고 싶을 때// "강제" : 개발할 떄 강제하다는 좋은것 , 지정하는 것, 오더를 내리는 것.// 실수를 줄여준다// 멤버변수의 값을 '강제'하고 싶을 때는 // == 생성자를 선언(정의) 하면된다class Pokemon{ String name; int level; int exp; Pokemon(String name){ // 강제할 항목 // this 생략하지 않는다. this.name=name; // 멤버 변수 // 외부 변수 // 외부에서 받아온 name 값을 멤버 변수 name에 저장 this.level = 5; this.exp = 0; // 모든 멤버 변수 생성자 안에서 초기화를 직접 작성하는 것을..
참조에 의한 호출 call By referencepackage class06;public class Test02 { public static void test(int[] datas) { datas[0]=0; } public static void main(String[] args) { // new 연산자 : 개발자 메모리 영역(heap)에 공간을 만들어줘. int[] datas = new int[3]; for(int i =1; i Call by Value (값에 의한 호출)Java는 기본적으로 'Call by Value' 방식을 사용하고 있다.메서드로 변수를 전달할 때 값이 복사되어 전달되는 방식을 의미한다. 메서드에 전달된 값은 인자를 복사해서 보낸 것이므로 메서드 내에서 변경..
메서드 시그니처란 메서드의 이름과 매개변수의 순서, 타입, 개수를 의미합니다. 메서드 시그니처(Method signature)란 무엇일까?메서드 시그니처는 자바에서 프로그래머가 디자인한 메서드 구조를 의미하며 메서드 이름과 파라미터리스트로 구성됩니다. 작성된 코드는 Java 컴파일러에서 오버로딩된 함수들은 메서드 시그니처를 통해 식별합니다.같은 이름으로 선언하고 다른 파라미터 리스트(Signature)를 가진 것을 메서드 오버로딩(Method Overloading)이라고 부릅니다.public int square(int x, int y) { ///}public double square(double x, double y) { ///}하나의 클래스 안에서는 2개의 같은 시그니처를 가질 수 없습니다. 만약 ..
1유형package class02;// 함수// input 기능 output// 기능명은 어떤 기능이있는 지 바로 알수 있게 지어야함// input 입력 인자 인수 arguments 매개 변수 파라미터 parameter// output 결과값 반환 return 리턴 출력값//함수는 4가지 유형// input x output x// input o output x// input x output o// input o output o//함수 1 유형// input outputxpublic class Test01 { // 함수 선언 자리 // public output 함수명 (input) { // void == output이 없다 // static == 객체와 무관하게 public static void hell..