Professional Documents
Culture Documents
JVM
1):
2Java Java
Stack Frame
3
Native
4java java heap Java
Java
, Java
Eden From Survivor To Survivor , Java
5)method area:
IP A,B,C
Java
http://blog.csdn.net/chlhp/article/details/6992644
1.
2.
3.
//TODO something
final
final final
JVM
class A
{
int value;
public final int get(){
return value;
}
public class B
{
public void sum()
{
A a=new A();
int x=a.get();
int y = a.get();
int sum= x+y;
}
}
class A
{
int value;
public final int get(){
return value;
}
}
public class B
{
public void sum()
{
A a=new A();
int x=a.value;
int y = a.value;
int sum= x+y;
}
}
private
A c1 = new C();
System.out.println(c1.name);
System.out.println(c1.str);
c1.sing();//,
B b = new B();
System.out.println(b.name);
System.out.println(b.str);
b.sing();//
A b1 = new B();
System.out.println(b1.str);//
System.out.println(b1.name);//
b1.sing();//
}
}
java java
http://blog.csdn.net/cynhafa/article/details/8678181
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
1
2
s2
s1
java
35.
36. java
37. java
38. bean
import java.sql.Date;
class Book implements Cloneable{
private int pageCount;
private Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
private String nameString;
public Book(){
pageCount = 100;
nameString = "book";
date = new Date(System.currentTimeMillis());
}
public int getPageCount(){
return this.pageCount;
}
public void setPageCount(int a){
this.pageCount = a;
}
public String getName(){
return this.nameString;
}
public void setName(String n){
this.nameString = n;
}
public String toString(){
return "this book's page count is "+
this.pageCount+"name:"+this.nameString+"date:"+this.dat
e.toString();
}
}
public class Two_object_reference_the_same_object {
01
10
System.out.println(b1);//this book's page
count is 100name:bookdate:2006-08-02
Book b2 = b1;
b2.setPageCount(190);
date.setTime((long) (date.getTime()-time));
b2.setDate(date);
b2.setName(name);
System.out.println(b1); //this book's page
count is 190name:book of b1date:1996-08-01
b1.setPageCount(200);
b1.setName("book of b2");
date.setTime((long) (date.getTime()-time));
b1.setDate(date);
System.out.println(b2);//this book's page
count is 200name:book of b2date:1986-08-02
Book b3= new Book();
b3 = null;
System.out.println(b3); // null
String s1 = "123";
String s2 = s1;
s1 = null;
//s2= "test";
System.out.println("s2:"+s2); // 123
int a = 5;
int b = a;
b = 6;
System.out.println("a:"+a); // 5
String s3 = new String("456");
String s4 = new String();
s4= s3;
//s3 = "789";
s4 = "789";
System.out.println("s3:"+s3); // 456
}
}
1. A A
A B B
A A B B
A Java
clone
2.
3. Java java.lang.Object java.lang.Object
clone()JDK API Object
new
Book
1.
}
B A
1. clone()
2.
3. class CloneClass implements Cloneable{
4.
public int aInt;
5.
public Object clone(){
6.
CloneClass o = null;
7.
try{
8.
o = (CloneClass)super.clone();
9.
}catch(CloneNotSupportedException e){
10.
e.printStackTrace();
11.
}
12.
return o;
13. }
14.
15. clone CloneClass
Cloneable java.lang java.lang
java.lang.Cloneable clone()
clone() super.clone() clone
super.clone() java.lang.Object clone()
16.
17. Object clone() native
native java native
Object clone() new
clone Object clone()
protected clone()
Object Java Object
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
b2.aInt = 22;
b2.unCA.doubleValue();
System.out.println("=================================");
System.out.println("after clone,b1.aInt = "+ b1.aInt);
System.out.println("after clone,b1.unCA = "+ b1.unCA);
System.out.println("=================================");
System.out.println("after clone,b2.aInt = "+ b2.aInt);
System.out.println("after clone,b2.unCA = "+ b2.unCA);
}
}
clone
84.
85. clone clone "
clone" b2.unCA b2.unCA b2.unCA
b1.unCA clone
86.
87. clone
88.
89.
90. clone UnCloneA
CloneB clone Cloneable clone()
CloneB clone() o.unCA = (UnCloneA)unCA.clone();
91.
92.
93.
94. package clone.ext;
95. class UnCloneA implements Cloneable{
96. private int i;
97. public UnCloneA(int ii) { i = ii; }
98. public void doubleValue() { i *= 2; }
99. public String toString() {
100.
return Integer.toString(i);
101.
}
102.
public Object clone(){
103.
UnCloneA o = null;
104.
try{
105.
o = (UnCloneA)super.clone();
106.
}catch(CloneNotSupportedException e){
107.
e.printStackTrace();
108.
}
109.
return o;
110.
}
111.
}
112.
class CloneB implements Cloneable{
113.
public int aInt;
114.
public UnCloneA unCA = new UnCloneA(111);
115.
public Object clone(){
116.
CloneB o = null;
117.
try{
118.
o = (CloneB)super.clone();
119.
}catch(CloneNotSupportedException e){
120.
e.printStackTrace();
121.
}
122.
o.unCA = (UnCloneA)unCA.clone();
123.
return o;
124.
}
125.
}
126.
public class CloneMain {
127.
public static void main(String[] a){
128.
CloneB b1 = new CloneB();
129.
b1.aInt = 11;
130.
System.out.println("before clone,b1.aInt = "+ b1.aInt);
131.
System.out.println("before clone,b1.unCA = "+ b1.unCA);
132.
133.
CloneB b2 = (CloneB)b1.clone();
134.
b2.aInt = 22;
135.
b2.unCA.doubleValue();
136.
System.out.println("=================================");
137.
System.out.println("after clone,b1.aInt = "+ b1.aInt);
138.
System.out.println("after clone,b1.unCA = "+ b1.unCA);
139.
System.out.println("=================================");
140.
System.out.println("after clone,b2.aInt = "+ b2.aInt);
141.
System.out.println("after clone,b2.unCA = "+ b2.unCA);
142.
}
143.
}
144.
145.
/** RUN RESULT:
146.
before clone,b1.aInt = 11
147.
before clone,b1.unCA = 111
148.
=================================
149.
after clone,b1.aInt = 11
150.
after clone,b1.unCA = 111
151.
=================================
152.
after clone,b2.aInt = 22
153.
after clone,b2.unCA = 222
154.
*/
155.
156.
157.
158.
159.
160.
b2.unCA b1.unCA b1.unCA
b2.unCA UnCloneA CloneB b2 = (CloneB)b1.clone
(); b1 b2 b1.i = b2.i = 11
161.
162.
clone CloneB
UnCloneA StringBuffer JDK API
StringBuffer StringBuffer clone() StringBuffer
final StringBuffer
clone StringBuffer StringBuffer
clone clone()
SringBuffer unCA o.unCA = new StringBuffer(unC
A.toString()); //o.unCA = (UnCloneA)unCA.clone();
163.
164.
clone String
clone clone
165.
166.
clone
167.
168.
2
169.
170.
Windows
Unix
171.
172.
RMISocketJMSEJB Java
173.
174.
Java
(JTree)
175.
176.
XML
XML
XML
ABC
123
177.
178.
Java
179.
180.
181.
182.
195.
JComboBox comb2 = (JComboBox)in.readObject();
196.
197.
198.
Java
199.
200.
serialVersionUID
Singleton
201.
202.
203.
/**
204.
* Clone Object
205.
* @param obj
206.
* @return
207.
* @throws Exception
208.
*/
209.
private Object cloneObject(Object obj) throws Exception{
210.
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
211.
ObjectOutputStream out = new ObjectOutputStream(byteOut);
212.
out.writeObject(obj);
213.
214.
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toB
yteArray());
215.
ObjectInputStream in =new ObjectInputStream(byteIn);
216.
217.
return in.readObject();
218.
}
1.
Syso(str); //
String car = new String();
Syso(var); //
3. Do{
}
While();
int a = 1,j=10;
do{
if(a++>--j)
continue;
}while(a<5);
System.out.println("a:"+a+"j:"+j);
A = 5, j=6
:
1.
Exception
Java :runtime exception checked exceptionchecked
IO SQL JAVA
catch catch
runtime exception
NullPointerException
Thread.run() main()
Exception Catch
java ExceptionruntimeException
NullPointerException -
ClassCastException -
IllegalArgumentException -
ArithmeticException -
ArrayStoreException -
IndexOutOfBoundsException -
NegativeArraySizeException -
NumberFormatException -
SecurityException -
UnsupportedOperationException -
Java
Java
?
1
2
Printer Spooler
private MySingleton(){}
package org.mlinge.s01;
@Override
public void run() {
System.out.println(MySingleton.getInstance().hashCode());
hashCode
private MySingleton(){}
private MySingleton(){}
}else{
//
Thread.sleep(300);
instance = new MySingleton();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
return instance;
}
}
package org.mlinge.s02;
@Override
public void run() {
System.out.println(MySingleton.getInstance().hashCode());
}
1 synchronized
getInstance()
synchronized
package org.mlinge.s03;
private MySingleton(){}
}else{
//
Thread.sleep(300);
instance = new MySingleton();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
return instance;
}
}
MyThread
org.mlinge.s03
[plain] view plain copy print?
1689058373
1689058373
1689058373
1689058373
1689058373
1689058373
1689058373
1689058373
1689058373
1689058373
2
ackage org.mlinge.s03;
private MySingleton(){}
}else{
//
Thread.sleep(300);
package org.mlinge.s04;
private MySingleton(){}
}else{
//
Thread.sleep(300);
synchronized (MySingleton.class) {
instance = new MySingleton();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
return instance;
}
}
MyThread
org.mlinge.s04
[plain] view plain copy print?
1481297610
397630378
1863264879
1210420568
1935123450
369539795
590202901
1718900954
1689058373
602269801
// volatile
volatile private static MySingleton instance = null;
private MySingleton(){}
}else{
//
Thread.sleep(300);
synchronized (MySingleton.class) {
if(instance == null){//
instance = new MySingleton();
}
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
return instance;
}
}
MyThread org.mlinge.s05
369539795
369539795
369539795
369539795
369539795
369539795
369539795
369539795
369539795
369539795
volatile
4
DCL
//
private static class MySingletonHandler{
private static MySingleton instance = new MySingleton();
}
private MySingleton(){}
}
}
MyThread
org.mlinge.s06
[java] view plain copy print?
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
import java.io.Serializable;
//
private static class MySingletonHandler{
private MySingleton(){}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
try {
try {
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
MySingleton rSingleton = (MySingleton) ois.readObject();
fis.close();
ois.close();
System.out.println(rSingleton.hashCode());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
readResolve()
[java] view plain copy print?
package org.mlinge.s07;
import java.io.ObjectStreamException;
import java.io.Serializable;
//
private static class MySingletonHandler{
private static MySingleton instance = new MySingleton();
}
private MySingleton(){}
//
protected Object readResolve() throws ObjectStreamException {
6 static
private MySingleton(){}
static{
instance = new MySingleton();
}
return instance;
}
}
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(MySingleton.getInstance().hashCode());
}
}
7
enum
singletonFactory;
private EnumFactory(){//
instance = new MySingleton();
}
@Override
public void run() {
System.out.println(EnumFactory.singletonFactory.getInstance().hashCode());
}
8 enum
private MyEnumSingleton(){//
instance = new MySingleton();
}
@Override
public void run() {
System.out.println(ClassFactory.getInstance().hashCode());
Java +
++
http://haolloyin.blog.51cto.com/1177454/332576/
//
interface IProduct {
public void method01();
public void method02();
}
//
class ConcreteProductA implements IProduct {
public void method01() {
System.out.println("ConcreteProductA method01() ...");
}
public void method02() {
System.out.println("ConcreteProductA method02() ...");
}
}
class ConcreteProductB implements IProduct {
public void method01() {
System.out.println("ConcreteProductB method01() ...");
}
public void method02() {
System.out.println("ConcreteProductB method02() ...");
}
}
// createProduct()
abstract class Factory {
// Java
public abstract <T extends IProduct> T createProduct(Class<T> c);
}
class ConcreteFactory extends Factory {
public <T extends IProduct> T createProduct(Class<T> c) {
T product = null;
try {
product = (T) Class.forName(c.getName()).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return product;
}
}
C
int*pint=0;
pint+=6;
1. String
String str = new String(); str
String[] str = new String[3]; str[0] null;
IO
1abstract
2 new
4 abstract
5