call by reference
public class exam1 {
public static void main (String[] args){
int i = 10;
int j = i;
i += 10;
System.out.println("i:"+i);
System.out.println("j:"+j);
int[] iarr = {10};
int[] iarr2 = iarr;
iarr[0] += 10;
System.out.println("iarr:"+iarr[0]);
System.out.println("iarr2:"+iarr2[0]);
}
}
i:20
j:10
iarr:20
iarr2:20
i, j의 경우 j는 i의 원시값을 복사한 것이기 때문에 i값이 변경되어도 j가 변경되지 않음
배열은 주소를 지정하기 때문에 iarr[0]의 값이 바뀌면 iarr2의 값도 변경됨
명령 행 아규먼트(Command-Line Arguments)
JVM이 main 메소드를 실행할 때 Stirng[]을 Arguments로 넘겨준다는 것을 의미한다.
public class Exam2 {
public static void main(String[] args) {
//java Exam2 10 hi kang 111
System.out.println(args.length);
if(args.length == 0){
System.out.println("사용법:: ");
System.exit(0);
}
for(String arg:args){
System.out.println(arg);
}
}
}
Unlimited arguments
메소드 아규먼트를 가변적으로 전달하고 싶을 때 사용한다.
리턴타입 메소드이름(타입... 변수명) { 구현부 }
public class Exam3 {
//제한 없는 아규먼트 사용
public static int addInt(int... values) {
int sum = 0;
for (int value : values) {
sum += value;
}
return sum;
}
public static void main(String[] args) {
int result = addInt(4,5,66,78,56);
System.out.println(result);
}
}
객체지향 프로그래밍
프로그래밍을 여러 개의 독립된 단위(객체)들의 모임으로 파악하고자 하는 것으로, 각각의 객체는 메세지를 주고 받으며 데이터를 처리할 수 있다.
메소드
객체가 수행할 수 있는 동작을 정의한다.
1. 입력값도 없고, 리턴값도 없는 메소드
접근 제한자 void 메서드명() {구현부}
2. 입력을 받아서 실행하는 메서드
접근제한자 void 메서드명 (매개변수...){구현부}
3.실행해서 결과를 리턴하는 메소드
접근제한자 리턴타입 메소드명() {구현부}
4.입력을 받아서 실행하고 리턴해주는 메소드
접근제한자 리턴타입 메소드명 (매개 변수들...) {구현부}
class Pen{
private String name;
public void Write(String msg){
System.out.println(msg);
}
}
public class Exam4 {
public static void main(Stringp[] args){
// class Pen은 설계도, 틀
// class를 이용해 실체(진짜 펜)을 만들어야 함.
Pen p = new Pen(); // new 실체를 만든다. 이때 만들어진 실체를 인스턴스, p를 참조형 변수라고 한다.
//p 레퍼런스(참조형)변수 int[] iarr - iarr 레퍼런스 변수
int i = 0 ; // int를 담을 수 있는 변수 1 선언, int값 0 넣어줌
//Pen p == pen을 가리킬 수 있는 변수 p를 선언.
p.Write("안녕!!");
}
}
예시 1) 주사위 굴리기
public class Dice {
//속성 면, 눈
public Dice() {
System.out.println("Dice의 기본 생성자 실행!");
}
int face;
int eye;
// 행위 : 굴리다
public void roll(){
//주사위 굴렸을 때 랜덤하게 나온다.
// Random random = new Random();
// random.nextInt();
eye = (int)(Math.random()*face)+1;
}
}
public class DiceUser {
public static void main(String[] args) {
Dice dice = new Dice();
dice.face =6;
dice.roll();
System.out.println(dice.eye);
}
}
예시 2) 계산기
public class Calculate {
public int add(int i, int j) {
return i + j;
}
public int sub(int i, int j) {
return i - j;
}
public int mul(int i, int j) {
return i * j;
}
public double div(int i, int j) {
if (j == 0) {
System.out.println("나눌 수 없습니다.");
return 0;
}else
return i / j;
}
}
import java.util.Scanner;
public class CalculUser {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Calculate cal = new Calculate();
System.out.print("첫 번째 수를 입력하세요.:");
int num1 = scanner.nextInt();
System.out.print("두 번째 수를 입력하세요.:");
int num2 = scanner.nextInt();
System.out.println("원하는 계산 모드를 선택하세요.");
System.out.println("1. + 2.- 3.* 4./");
int operation = scanner.nextInt();
switch (operation) {
case 1:
System.out.println("결과: " + cal.add(num1, num2));
break;
case 2:
System.out.println("결과: " + cal.sub(num1, num2));
break;
case 3:
System.out.println("결과: " + cal.mul(num1, num2));
break;
case 4:
System.out.println("결과: " + cal.div(num1, num2));
break;
default:
System.out.println("다시 선택하세요.");
break;
}
}
}
어제 헷갈렸던 부분을 나름대로 해석한 결과 >
public static void main(String[] args) {
ItemForArray[] itemArr; // ItemForArray 클래스의 객체 배열인 itemArr을 선언
itemArr = new ItemForArray[3]; //3개의 ItemForArray 객체를 담을 수 있는 공간 확보, 메모리에 배열 생성
//ItemForArray 클래스의 생성자를 호출해 객체 생성
ItemForArray item1 = new ItemForArray(3000, "연필");
ItemForArray item2 = new ItemForArray(5000, "컵");
ItemForArray item3 = new ItemForArray(10000, "공책");
//객체를 배열에 저장
itemArr[0] = item1;
itemArr[1] = item2;
itemArr[2] = item3;
'🏕 멋사 Java 백엔드 13기 > TIL' 카테고리의 다른 글
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 8일차 (1) | 2024.12.11 |
---|---|
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 6일차 (2) | 2024.12.09 |
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 3일차 (1) | 2024.12.04 |
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 2일차 (0) | 2024.12.03 |
[Java] 패키지, 접근 제한자, 클래스, 메소드 (3) | 2024.12.03 |