fun main(args: Array<String>):Unit {
println("hello jusung")
println(12+13-10) //표현식(Expression)

var result: Int //(선언)
//(정수값을 저장하는 result variable 선언
)
result = 100 //(초기화)
//var result: int = 100(선언과 초기화를 한번에할수있다
)

val a: Int = 5+5+10//val은 final 변수로 값을 변경할수없다
println(a)
val b: Int = 10+10+10
println(b)
result = a+b //result는 variable 변수로 값이 변경될수있다
println(result)

var aa = 10+50 //값이 정수이기때문에 int를 적지않아도 정수로 인식한다
}
//문장뒤에 ;이 필요없다
//class 없에 main 함수 하나만으로도 작동할수있다
//단독 표현식만으로도 작동한다

-------------

fun main(args: Array):Unit{
//산술 연산자(+, -, *, /, %)
val num: Int = 10+20-27
val num2: Int = 200%3 //나눈후 나머지값을 저장
val num3: Double = 7.5/5 + 11.1 //실수와 정수를 계산할시 실수 type이 된다
val num4: Double = num/num2 + 0.3
//정수와 정수를 계산시(3/2) 정수값이 출력되 1.5가 아닌 1값이 나온다
//val num4: Double = num.toDouble()/num2 + 0.3
//val num : Double = 10.0 + 20 -27
//위와같이 정수 type을 실수 type
으로 변경시 실수값으로 정상출력된다

println(num)
println(num2)
println(num3)
println(num4)

// 증감연산자(++,--)
var aa = 10
var bb = 5

println(aa++ + bb) //(후위연산) 계산후 값을 증가시킨다
println(aa)

println(++aa + bb) //(전위연산)값을 증가시킨우 계산을한다

println(--bb) //값을 계산전 minus한다
}

하나의 페이지에 여러개의 클래스가 있을수있지만  
public class는 한번만 존재해야하며
public 타입을 가지는 클래스를 파일명으로한다 
main method 를 가지는 클래스에 public타입을 준다 

class 변수는 static이 붙는 변수로 static 변수라고 한다
class 변수는 클래스명.변수명 으로 호출한다  
같은 클래스일경우 클래스명없이 호출가능하다

instance 변수는 static이 붙지않고 class영역에서 선언된변수를 말한다 
instance 변수는 instance 생성후 생성한 객체명.변수명 으로 호출한다 
class 변수와 instance변수는 class영역에 선언되 멤버변수로 불린다 
멤버변수는 초기화하지 않을경우 default값이 들어간다

static 변수는 공유변수로 각각의 instance가 같이사용한다  
static 변수는 instance생성과 상관없이 생성된다 

생성자는 instance(객체)를 생성할때 호출하고 생성자명은 해당class명과 동일해야한다 
반환타입이 없어야 하고 멤버변수를 초기화할때 사용한다
CarDemo()생성자를 호출해서 new 연산자를 통해 클래스에 객체를 생성한다

생성자 없이 멤버변수를 초기화할때는 static String kind = "소형차"; 식으로 가능하다 

생성자를 이용하여 멤버변수를 초기화할수있다


local 변수는 method안에서 선언된변수를 말한다 
local 변수는 method의 block이 끝나는순간 사라진다. 
local 변수는 초기화를 해줘야한다.

class method에는 static이 붙고 class 변수만 사용할수있다
class method호출은 class명.method명 으로 호출하고 instance를 생성할필요없다

JVM 은 main method가 있어야 실행되기때문에  
main method는 static 이 붙어 객체생성없이 실행된다 

//class CarDemo
static String kind = "소형차"; //class변수
int number;  //instance 변수 
int speed;
String color;  

 

public CarDemo() {  
kind="소형차";  
int aa = 20;  
 //생성자이용해 멤버변수 초기화

public static void kind() { 
System.out.println("소형차");
//class method

public void speedUp() {  
    kind="대형차"; 
    speed +=10;  
//instance method에는 class 변수를 사용할수있다 

public void speedDown() {  
speed -=5;  
}  

//public class CarTest
static String kind1; //class변수

//main
CarDemo myCar = new CarDemo(); //instance 생성 
myCar.color="white"; 
CarDemo yourCar = new CarDemo(); 

System.out.println(CarDemo.kind); //class변수 호출 
System.out.println(kind1); //같은클래스내 class변수 호출 

System.out.println("myCar.color"); //instance변수 호출

System.out.println(myCar.kind); //공유변수이므로 같은값이 나온다 
System.out.println(yourCar.kind); 

myCar.kind = "중형차"; 
System.out.println(myCar.kind); 
System.out.println(yourCar.kind); //공유변수로 "중형차"가 출력된다  

int c = 100; //지역변수는 초기화 해줘야 한다 
System.out.println(c); 

System.out.println(aa); //생성자 안에서 선언된변수로 block밖에선 사용할수없다. 

System.out.println(myCar.speed); //0 
myCar.speedUp(); //멤버 메소드는 인스턴스 생성후 호출이가능하다 
System.out.println(myCar.speed); //10 

System.out.println(yourCar.speed); //0 
yourCar.speedUp(); //(참조변수명.메소드명) 
System.out.println(yourCar.speed); //10 

CarDemo.kind(); //class method 호출

'java' 카테고리의 다른 글

메소드, 생성자 오버로딩(overloading)  (0) 2019.08.02
return, 매개변수  (0) 2019.08.02
class 객체 및 instance, 멤버요소들  (0) 2019.08.02
입출력(main method/System.in/Scanner)  (0) 2019.08.01
배열 Array  (0) 2019.08.01

변수란 하나의 값을 저장할수 있는 기억공간이다

문자(char), 정수(byte,short,int,long), 실수(float, double), 논리(boolean)


기본형(boolean, char, byte, short, int, long, float, double)- 값을 저장
참조형(String, system, 배열)- 객체의 주소를 저장

변수 선언방법
byte bt = 10; //-128~127 변수의 초기화
short st = 1000; //-32,768~32767 변수의 초기화
int i = 1000000; //-2147483628~2147483627 변수의 초기화
long ln = 1000000000L; //소문자 l 또는 대문자 L을 붙여준다

float ft = 2.456f; //소수점이하 7자리까지, 소문자 f 또는 대문자 F를 붙여준다
double db = 12.1111; //소수점이하 15~16자리까지 표현가능

char ch = '가'; //char:0~65535, 유니코드체계(2byte)를 사용

boolean bool = true; //true, false 는 소문자만 사용가능

String str = "hello nice to meet you!!";  
String str = new String("hello nicec to meet you!!");

//두가지 방법다 가능하다

변수 규칙
1. 대소문자 구분, 길이제한없다
2. 영문자와 숫자를 섞어쓸수있지만 숫자로시작할순없다
3. 한글, 한자도 변수로 사용가능
4. 변수명은 보통 소문자로 시작한다.
5. 특수문자는 변수명으로 사용할수 없다($,_ 는 변수명으로 사용가능)

형변환이란 값의 타입을 다른 타입으로 변환하는것이다.

(기본형은 기본형끼리만 참조형은 참조형끼리만 가능하다)
float ft = 1.6f;
int i = (int)ft;

int -> char : (char)65 : 'A'
char -> int : (int)'A' : 65
float -> int : (int)1.6f : 1 (큰값을 작은값으려 변환할때 data손실이 발생할수있다)
int -> float : (float)10 : 10.0f (작은값을 큰값으로 변환할때는 자동 형변환이 가능하다)

byte bt = 10;
long ln = bt; //자동형변환 (작은값을 큰값으로 변환)
int i = (int)ln; //강제 형변환 (큰값을 작은값으려 변환)

char ch = 'A';

System.out.println(ch+1); -> 66 
(A 는 65라는 아스키 문자값을 가지고 있는데 정수를 더해줄시 정수로 자동형변환이된다)

char ch2 = 'c';
int result = ch2 + 3; (70이란 값이 나온다)

char ch3 = (char)result; (F란 문자열이 출력된다)
(result란 int형이 더크기때문에 강제 형변환을해줘야한다)

'java' 카테고리의 다른 글

배열 Array  (0) 2019.08.01
보조 제어문 break, continue  (0) 2019.08.01
반복문 for, while, do while. +(제어문자)  (0) 2019.08.01
조건문 if, switch  (0) 2019.08.01
연산자  (0) 2019.08.01

+ Recent posts