- 오른쪽의 실행 결과를 왼쪽 변수에 할당하는 연산자
- 변수에 값을 할당하거나 연산식의 결과를 변수에 저장할 때 할당 연산자를 사용한다.
+=, -=, ...
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>
위 식을 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>
|| 기호를 사용하며, 피연산자 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>
<title>and 연산자</title>
<script>
var numberOne = prompt("50 미만인 숫자를 입력하세요.");
var numberTwo = prompt("50 미만인 숫자를 입력하세요.");
if(numberOne < 50 && numberTwo < 50)
alert("숫자 2개 모두 50미만이군요.");
else
alert("조건에 맞지 않는 숫자가 있습니다.");
</script>
처리할 명령이 많으면 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>
<%@ 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);
<%@ 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개씩 끊어서 작성됨
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("야옹하고 울다.");
}
}
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();
}
}
- 자바 프로그램에 사용할 수 있도록 다양한 패키지오 ㅏ크래스를 제공하는 기본 패키지이다.
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("달리다.");
}
}
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(두 참조변수)의 주소가 다름
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));//최소값
}
}
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; -- 그 날짜가 주말인지 평일인지