//인스턴스가 하나 만들어 질때마다 조회수를 1 높이는 작업 publicclassCounter { staticintcount=0; // 정적화. 전역화 = 프로그램이 생성될때부터 꺼질때가지 유지 // 전역화 = 정의된 지역에 상관이 프로그램이 실행될때 생성되어 프로그램이 종료될때까지 // 인스턴스화 하지 않고 클래스를 컴파일할때 메모리에 올라간다 // 그때 올라가서 프로그램이 종료될 때까지 유지되니 '공유'라는 성질을 갖게 된다. publicCounter() { count++; System.out.println("생성됨. count : "+ count); } }
public class 배열 { // 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 // 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오 // 예를 들어, 서로 다른 9개의 자연수 // 3, 29, 38, 12, 57, 74, 40, 85, 61 // 입력 : 9개의 자연수가 들어있는 배열 // 리턴 : 없음 // 본문 : 최댓값과 몇번째인지 로그로 출력 // 함수명 : printMaxValIdx
//세 개의 자연수 A, B, C가 주어질 때 //AxBxC 를 계산한 결과에 각각의 숫자가 몇 번씩 쓰였는지를 구하는 함수를 작성하시오 //예를 들어 A=150, B=266, C=427이라면 //AxBxC=150 x 260 x 427 = 17037300이 되고, //계산한 결과 1703730에 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다
//인풋 : 정수 3개 //리턴 : void //본문 : 쓰여진 숫자 : 쓰여진 갯수 출력 // //1. 3개의 자연수를 받은 함수 껍데기 만들기 //2. 3개의 수를 곱한 결과값 뽑기 //3. 0부터 9까지 반복하면서 각각의 수가 몇번 쓰였는지 파악하기 publicvoidnumCount(int a, int b, int c) { intmul= a * b * c; System.out.printf("%d x %d x %d = %d \n", a, b, c, mul); int[] arr= newint[10]; int[] printNum= newint[10]; for(int i=0; i< 10; i++) { // 예)1000을 1 0 0 0 형태로 배열에 담기 arr[i] = mul % 10; // 10으로 나눈 나머지 = 1의 자리 mul = mul / 10; System.out.printf("%d ", arr[i]); } System.out.println(""); for(int i=0; i<10; i++) { // 출력할 수를 printNum에 담는다 for(int j=0; j<10; j++) { // printNum의 n번째 자리를 숫자 n으로 인식 if(arr[i]==j) // 예)printNum의 1번째 자리가 2 = 1을 2번 사용함 printNum[j] += 1; } } System.out.println(); // 결과 출력 for(int i=1; i<10; i++) { if(printNum[i]!=0) { System.out.printf("%d 이 %d 개 사용되었다. \n", i, printNum[i]); } } } }
public class 배열나눠서오름차순출력 { //divideArrbyNum(int[] 인트형배열, int 기준숫자) //인트형 배열 안에서 기준숫자 이상인 엘리먼트 (요소=값하나)와 //기준 숫자 이하인 엘리먼트 2개로 나눠서 //각각 모든 요소를 오름차순으로 출력해보세요. //예) [1, 2, 3, 5, 7, 80, 150, 2022, 30534] //기준이 100이라면 //[1,2,3,5,7,80] / [150,2022,30534] 로 나뉨 //생각의 깊이 : 나눠서 정렬을 각각 하는거보다 처음에 정렬을 하면 한번만 하면 됨
- 원시형 8가지 type이 아니라면 (==) 는 주소값을 비교한다 - 이런 경우에 실제 값을 비교하려면 equals를 사용
> ==연산자와 equals()메소드의 가장 큰 차이점은 == 연산자는 비교하고자 하는 두개의 대상의 주소값을 비교하는데 반해 String클래스의 equals 메소드는 비교하고자 하는 두개의 대상의 값 자체를 비교한다는 것입니다. 기본 타입의 int형, char형등은 Call by Value 형태로 기본적으로 대상에 주소값을 가지지 않는 형태로 사용됩니다. 하지만 String은 일반적인 타입이 아니라 클래스입니다. 클래스는 기본적으로 Call by Reference형태로 생성 시 주소값이 부여됩니다. 그렇기에 String타입을 선언했을때는 같은 값을 부여하더라도 서로간의 주소값이 다릅니다. >
### 실습 - 배열
- 배열 선언법 정리 - ==와 equal 차이 비교 - 랜덤숫자 맞추기 게임 구현으로 응용
- 배열 연습 ```java package 배열; import java.util.Arrays; import java.util.Random; import java.util.Scanner; public class Main { public static void main(String[] args) { // 초기화 = 정의 후에 값 할당까지 한 번에 하는 것 int intArr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int[] intArr3; intArr3 = new int[]{1,2,3,4,5,6,7,8,9,10}; // Java 형식 // if(intArr == intArr3) { // System.out.println("같음"); // } String[] strArr1 = {"일", "이", "삼"}; // 스트링배열을 스트링으로 변환할 수 없습니다. int twoMension[][] = {{1, 2, 3}, {5, 10, 15}}; // System.out.println(twoMension.length); // System.out.println(twoMension[1]); // 향상된 for문. iterator = 반복할수 있는 객체 // iterator의 모든요소에 대해서 반복을 수행 // for(int i : twoMension[1]) { // System.out.print(i + " "); // } // System.out.println(""); int [][][] threeDemension = new int[2][4][6]; // 뒤에서부터 읽는다. // 2개짜리가 4개 있고 그런 놈이 6개있다. X // 6개짜리가 4개 있고 그런 놈이 2개있다. O // System.out.println(threeDemension.length); String[] 계절 = {"봄", "여름", "가을", "겨울"}; String[] 복사본 = 계절; // 배열의 복사. 그냥 =으로 하면 얕은 복사. String[] 진짜복사본; // String[] 진짜복사본2 = new String[]; boolean result = Arrays.asList(계절).contains("핵겨율"); // System.out.println(result); // if( 계절 == 복사본) { // System.out.println("복사본 : 같다"); // }else { // System.out.println("복사본 : 틀리다"); // } 진짜복사본 = 계절.clone(); // if( 계절 == 진짜복사본 ) { // System.out.println("진짜복사본 : 같다"); // }else { // System.out.println("진짜복사본 : 틀리다"); // } // 깊은 복사를 하기 위해서 반복문을 돌리든가, system.arraycopy() 메소드를 이용 // System.arraycopy(계절, 0, 진짜복사본2, 0, 계절.length); // if(계절 == 진짜복사본2) { // System.out.println("진짜복사본2 : 같다"); // }else { // System.out.println("진짜복사본2 : 틀리다"); // } // 영단어가 저장된 배열. 크기는 5. endDic // apple, banana, peach // 한글단어가 저장된 배열. 크기는 5. korDic // 사과, 바나나, 복숭아 // 한글랜덤단어를 보여주고 // 유저는 영단어를 치고 // 답이 맞는지 틀렸는지 판단 // System.out.println("키보드로 뭔가를 입력해보세요 : "); // Scanner sc = new Scanner(System.in); // 캐보드로 입력받기 위한 객체 생성 // String input = sc.next(); // System.out.println(input); } }
Dogmydog1=newDog(); // Dog클래스에서 mydog1 객체 생성 System.out.println(mydog1.name); // mydog1 이름 출력 Humankim=newHuman(); // Human클래스에서 kim 객체 생성 kim.taming(mydog1); // kim이 mydog1을 인자로 받아서 함수 싱행 } }
Humankim=newHuman(); // Human 클래스에서 kim 객체 생성 System.out.println(kim.name); // kim 이름 출력 kim.walk(); // kim의 함수 호출 // Dog dog1 = new Dog(); // Dog 클래스에서 dog1 객체 생성 // dog1.jump(); // dog1의 함수 호출 } }
Humankim=newHuman("아무개", 21); // Human 클래스에서 kim 객체 생성 System.out.println(kim.name); // kim 이름 출력 kim.walk(); // kim의 함수 호출 // Dog dog1 = new Dog(); // Dog 클래스에서 dog1 객체 생성 // dog1.jump(); // dog1의 함수 호출 } }
public class Main { public static void main(String[] args) { // System.out.println("헬로 월드"); int a = 5; double b = 7.5;
System.out.println(a+b); // call by value. 기본형. 값에 의한 참조 char x = 'a'; String y = "hello"; System.out.println(x+y); int myNum = a; myNum = myNum + 10; System.out.println("Mynum : " + myNum); System.out.println("a : " + a); // call by reference. 참조형. 주소에 의한 참조 String[] imgArr = {"🍕", "🍖"}; String[] stringArr = {"피자", "통닭", ""}; imgArr = stringArr; // 한글이 들어감 stringArr[2] = "아이스크림"; int i=0; System.out.println(imgArr[0]); System.out.println(imgArr[1]); System.out.println(imgArr[2]); // for(i=0; i<imgArr.length; i++) { // System.out.println(imgArr[i]); // } } }
연산자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
package variable;
public class 연산자 { public static void main(String[] args) { int a = 100; int b = 333; System.out.println(a++ + ++b); // 100 + 334 = 434 // ++ 이나 -- 증감연산자가 // 뒤에있으면 사용한뒤 값을 변경 // 앞에 있으면 변경한 뒤에 사용 } }
<!DOCTYPE html> <htmllang="en"> <head> <metacharset="UTF-8"> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <metaname="viewport"content="width=device-width, initial-scale=1.0"> <title>Document</title> <scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> // 모든 문서가 로드가 되면.. $(function(){ // $(".btn1 a").mouseover(function(){ // alert("휴먼교육센터"); // }) // 2개 이상의 이벤트를 동시에 적용 가능 // $(".btn1 a").on("mouseover focus", function(){ // // 선택된 대상 // let ts = $(this); // ts.css("background-color", "yellow"); // }); $(".btn1 a").on("mouseover focus", function(){ // 선택된 대상 let ts = $(this); // 선택된 대상의 ul 태그 중 visible이 포함된 것이라면 hide(숨기고) $(".btn1").next("ul").filter(":visible").hide(); // 선택된 부모(p)의 다음 것을 출력 ts.parent().next().show(); returnfalse; }); }); </script> </head> <body> <pclass="btn1"><ahref = "#">이벤트 대상1</a></p> <ulstyle="display:none"> <li>리스트1</li> <li>리스트2</li> <li>리스트3</li> </ul>