package array;
public class ArgsTest {
public static void main(String[] args) {
System.out.println(args.length);
System.out.println(args[0]+":"+args[1]);
int val2 = Integer.parseInt(args[1]);
//String -> int로 변환
System.out.println(Integer.parseInt(args[0])+ val2);
}
}
Integer in = new Interger();
in.parseInt() //일반적인 클래스의 메소드를 사용하는 방법이나
static이 추가된 메소드는 클래스명.메소드명()
명령행매개변수로 값을 5개 입력받아 총점과 평균을 출력할 수 있도록 작업
package array;
public class ArgsExam {
public static void main(String[] args) {
int sum = 0;
for(int i=0;i<args.length;i++) {
sum = sum+ Integer.parseInt(args[i]);
}
System.out.println("총점:"+sum);
System.out.println("평균:"+(sum/args.length));
//향상된 for문 ver
int sum2 = 0;
for(String val:args) {
sum2 = sum2 + Integer.parseInt(val);
}
System.out.println("총점:"+sum2);
System.out.println("평균:"+(sum2/args.length));
}
}
생성자 추가
public Constructor() {
}
public Constructor(String name, String id, String pass, String addr) {
this.name = name;
this.id = id;
this.pass = pass;
this.addr = addr;
System.out.println("매개변수4개 생성자");
}
public Constructor(String name, String id, String pass, String addr, String telNem, String ssn, String nickName) {
this(name, id, pass, addr);
this.telNem = telNem;
this.ssn = ssn;
this.nickName = nickName;
System.out.println("매개변수7개 생성자");
}
public Constructor(String name, String id, String pass, String addr, String telNem, String ssn, String nickName,
int point) {
this(name, id, pass, addr, telNem, ssn, nickName);
this.point = point;
System.out.println("매개변수8개 생성자");
}
package oop.basic.constructor;
public class Constructor {
private String name;
private String id;
private String pass;
private String addr;
private String telNem;
private String ssn;
private String nickName;
private int point;
// 기본생성자
public Constructor() {
//생성자내부에서 객체가 생성될때 실행될 코드를 정의
System.out.println("Constructor 기본생성자");
}
// 매개변수가 있는 생성자
public Constructor(String name, String id, String pass, String addr) {
//4개의 매개변수를 각 멤버변수에 할당
this.name = name;
this.id = id;
this.pass = pass;
this.addr = addr;
System.out.println("매개변수4개 생성자");
}
//insert용
public Constructor(String name, String id, String pass, String addr, String telNem, String ssn, String nickName) {
this(name, id, pass, addr);
this.telNem = telNem;
this.ssn = ssn;
this.nickName = nickName;
System.out.println("매개변수7개 생성자");
}
//select용
public Constructor(String name, String id, String pass, String addr, String telNem, String ssn, String nickName,
int point) {
this(name, id, pass, addr, telNem, ssn, nickName);
this.point = point;
System.out.println("매개변수8개 생성자");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getTelNem() {
return telNem;
}
public void setTelNem(String telNem) {
this.telNem = telNem;
}
public String getSsn() {
return ssn;
}
public void setSsn(String ssn) {
this.ssn = ssn;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
}
package oop.basic.constructor;
public class Prob {
public static void main(String[] args){
Rectangle rectangle01 = new Rectangle(10, 20, "청색");
rectangle01.calculateArea();
System.out.println("1 : "+rectangle01.getColor()+" 직사각형 면적 : "+rectangle01.getArea());
Rectangle rectangle02 = new Rectangle(20, 20);
rectangle02.calculateArea();
System.out.println("2 : "+rectangle02.getColor()+" 직사각형 면적 : "+rectangle02.getArea());
Rectangle rectangle03 = new Rectangle();
rectangle03.setHeight(10);
rectangle03.setWidth(10);
rectangle03.setColor("녹색");
rectangle03.calculateArea();
System.out.println("3 : "+rectangle03.getColor()+" 직사각형 면적 : "+rectangle03.getArea());
}
}
package oop.basic.constructor;
public class Rectangle {
private int height;
private int width;
private String color;
private int area;
public Rectangle() {
//매개변수없는 기본생성자 하나 있어야함
}
public Rectangle(int height, int width) {
this.height = height;
this.width = width;
this.color = "흰색";
//멤버변수에 웬만하면 값을 안주는게 나아서 여기에 주기
}
public Rectangle(int height, int width, String color) {
this(height,width);
this.color = color;
}
public Rectangle(int height, int width, String color, int area) {
this(height,width,color);
this.area = area;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public void calculateArea() {
area = width * height;
}
public int getArea() {
return area;
}
}
package oop.basic.constructor;
import java.util.Scanner;
public class TestRectangle {
public static void main(String s[]){
Scanner keyboard = new Scanner(System.in);
Rectangle2 rec1 = new Rectangle2();
System.out.println("첫번째 직사각형의 색깔: ");
rec1.setColor(keyboard.next());
System.out.println("첫번째 직사각형의 가로: ");
rec1.setWidth(keyboard.nextInt());
System.out.println("첫번째 직사각형의 세로: ");
rec1.setLength(keyboard.nextInt());
Rectangle2 rec2 = new Rectangle2();
System.out.println("두번째 직사각형의 색깔: ");
rec2.setColor(keyboard.next());
System.out.println("두번째 직사각형의 가로: ");
rec2.setWidth(keyboard.nextInt());
System.out.println("두번째 직사각형의 세로: ");
rec2.setLength(keyboard.nextInt());
System.out.println(rec1.getColor() + " 직사각형의 넓이는 " + rec1.area() + "이고 둘레는 " + rec1.perimeter() + "입니다.");
System.out.println(rec2.getColor() + " 직사각형의 넓이는 " + rec2.area() + "이고 둘레는 " + rec2.perimeter() + "입니다.");
// TODO 1) 두 직사각형의 넓이를 비교하십시오.
if(rec1.area()>rec2.area()) {
System.out.println("넓이는 "+rec1.getColor()+" 직사각형이 더 큽니다.");
}else if(rec1.area()<rec2.area()) {
System.out.println("넓이는 "+rec2.getColor()+" 직사각형이 더 큽니다.");
}else {
System.out.println("넓이는 같습니다.");
}
// TODO 2) 두 직사각형의 둘레를 비교하십시오.
if(rec1.perimeter()>rec2.perimeter()) {
System.out.println("둘레는 "+rec1.getColor()+" 직사각형이 더 큽니다.");
}else if(rec1.perimeter()<rec2.perimeter()) {
System.out.println("둘레는 "+rec2.getColor()+" 직사각형이 더 큽니다.");
}else {
System.out.println("둘레는 같습니다.");
}
}
}
package oop.basic.constructor;
public class Rectangle2 {
private String color;
private int width;
private int length;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
//면적계산- 조건만족을 위해 위에 변수정의하지않고 바로하기
public int area() {
int result = width * length;
return result;
}
//둘레계산
public int perimeter() {
return (width + length)*2;
}
}
package oop.basic;
public class StaticDemo {
int num; //인스턴스 변수
static int staticNum;//모든객체가 공통으로 사용하는 값이나 누적된 값을 저장하기 위해서
public StaticDemo() {
num++;
staticNum++;
}
public void display() {
System.out.println("num=>"+num+", staticNum=>"+staticNum);
}
}
package oop.basic;
public class StaticDemoTest {
public static void main(String[] args) {
StaticDemo obj1 = new StaticDemo();
obj1.display();
System.out.println("인스턴스변수=>"+obj1.num+",클래스변수=>"+StaticDemo.staticNum);
StaticDemo obj2 = new StaticDemo();
obj2.display();
System.out.println("인스턴스변수=>"+obj2.num+",클래스변수=>"+StaticDemo.staticNum);
StaticDemo obj3 = new StaticDemo();
obj3.display();
System.out.println("인스턴스변수=>"+obj3.num+",클래스변수=>"+StaticDemo.staticNum);
//API에서 제공되는 static변수도 동일한 방법으로 접근
System.out.println(Math.random());
System.out.println(Math.PI);
}
}

public class StaticMethodDemo {
static int staticNum;//클래스변수
int num;//인스턴스변수
//static블럭 - 클래스 로더에 의해서 클래스에 대한 정보가 메소드 영역에 올라갈때 한번 실행되는 영역
static {
//static멤버변수의 값을 초기화할때 여기서
staticNum = 1000;
System.out.println("static블럭 - 클래스가 로딩될때 한번실행되는 코드를 정의할 목적");
System.out.println("static블럭 - 자원에 대한 엑세스");
System.out.println("static블럭 - static멤버를 초기화할 목적으로 사용");
}
//객체의 고유한 값을 제어하는 기능이 아니라 일반적인 기능들도 static을 추가할지 고려해봐야함
public static void printSize(String str) { //-------정적메소드
//매개변수로 전달되는 문자열의 사이즈를 출력하는 기능
System.out.println("사이즈=>"+str.length());
}
public static void print() {//-------정적메소드
System.out.println("===================================");
//1.static메소드에서 static메소드를 호출하기
//=>일반적인 접근방식
display();
}
//static멤버를 제어하는 메소드는 static을 추가
public static void display() {//-------정적메소드
System.out.println(staticNum);
}
public void show() {//-------인스턴스 메소드
//2.non-static메소드에서 non-static메소드를 호출
//=>일반적인 접근방식
test();
System.out.println(num);
}
public void test() {//-------인스턴스 메소드
//non-static메소드에서 static메소드호출
//=>일반적인 접근방식
//메소드에 할당되는 메모리가 다른데 가능한 이유? -> 이해못함..
change();
System.out.println("테스트");
}
public static void change() {//-------정적메소드
//4. static메소드에서 non-static메소드를 호출 280p 참고
//=>change가 메모리에 있는 상태에 바로 examtest를 확인할 수 없으므로 에러발생
//=>같은 클래스에서 선언된 메소드라 해도 static메소드 안에서 non-static메소드를 호출하는경우
// 객체생성후 참조변수를 통해서 호출
//static메소드-static멤버변수를 제어, 객체에 속한 기능이 아닌 메소드를 정의
StaticMethodDemo obj = new StaticMethodDemo();
obj.examtest();
System.out.println("change");
}
public void examtest() {//-------인스턴스 메소드
System.out.println("examtest");
}
}

밑에서부터 올라옴
package oop.basic;
public class StaticMethodTest {
//main은 자바인터프리터(java.exe)에서 호출되는 메서드
public static void main(String[] args) {
StaticMethodDemo.print();//프린트가 시작될때 스태틱블럭이 먼저 실행되는거 확인!
StaticMethodTest obj = new StaticMethodTest();
obj.show();//static 안에서 non-static호출
display();//static안에서 static호출
}
public static void display() {
System.out.println("display");
}
public void show() {
System.out.println("show");
}
}

public class 동물after{
public static void main(String[] args) {
//상속관계에서 생성해서 사용하는 객체는 주로 하위클래스
뱀after obj = new 뱀after();
obj.이동방법 = "기어서";
obj.이동하다();
}
}
//일반화시킨다.= 상속관계를 만들기
class 동물{//상위클래스
String 이름;
String 이동방법;
public void 몸무게출력하기(int 몸무게, String 이름) {
System.out.println("몸무게: "+몸무게);
}
public void 이동하다(){
System.out.println(이동방법+"으로 이동함");
}
}
//일반화시키기후
class 뱀after extends 동물{
int 몸길이;
public void set몸길이(int 몸길이){
this.몸길이 = 몸길이;
}
}
class 독수리after extends 동물{
int 날개길이;
public void set날개길이(int 날개길이){
this.날개길이 = 날개길이;
}
}
class 코끼리after extends 동물{
int 귀크기;
public void set귀크기(int 귀크기){
this.귀크기 = 귀크기;
}
}
class 고래after extends 동물{
int 지느러미길이;
public void set지느러미길이(int 지느러미길이){
this.지느러미길이 = 지느러미길이;
}
}
상위클래스 정의
package oop.inheritance;
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
하위클래스
package oop.inheritance;
public class Teacher extends Person {
String subject;
public Teacher() {
}
public Teacher(String name, int age, String subject) {
super(name, age);
this.subject = subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getSubject() {
return subject;
}
public void display() {
System.out.println("이름 : "+getName()+"\t"+" 나이 : "+getAge()+"\t"+" 담당과목 : "+subject);
}
}
package oop.inheritance;
class Super{
int num = 10;
}
class Sub extends Super{
int num = 100;
public void display() {
System.out.println("num=>"+num);
System.out.println("부모의 num=>"+super.num);
}
}
public class InheritanceTest1 {
public static void main(String[] args) {
Sub obj = new Sub();
obj.display();
System.out.println(obj.num);
}
}
출력:
num=>100
부모의 num=>10
100
class Parent{
public void display() {
System.out.println("부모의 display()");
}
}
class Child extends Parent{
public void test() {
System.out.println("자식클래스의 test()");
display();
super.display();
}
public void display() {
System.out.println("하위클래스의 display()");
}
}
public class InheritanceTest2 {
public static void main(String[] args) {
Child obj = new Child();
obj.test();
obj.display();
}
}
출력:
자식클래스의 test()
하위클래스의 display()
부모의 display()
하위클래스의 display()
private은 아무리 상속해도 접근안됨. 오류뜸
class SuperA extends Object{
private String name;
private String age;
public SuperA() {
System.out.println("부모의 생성자");
}
public SuperA(String name, String age) {
super();//Object의 기본생성자를 호출
this.name = name;
this.age = age;
System.out.println("부모의 매개변수 생성자");
}
}
class SubA extends SuperA{
String subdata;
public SubA() {//생성자를 아무것도 안만들면 컴파일러가 기본생성자 부여 public SubA() {}이게 기본생성자
super();//Object의 기본생성자를 호출
System.out.println("자식의 생성자");
}
public SubA(String name, String age, String subdata) {
super(name,age);//기본생성자가 아닌 매개변수 있는 생성자가 호출됨! 그래서 private라도 넘어옴ㅋ
this.subdata = subdata;
}
}
public class InheritanceTest3 {
public static void main(String[] args) {
SubA obj = new SubA();
SubA obj2 = new SubA("뷔","30","data");
}
}
출력:
부모의 생성자
자식의 생성자
부모의 매개변수 생성자
본 포스팅은 멀티캠퍼스의 멀티잇 백엔드 개발(Java)의 교육을 수강하고 작성되었습니다.