Programming/Java2014. 3. 11. 17:07
java에서 class 에 접근제한을 하지 않고 (ex. public class) 생성시에는
동일 패키지에 대해서만 접근이 가능하도록 생성이 된다.

[링크 : http://stackoverflow.com/questions/16164902/what-is-the-default-access-modifier-in-java]

 A class may be declared with the modifier public, in which case that class is visible to all classes everywhere. If a class has no modifier (the default, also known as package-private), it is visible only within its own package (packages are named groups of related classes — you will learn about them in a later lesson.)
 

[링크 : http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html


public > protected > default > private
public - 전부 허용
protected - 동일 패키지, 상속관계시 허용
default - 동일 패키지, 전부 허용
private - 현재 class / object만 허용

'Programming > Java' 카테고리의 다른 글

java 1.5 이후 추가 for-each / varargs(autoboxing)  (0) 2014.03.11
JUnit 사용 예  (0) 2014.03.11
*.java 파일 하나에 여러개의 class 생성  (0) 2014.03.11
java 명령어 줄 인수  (0) 2014.03.10
java break / continue  (0) 2014.03.10
Posted by 구차니
Programming/Java2014. 3. 11. 17:01
하나의 파일에 여러개의 class를 추가할수 있으나
파일명과 동일한 클래스는 반드시 public 이어야 한다.
그리고 동일 파일내에 다른 클래스들 역시 독립된 *.class 파일로 생성된다.

[링크 : https://kldp.org/node/69225]
[링크 : http://k.daum.net/qna/view.html?qid=3fqBg]

'Programming > Java' 카테고리의 다른 글

JUnit 사용 예  (0) 2014.03.11
java class default access modifier  (0) 2014.03.11
java 명령어 줄 인수  (0) 2014.03.10
java break / continue  (0) 2014.03.10
java와 cpp의 차이점 - 연산자 오버로딩 / 다중상속  (0) 2014.03.10
Posted by 구차니
Programming/Java2014. 3. 10. 17:09
java는 파일명이 클래스명과 동일해야 하므로
c와 같이 인자 0번이 실행된 파일의 이름이 아니라 첫번째 인자가 들어온다.

public class test {

public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(args.length);
for(int i = 0; i < args.length;i++)
System.out.println(args[i]);
}
}

일반적으로 많이 쓰일 문자열 인자를 숫자로 바꾸어주는 parse 관련 클래스/메소드들
Char 클래스는 존재하지 않나? 
Double.parseDouble();
Float.parseFloat();
Boolean.parseBoolean();
Byte.parseByte();
Short.parseShort();
Integer.parseInt(s);
Long.parseLong(); 

[링크 : http://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html]
Posted by 구차니
Programming/Java2014. 3. 10. 16:32
java에서는 goto가 없지만 break와 continue에 label을 지원한다.
[링크 : http://stackoverflow.com/questions/2545103/is-there-a-goto-statement-in-java]

 The break statement terminates the labeled statement; it does not transfer the flow of control to the label. Control flow is transferred to the statement immediately following the labeled (terminated) statement.

[링크 : http://stackoverflow.com/questions/14960419/is-using-a-labeled-break-a-good-practice-in-java

단, 반복문과 라벨 사이에는 어떠한 문장도 들어가서는 안되며 무언가가 삽입되었을 시에는
"The label -label name- is missing"이라는 에러가 발생된다.


[링크 : http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html]
Posted by 구차니
Programming/Java2014. 3. 10. 13:10
연산자 오버로딩 / 다중 상속을
cpp는  허용
자바는 허용하지 않는다.


다중상속의 경우 다중상속시 상속했던 클래스들을 모두 알아야 하기에 정보 은닉 및 캡슐화에 치명적이고
(결국 볼게 더 많아진 c 일뿐 유지 보수 측면에서)

연산자 오버로딩은 변형이 심하게 될 경우 파악해야할 부분이 많이 늘어나기에 가독성이 떨어져서 이래저래 빼버린듯 하다.
(극단적으로 클래스에 대한 operator[] 를 전혀 다르게 정의해서 사용한다면
배열로 사용할 수 없지만 해석하는 사람으로서는 혼동할 수 밖에 없다.)

'Programming > Java' 카테고리의 다른 글

java 명령어 줄 인수  (0) 2014.03.10
java break / continue  (0) 2014.03.10
java explicit upcasting 묵시적 형변환  (0) 2014.03.07
java byte 형의 오묘함  (0) 2014.03.07
java primitive data type + 연산자  (0) 2014.03.07
Posted by 구차니
Programming/Java2014. 3. 7. 21:20
문득 c나 cpp에서도 그런진 모르겠지만..
(type binding을 지원하는 cpp는 되지 않을까?) 

일단 타입이 강하게 묶여있기 때문에
int 형으로 계산을 하고 나서 long 형으로 변환하는 건 이미 데이터가 손실 되어 의미가 없어진다.
무조건 계산 전에는 형 변환을 해주고 시작하는 것이 옳다(!).

그리고 두개의 크기가 다른 타입을 계산할 경우 자동으로 큰 쪽으로 맞추어지나
정수형은 int 형이 최고 타입으로 long 형으로는 자동적으로 크기가 키워지진 않는다.

System.out.println(1000000 * 1000000);
System.out.println(1000000 * (long)1000000);
System.out.println((long)1000000 * 1000000);
System.out.println((long)1000000 * (long)1000000);
System.out.println((long)(1000000 * 1000000));
System.out.println(1000000 * 1000000L);
System.out.println(1000000L * 1000000);
System.out.println(1000000L * 1000000L); 

-727379968
1000000000000
1000000000000
1000000000000
-727379968
1000000000000
1000000000000
1000000000000 

'Programming > Java' 카테고리의 다른 글

java break / continue  (0) 2014.03.10
java와 cpp의 차이점 - 연산자 오버로딩 / 다중상속  (0) 2014.03.10
java byte 형의 오묘함  (0) 2014.03.07
java primitive data type + 연산자  (0) 2014.03.07
java framework  (0) 2014.03.06
Posted by 구차니
Programming/Java2014. 3. 7. 21:13
1byte * 1byte를 해도 2byte가 한계임에도 불구하고 int 형으로 강제하는 것은
자바 컴파일러의 특성이나 언어적 정의 같은 느낌인데..

아무튼 a = 3; b = 4; 로 해도
값이 오버플로우 되지 않음에도 불구하고 강제로 int 형으로 하도록 한다.

short 형은 버림 받은 느낌이고...
public static void main(String[] args) {
// TODO Auto-generated method stub
byte a = 10;
byte b = 30;
byte c = (byte)(a * b);

System.out.println(c);
} 

(byte)를 빼면
 Type mismatch : cannot convert from int to byte
라고 에러(!)가 발생한다.

'Programming > Java' 카테고리의 다른 글

java와 cpp의 차이점 - 연산자 오버로딩 / 다중상속  (0) 2014.03.10
java explicit upcasting 묵시적 형변환  (0) 2014.03.07
java primitive data type + 연산자  (0) 2014.03.07
java framework  (0) 2014.03.06
java tutorial docs  (0) 2014.03.06
Posted by 구차니
Programming/Java2014. 3. 7. 16:38
long 형에 int형의 범위를 넘는 값을 입력할 경우 L을 붙여 주지 않으면 에러가 발생한다.
(The Literal 9223372036854775807 of type int is out of range)

실수는 d 식별자가 없으면 double형으로 인식한다.
float 형에만 강제로 f를 붙여 주어야 함.

Data TypeDefault Value (for fields)
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char '\u0000'
String (or any object)   null
boolean false
[링크 : http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html]

변수 크기
boolean - true/false 1bit
byte - 1byte
char - 2byte

short - 2byte
int - 4byte
long - 8byte

float - 4byte
double - 8byte

>>> unsigned bitwise shift right
c에서는 타입에 따라서 unsigned shift / signed shift를 사용하지만
자바는 기본적으로 signed이기에 unsigned shift가 별도로 연산자 제공이 된다.
[링크 : http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html]

JVM 32bit/ 64bit 상관없이 long은 64bit
[링크 : http://stackoverflow.com/questions/9511836/size-of-java-primitives-on-32-64-bit-jvm]

JAVA 8 부터 unsigned int 지원예정
[링크 : http://stackoverflow.com/questions/9854166/declaring-an-unsigned-int-in-java]
[링크 : https://blogs.oracle.com/darcy/entry/unsigned_api]

'Programming > Java' 카테고리의 다른 글

java explicit upcasting 묵시적 형변환  (0) 2014.03.07
java byte 형의 오묘함  (0) 2014.03.07
java framework  (0) 2014.03.06
java tutorial docs  (0) 2014.03.06
java sdk 설치경로  (0) 2012.03.18
Posted by 구차니
Programming/Java2014. 3. 6. 18:06

'Programming > Java' 카테고리의 다른 글

java byte 형의 오묘함  (0) 2014.03.07
java primitive data type + 연산자  (0) 2014.03.07
java tutorial docs  (0) 2014.03.06
java sdk 설치경로  (0) 2012.03.18
java arraylist에서 중복항목 제거하기  (2) 2012.02.16
Posted by 구차니
Programming/Java2014. 3. 6. 15:10
epub 로도 제공하는데 일단 다운받아서 아이리버 스토리에 넣어보니
Updated for Java SE 7 이라고 나온다. 오오오!!!

docs.sun.com/java 가 아니라 docs.oracle.com/javase 라니 먼가 미묘한 기분... ㅠㅠ

[링크 : http://docs.oracle.com/javase/tutorial/]
    [링크 : http://www.oracle.com/technetwork/java/javase/java-tutorial-downloads-2005894.html

'Programming > Java' 카테고리의 다른 글

java primitive data type + 연산자  (0) 2014.03.07
java framework  (0) 2014.03.06
java sdk 설치경로  (0) 2012.03.18
java arraylist에서 중복항목 제거하기  (2) 2012.02.16
java xml dom 파싱  (0) 2012.02.06
Posted by 구차니