Cloud 기반 웹 DevOps 프로젝트 개발자 과정

문이빈·2023년 6월 27일
0

Java Script

연산자(교재 475p.)

할당연산자(연산식)

  • 오른쪽의 실행 결과를 왼쪽 변수에 할당하는 연산자
  • 변수에 값을 할당하거나 연산식의 결과를 변수에 저장할 때 할당 연산자를 사용한다.
    +=, -=, ...
    ex) y += x --> y = y + x

비교연산자

  • 피연산자 2개의 값을 비교해서 참이나 거짓으로 결과값을 반환한다.
==  피연산자가 서로 같으면 	   true 3=="3"  => true
=== 피연산자도 같고 자료형도 같으면 true 3==="3" =>false
!=  피연산자가 서로 같지 않으면
!== 피연산자가 같지 않거나 자료형이 같지 않으면
프로그램에서 값을 비교할 때는 자료형을 자동으로 변환하지 않기 위해
===연산자와 !== 연산자를 더 많이 사용한다.

논리연산자

  • boolean연산자라고도 하며 참 거짓을 처리하는 연산자 이다.
|| = or  (피연산자 중 하나만 참이여도 참이 된다.)
&& = and (피연산자 모두가 참일 경우에 참이 된다.)
!  = not (피연산자의 반대밗을 지정한다.)

조건문

if~else문

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang='ko'>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>조건문</title>

<script>
  var userNumber = prompt("숫자를 입력하세요");
  
  if(userNumber % 3 === 0)
	  alert("3의 배수입니다.");
  else
      alert("3의 배수가 아닙니다.");
</script>

</head>
<body>

</body>
</html>


  • var는 개발자가 변수의 타입을 명시적으로 적어주지 않고도, 컴파일러가 알아서 이 변수의 타입을 대입된 리터럴로 추론하는 것이다.

null값이 아닌지 확인

위 식을 if문 안에 넣었다. (null이 아니라면~)

<script>
  var userNumber = prompt("숫자를 입력하세요");
  
  if(userNumber !== null){
	  if(userNumber % 3 === 0)
		  alert("3의 배수입니다.");
	  else
	      alert("3의 배수가 아닙니다.");
  }
  else
	  alert("입력이 취소됐습니다.");
</script>

esc를 누르면
0을 입력했는데 3의 배수라 나와서 이것을 배제시키기 위해 if문을 한번 더 써보기

if(userNumber !== null){
        if(userNumber == 0){
         alert("입력수는 0이거나 입력되지 않았습니다.")
         }
         else{
           if(userNumber % 3 === 0)
		     alert("3의 배수입니다.");
	       else
	         alert("3의 배수가 아닙니다.");
 		 }
		   else
	 		 alert("입력이 취소됐습니다.");

중첩된 if~else문 대신 조건 연산자를 사용한다면

<script>
  var userNumber = prompt("숫자를 입력하세요");
  
  if(userNumber !== null)
    if(userNumber % 3 === 0) ? alert("3의 배수입니다.") : alert("3의 배수가 아닙니다.");
  else
    alert("입력이 취소됐습니다.");
</script>

OR연산자

|| 기호를 사용하며, 피연산자 2개 중에서 TRUE가 하나라도 있으면 결과 값은 TRUE

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang='ko'>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OR 연산자</title>
<script>
  var numberOne = prompt("50 미만인 숫자를 입력하세요.");
  var numberTwo = prompt("50 미만인 숫자를 입력하세요.");
  
  if(numberOne < 10 || numberTwo < 10)
	  alert("숫자 2개 중에서 최소한 하나는 10미만입니다.");
  else
	  alert("숫자 2개 중에서 10미만인 수가 없습니다.");
</script>
</head>
<body>

</body>
</html>




AND연산자

<title>and 연산자</title>
<script>
  var numberOne = prompt("50 미만인 숫자를 입력하세요.");
  var numberTwo = prompt("50 미만인 숫자를 입력하세요.");

  if(numberOne < 50 && numberTwo < 50)
	  alert("숫자 2개 모두 50미만이군요.");
  else
  	  alert("조건에 맞지 않는 숫자가 있습니다.");
</script>


switch문

처리할 명령이 많으면 if~else문을 여러개 사용하는 것보다 편리하다.

<!DOCTYPE html>
<html lang='ko'>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>switch문</title>
<link rel="stylesheet" type="text/css" href="../css/switch.css">
<script>
  var session = prompt("관심 세션을 선택해 주세요. 1-마케팅, 2-개발, 3-디자인");
  
  switch(session){
    case "1" : document.write("<p>마케팅 세션은 <strong>201호</strong>에서....</p>")
      break;
    case "2" : document.write("<p>개발 세션은 <strong>203호</strong>에서....</p>")
      break;
    case "3" : document.write("<p>디자인 세션은 <strong>205호</strong>에서....</p>")
      break;
    
    default : alert("잘못 입력했습니다.");
  }
</script>
</head>
<body>

</body>
</html>

css는

@charset "UTF-8";

body{background-color: #0c3268;
     color: rgb(243, 243, 243);
}

p{margin-top: 80px;
  font-size: 2em;
  font-weight: 700;
  text-align: center;
  text-shadow: 1px 2px 1px #000;	
}

p strong{font-size: 2.2em;
         color: yellow;
}



예제

<!DOCTYPE html>
<html lang='ko'>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>입장객 인원수에 따른 필요한 의자 수</title>
<script>
  var memNum = prompt("입장객은 몇 명인가요?");
  var colNum = prompt("한 줄에 몇 명씩 앉습니까?");
  
  if(colNum!=0 && memNum % colNum === 0)
	  rowNum = parseInt(memNum / colNum);
  else
	  rowNum = parseInt(memNum / colNum) + 1;
  
  document.write("모두 " + rowNum + "개의 줄이 필요합니다.");
</script>
</head>
<body>

</body>
</html>


반복문

for문

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang='ko'>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for문을 사용해 1부터 5까지 숫자 더하기</title>
<script>
  var i;
  var sum=0;
  
  for(i=1; i<6; i++){
	  sum += i;
  }
  document.write("1부터 5까지 더하면 " + sum);
</script>
</head>
<body>

</body>
</html>

  var i;
  var sum=0;
  
  for(i=1; i<1001; i++){
	  sum += i;
  }
  document.write("1부터 1000까지 더하면 " + sum);


for문 2개로 구구단 만들기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang='ko'>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>구구단</title>
</head>
<body>
<h1>구구단</h1>
<script>
  var i, j;
  
  for (i=1; i<=9; i++){
	  document.write("<h3>" + i + "단</h3>");
	  for(j=1; j<=9; j++){
		  document.write(i + "X" + j + "=" + i*j + "<br>");
	  }
  }
</script>

</body>
</html>


구구단 꾸미기

css파일

@charset "UTF-8";

div{display: inline-block;
    padding: 0 20px 30px 20px;
    margin: 15px;
    border: 1px solid #ccc;
    line-height: 2;
}

div h3{text-align: center;
       font-weight: bold;
}

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang='ko'>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>구구단 2</title>
<link rel="stylesheet" type="text/css" href="../css/99dan.css">
</head>
<body>
<h1>구구단</h1>
<script>
  var i, j;
  
  for (i=1; i<=9; i++){
	  document.write("<div>")
	  document.write("<h3>" + i + "단</h3>");
	  for(j=1; j<=9; j++){
		  document.write(i + "X" + j + "=" + i*j + "<br>");
	  }
	  document.write("</div>")
  }
</script>
</body>
</html>

for문 안에 document.write("<div>") 다 작성 후 뒤에 document.write("</div>")을 추가 해줌.
바디가 먼저 만들어지게 하기 위해서 내용을 바디 안에 넣는다.


구구단 테이블로 만들기

@charset "UTF-8";

table{margin: 20px;
      float: left;
}

table, th{border: 1px solid #ccc;
		  border-collapse: collapse;
}

th,td{padding: 10px 15;}

th{background: #eee;}

td{border: 1px dotted #222;}

위 css를 가지고

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang='ko'>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>구구단 2</title>
<link rel="stylesheet" type="text/css" href="../css/99dan_table.css">
</head>
<body>
<h1>구구단</h1>
<script>
  var i, j;
  
  for (i=1; i<=9; i++){
	  document.write("<table>")
	  document.write("<tr><th>" + i + "단</tr></th>");
	  for(j=1; j<=9; j++){
		  document.write("<tr><th>" + i + "X" + j + "=" + i*j + "<tr><th>");
	  }
	  document.write("</table>")
  }
</script>
</body>
</html>


css에 .clear{clear: both;}, if(i%3==0)document.write("<div class='clear'></div>");을 추가하면
이렇게 3개씩 끊어서 작성됨


Java

추상 클래스 (교재 340p.)

추상 클래스의 상속

  • 인터페이스는 일반적인 클래스가 아니고 특수한 형태의 클래스 이고, 다중구현이 가능하고 접속하기 위한 도구이다.

package ex9;

public abstract class Vehicle{
	abstract void printPrice();
}
-----------------------------------------------------------------------------
public abstract class TwoWheeler extends Vehicle {
	
	abstract void printType();
}
-----------------------------------------------------------------------------
public abstract class FourWheeler extends Vehicle { }
-----------------------------------------------------------------------------
public class Bike extends TwoWheeler {

	public void printPrice() {
		System.out.println("가격 : 150,000");
	}

	public void printType() {
		System.out.println("이것은 자전거입니다.");
	
	}
	public void printBrand() {
		System.out.println("브랜드 : 삼천리");
	}
}
-----------------------------------------------------------------------------
public class Car extends FourWheeler {


	public void printPrice() {
		System.out.println("가격 : 50,000,000");
	}

	public void printType() {
		System.out.println("이것은 자동차입니다.");
	
	}
	public void printBrand() {
		System.out.println("브랜드 : BMW");
	}
}
-----------------------------------------------------------------------------
public class Example01 {

	public static void main(String[] args) {
		
		Bike myBike = new Bike();
		Car myCar = new Car();
		
		myBike.printType();
		myBike.printBrand();
		myBike.printPrice();
		
		System.out.println("------------");
		
		myCar.printType();
		myCar.printBrand();
		myCar.printPrice();
	}
}


추상클래스를 상속하여 인스턴스 생성

package ex9;

public abstract class Shape {
	String color;
	
	abstract double area();
	public abstract String toString();
	
	public Shape(String color) {
		System.out.println("Shape 클래스 생성자 호출");
		this.color = color;
	}
	public String getColor() {return color;}
}
-----------------------------------------------------------------------------
public class Circle extends Shape {
	double radius;
	
	public Circle(String color, double radius) {
		super(color);
		System.out.println("Circle 클래스 생성자 호출");
		this.radius = radius;
	}
	
	double area() {
		return radius * radius * 3.14;
	}
	
	public String toString() {
		return "원 색상은 " + super.getColor() + " 그리고 면적은 : " + area();
	}
}
-----------------------------------------------------------------------------
public class Rectangle extends Shape {
	
	double length;
	double width;
    
	public Rectangle(String color, double length, double width) {
		super(color);
		System.out.println("Rectangle 클래스 생성자 호출");
		this.length = length;
		this.width = width;
	}
	
	double area() {return length * width; }

	public String toString() {
		return "사각형 색상은 " + super.getColor() + " 그리고 면적은 : " +  area();
	}
}
-----------------------------------------------------------------------------
public class AbstractClass01 {

	public static void main(String[] args) {
		Shape s1 = new Circle("빨간색", 2.2);
		Shape s2 = new Rectangle("노란색", 2, 4);
		
		System.out.println(s1.toString());
		System.out.println(s2.toString());
        // 상위 클래스 변수에 저장하는 경우
		// 하위 크래스로 생성했더라도 상위클래스에 없는 메소드는
		// 하위 크래스 레퍼런스 변수로 호출할 수 없다.
	}
}


인터페이스

  • 인터페이스는 추상클래스와 마찬가지로 자체의 객체를 만들 수 없다.
  • 인터페이스는 추상 메소드에만 포함할 수 있다.
  • 인터페이스는 interface 키워드를 사용하여 선언한다.

예제1

package ex9;

public interface Parent {
	public void printInfo();
}
-----------------------------------------------------------------------------
public class Father implements Parent{
	
	public void printInfo() {
		System.out.println("아버지입니다.");
	}
}
-----------------------------------------------------------------------------
public class Example05 {

	public static void main(String[] args) {
		Father myFather = new Father();
		myFather.printInfo();
	}
}


예제2

package ex9;

public interface Animal02 {
	public void animalSound();
	public void animalWalk();
}
-----------------------------------------------------------------------------
public class Pig implements Animal02{
	public void animalSound() {
		System.out.println("꿀꿀하고 소리 내다");
	}
	
	public void animalWalk() {
		System.out.println("네발로 걷다.");
	
	}
}
-----------------------------------------------------------------------------
public interface Interface01 {
	public static void main(String[] args) {
		Pig myPig = new Pig();
		myPig.animalSound();
		myPig.animalWalk();
	}
}


다중 상속

  • 자바에서는 단일 클래스가 둘 이상의 클래스를 상속할 수 없어 다중 상속이 불가하기 때문에 인터페이스를 사용하여 다중 상속을 구현한다.

예제1)

package ex9;

public interface Papa {
	public void genderFather();
}
-----------------------------------------------------------------------------
public interface Mama {
	public void genderMother();
}
-----------------------------------------------------------------------------
class Baby implements Papa, Mama{
	
    @Override
	public void genderFather() {
		System.out.println("나는 아버지입니다.");
	}
	
    @Override
	public void genderMother() {
		System.out.println("나는 어머니입니다.");
	}
	
	public void printInfo() {
		System.out.println("나는 아기입니다.");
	}
}
-----------------------------------------------------------------------------
public class Example06 {

	public static void main(String[] args) {
		Baby myBaby = new Baby();
		
		myBaby.genderFather();
		myBaby.genderMother();
		myBaby.printInfo();
	}
}


예제2)

package ex9;

public interface Walk {
	public void walk();
}
-----------------------------------------------------------------------------
public interface Fly {
	public void fly();
}
-----------------------------------------------------------------------------
public class Chicken implements Fly, Walk{
	
	public void fly() {
		System.out.println("닭은 날 수 있다.");
	}
	
	public void walk() {
		System.out.println("닭은 걸을 수 있다.");
	}
}
-----------------------------------------------------------------------------
public class Bird implements Fly{
	
	public void fly() {
		System.out.println("새는 날 수 있다.");
	}
		public void walk() {
			System.out.println("새는 걸을 수 있다.");
	}
}
-----------------------------------------------------------------------------
public class Interface02 {

	public static void main(String[] args) {
		Chicken myChicken = new Chicken();
		Bird myBird = new Bird();
		
		myChicken.fly();
		myChicken.walk();
		myBird.fly();
	}
}


  • 일반 클래스 간의 상속 - extends
  • 인터페이스 간의 상속 - extends
  • 인터페이스와 일반클래스간의 상속 - implements

패키지

package com.section01;

public class Example01 {
public int add(int a, int b) {
	return a+b;
}
public static void main(String[] args) {
	Example01 obj = new Example01();
	System.out.println(obj.add(10, 20));
	}
}


패키지 생성

package com.section01;

public class Example01 {
public int add(int a, int b) {
	return a+b;
}
public static void main(String[] args) {
	Example01 obj = new Example01();
	System.out.println(obj.add(10, 20));
	}
}


패키지 사용법

패키지 내부의 클래스에 접근하려면 import 명령어 뒤에 패키지 명과 클래스명을 지정하면된다.
package com.javamaster.mypackage;

public class Cat {
String breed;
String color;

public void eat() {
	System.out.println("먹이를 먹다.");
}

public void scratch() {
	System.out.println("발톱으로 할퀴다.");
}

public void meow() {
	System.out.println("야옹하고 울다.");
	}
}
and

package com.section02;

★import com.javamaster.mypackage.*;
public class Package01 {

public static void main(String[] args) {
	Cat myCat = new Cat();
	myCat.eat();
	myCat.scratch();
	myCat.meow();	
	}
}


내장 패키지

  • 자바 프로그램에 사용할 수 있도록 다양한 패키지오 ㅏ크래스를 제공하는 기본 패키지이다.

java.lang 패키지

object클래스의 주요 메소드 중 toString(), equals()을 사용하는 예제

package com.section03;

import com.javamaster.mypackage.Cat;

public class Example03 {

public static void main(String[] args) {
	Cat cat01 = new Cat();
	Cat cat02 = new Cat();
	
	System.out.println(cat01.toString());
	System.out.println(cat02. toString(), );
	System.out.println(cat01.equals(cat02));
	
	cat01 = cat02;
	System.out.println(cat01.equals(cat02));
	}
}


package com.javamaster.mypackage;

public class Dog {
String breed;
String color;

public String  bowwow() {
	return "멍멍 짖다.";
}

public void run() {
	System.out.println("달리다.");
	}
}
and

package com.section03;

import com.javamaster.mypackage.Dog;

public class Package02 {

public static void main(String[] args) {
	Dog dog01 = new Dog();
	Dog dog02 = new Dog();
    // object 비교
	System.out.println(dog01.equals(dog02));
	
	String str1 = dog01.bowwow();
	String str2 = dog02.bowwow();
    // String 비교
	System.out.println(str1.equals(str2));
	}
}


dog01 과 dog02(두 참조변수)의 주소가 다름


Math 클래스

package com.section03;

public class Example04 {

public static void main(String[] args) {
	System.out.println((int)(Math.random()*100));
	System.out.println(Math.abs(-10)); //절대값
	System.out.println(Math.abs(4.5)); 
	System.out.println(Math.sqrt(4.0)); // x^2 = 4
	}
}


package com.section03;

public class Package03 {

public static void main(String[] args) {
	System.out.println(Math.pow(2, 2)); //제곱
	System.out.println(Math.ceil(9.9));//올림
	System.out.println(Math.floor(9.9));//내림
	System.out.println(Math.round(9.9));//반올림
	System.out.println(Math.max(5, 100));//최대값
	System.out.println(Math.min(5, 100));//최소값
	}
}


MySQL

함수

select abs(-15);  			-- 절대값
select ceil(15.2);			-- 올림
select floor(15.7); 		-- 내림
select exp(4);				-- 지수승
select log(10,100);			-- 상용로그
select mod(11,4);			-- 나머지
select power(3,2);			-- 3^2
select round(15.193, 1);	-- 소수점 첫째자리까지 나오게 반올림
select sign(-15);			-- 양수이면 1, 음수이면 -1, 0이면 0 이 나오는
select truncate(15.79, 1); 	-- 소수점이하 첫째자리까지 남겨두고 나머지는 버림.

날짜에 대한 함수

select date_add('20211018', interval 1 day); 	-- 1일 증가

select date_add('20211018', interval 1 hour); 	-- 1시간 증가

select date_add(now(), interval 1 day);			-- 현재(now, sysdate)

select date_add(now(), interval 1 month);		

select date_sub('20210301', interval 1 month)	-- 1달 빼기

select last_day(date_sub('20210301', interval 1 month)); -- 마지막 날짜

select unix_timestamp(); -- 1970년부터 시간 계산(?) 시간 더하기 위해서 사용

select date_sub(from_unixtime(unix_timestamp()), interval 1 day);

select case when dayofweek(date_sub('20211018', interval 2 day))
   in(1, 7) then 'weekend' else 'weekday' end;	-- 그 날짜가 주말인지 평일인지

0개의 댓글