You are on page 1of 45

JVM

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

C++ C++ inline Class

java java final

1.

public final void method1() {

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

public class A//


{
public static String str = "";
public String name = "";
public static void sing()
{
System.out.println("");
}
public void run()
{
System.out.println("");
}
}
public class B extends A // B
{
public static String str = "B ";
public String name ="B ";
public static void sing()
{
System.out.println("B ");
}
}
public class C extends A // C A
{
}
public class Test//
{
public static void main(String[] args)
{
C c = new C();
System.out.println(c.name);
System.out.println(c.str);
c.sing();//,

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.

public static void main(String[] args){


User c1=new User();
c1.setId(1);
User c2=new User();
c2=c1;
System.out.println(c2.getId());
c1.setId(2);
System.out.println(c2.getId());
String s1="s1";
String s2="s2";
System.out.println(s2);
s2=s1;
s1="sss";
System.out.println(s2);

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 Book(int count){


this.pageCount = count;
}

}
public class Two_object_reference_the_same_object {

01

public static void main(String[] args) {


// TODO Auto-generated method stub
Book b1 = new Book();
int m = b1.getPageCount();
m= 267;
String name = new String();
name = b1.getName();
name = "book of b1";
Date date = b1.getDate();
System.out.println(b1.getDate());// 2016-08long time = (long) (10*365.25*24*60*60*1000);
date.setTime((long) (date.getTime()-time));//

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.

class Book implements Cloneable

public Date getDate() {


return (Date)this.date.clone();

}
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

clone() clone clone()


clone() public
18.
19. clone Cloneable Cloneable

Object clone() clone Cloneable


Object clone() super.Clone() Object clone()
CloneNotSupportedException
20.
21. clone
22.
23.
24. UnCloneACloneBCloneMainCloneB
UnCloneA int clone()CloneMain
UnCloneA b1 clone() b1 b2
b1 b2
25.
26. package clone;
27. class UnCloneA {
28. private int i;
29. public UnCloneA(int ii) { i = ii; }
30. public void doubleValue() { i *= 2; }
31. public String toString() {
32.
return Integer.toString(i);
33. }
34. }
35. class CloneB implements Cloneable{
36. public int aInt;
37. public UnCloneA unCA = new UnCloneA(111);
38. public Object clone(){
39.
CloneB o = null;
40.
try{
41.
o = (CloneB)super.clone();
42.
}catch(CloneNotSupportedException e){
43.
e.printStackTrace();
44.
}
45.
return o;
46. }
47. }
48. public class CloneMain {
49. public static void main(String[] a){
50.
CloneB b1 = new CloneB();
51.
b1.aInt = 11;
52.
System.out.println("before clone,b1.aInt = "+ b1.aInt);
53.
System.out.println("before clone,b1.unCA = "+ b1.unCA);
54.
55.
CloneB b2 = (CloneB)b1.clone();

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);
}
}

/** RUN RESULT:


before clone,b1.aInt = 11
before clone,b1.unCA = 111
=================================
after clone,b1.aInt = 11
after clone,b1.unCA = 222
=================================
after clone,b2.aInt = 22
after clone,b2.unCA = 222
*/

int aInt UnCloneA unCA clone


int clone b2 aInt b1 aInt
b2.aInt b1.aInt b2.aInt
b1.aInt b2.unCA b1.unCA
b2.unCA b1.unCA
Object clone()

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

..... clone cloneable

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.

CloneJava Clone Clone


Clone Clone, 100
Collection Clone
10
183.
184.
Swing
Swing Clone Java Swing
Clone 6
185.
186.
ByteArrayOutputStream
187.
byteOut = new ByteArrayOutputStream();
188.
ObjectOutputStream out
189.
= new ObjectOutputStream(byteOut);
190.
out.writeObject(combo);
191.
192.
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteAr
ray());
193.
ObjectInputStream in
194.
=new ObjectInputStream(byteIn);

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.
}

rotate array in java


n rotate an array of n elements to the right by k steps,
n k
a = {1,2,3,4,5,6,7}, k=3, rotate
{5671234}

1.

1. public class A main public static void main (String[] args),


public void main(String[] args)
2. String str;

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.

Throwable Java Error Exception


Error JVM JVM JVM

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

[java] view plain copy print?


package org.mlinge.s01;

public class MySingleton {

private static MySingleton instance = new MySingleton();

private MySingleton(){}

public static MySingleton getInstance() {


return instance;
}

package org.mlinge.s01;

public class MyThread extends Thread{

@Override
public void run() {
System.out.println(MySingleton.getInstance().hashCode());

public static void main(String[] args) {

MyThread[] mts = new MyThread[10];


for(int i = 0 ; i < mts.length ; i++){
mts[i] = new MyThread();
}

for (int j = 0; j < mts.length; j++) {


mts[j].start();
}
}
}

[plain] view plain copy print?


1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954

hashCode

[java] view plain copy print?


package org.mlinge.s02;

public class MySingleton {

private static MySingleton instance = null;

private MySingleton(){}

public static MySingleton getInstance() {


if(instance == null){//
instance = new MySingleton();
}
return instance;
}
}

[java] view plain copy print?


package org.mlinge.s02;

public class MySingleton {

private static MySingleton instance = null;

private MySingleton(){}

public static MySingleton getInstance() {


try {
if(instance != null){//

}else{
//
Thread.sleep(300);
instance = new MySingleton();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
return instance;
}
}

package org.mlinge.s02;

public class MyThread extends Thread{

@Override
public void run() {
System.out.println(MySingleton.getInstance().hashCode());
}

public static void main(String[] args) {

MyThread[] mts = new MyThread[10];


for(int i = 0 ; i < mts.length ; i++){
mts[i] = new MyThread();
}

for (int j = 0; j < mts.length; j++) {


mts[j].start();
}
}
}

[plain] view plain copy print?


1210420568
1210420568
1935123450
1718900954
1481297610
1863264879
369539795
1210420568
1210420568
602269801

1 synchronized
getInstance()
synchronized

package org.mlinge.s03;

public class MySingleton {

private static MySingleton instance = null;

private MySingleton(){}

public synchronized static MySingleton getInstance() {


try {
if(instance != null){//

}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;

public class MySingleton {

private static MySingleton instance = null;

private MySingleton(){}

//public synchronized static MySingleton getInstance() {


public static MySingleton getInstance() {
try {
synchronized (MySingleton.class) {
if(instance != null){//

}else{
//
Thread.sleep(300);

instance = new MySingleton();


}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
return instance;
}
}

package org.mlinge.s04;

public class MySingleton {

private static MySingleton instance = null;

private MySingleton(){}

public static MySingleton getInstance() {


try {
if(instance != null){//

}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

4 Double Check Locking


DCL

[java] view plain copy print?


package org.mlinge.s05;

public class MySingleton {

// volatile
volatile private static MySingleton instance = null;

private MySingleton(){}

public static MySingleton getInstance() {


try {
if(instance != null){//

}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

[java] view plain copy print?


package org.mlinge.s06;

public class MySingleton {

//
private static class MySingletonHandler{
private static MySingleton instance = new MySingleton();
}

private MySingleton(){}

public static MySingleton getInstance() {


return MySingletonHandler.instance;

}
}
MyThread
org.mlinge.s06
[java] view plain copy print?
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954

[java] view plain copy print?


package org.mlinge.s07;

import java.io.Serializable;

public class MySingleton implements Serializable {

private static final long serialVersionUID = 1L;

//
private static class MySingletonHandler{

private static MySingleton instance = new MySingleton();


}

private MySingleton(){}

public static MySingleton getInstance() {


return MySingletonHandler.instance;
}
}

[java] view plain copy print?


package org.mlinge.s07;

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;

public class SaveAndReadForSingleton {

public static void main(String[] args) {


MySingleton singleton = MySingleton.getInstance();

File file = new File("MySingleton.txt");

try {

FileOutputStream fos = new FileOutputStream(file);


ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(singleton);
fos.close();
oos.close();
System.out.println(singleton.hashCode());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

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();
}

}
}

[sql] view plain copy print?


865113938
1442407170
hashCode hashCode

readResolve()
[java] view plain copy print?
package org.mlinge.s07;

import java.io.ObjectStreamException;
import java.io.Serializable;

public class MySingleton implements Serializable {

private static final long serialVersionUID = 1L;

//
private static class MySingletonHandler{
private static MySingleton instance = new MySingleton();
}

private MySingleton(){}

public static MySingleton getInstance() {


return MySingletonHandler.instance;
}

//
protected Object readResolve() throws ObjectStreamException {

System.out.println(" readResolve ");


return MySingletonHandler.instance;
}
}

[plain] view plain copy print?


865113938
readResolve
865113938
readResolve

6 static

[java] view plain copy print?


package org.mlinge.s08;

public class MySingleton{

private static MySingleton instance = null;

private MySingleton(){}

static{
instance = new MySingleton();
}

public static MySingleton getInstance() {

return instance;
}
}

[java] view plain copy print?


package org.mlinge.s08;

public class MyThread extends Thread{

@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(MySingleton.getInstance().hashCode());
}
}

public static void main(String[] args) {

MyThread[] mts = new MyThread[3];


for(int i = 0 ; i < mts.length ; i++){
mts[i] = new MyThread();
}

for (int j = 0; j < mts.length; j++) {


mts[j].start();
}
}
}

[java] view plain copy print?


1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954
1718900954

7
enum

[java] view plain copy print?


package org.mlinge.s09;

public enum EnumFactory{

singletonFactory;

private MySingleton instance;

private EnumFactory(){//
instance = new MySingleton();
}

public MySingleton getInstance(){


return instance;
}

class MySingleton{// Connection


public MySingleton(){}

[java] view plain copy print?


package org.mlinge.s09;

public class MyThread extends Thread{

@Override
public void run() {
System.out.println(EnumFactory.singletonFactory.getInstance().hashCode());
}

public static void main(String[] args) {

MyThread[] mts = new MyThread[10];


for(int i = 0 ; i < mts.length ; i++){
mts[i] = new MyThread();
}

for (int j = 0; j < mts.length; j++) {


mts[j].start();
}
}
}

[java] view plain copy print?


1481297610
1481297610
1481297610
1481297610
1481297610
1481297610
1481297610
1481297610
1481297610
1481297610

8 enum

[java] view plain copy print?


package org.mlinge.s10;

public class ClassFactory{

private enum MyEnumSingleton{


singletonFactory;

private MySingleton instance;

private MyEnumSingleton(){//
instance = new MySingleton();
}

public MySingleton getInstance(){


return instance;
}
}

public static MySingleton getInstance(){


return MyEnumSingleton.singletonFactory.getInstance();
}
}

class MySingleton{// Connection


public MySingleton(){}
}

[java] view plain copy print?


package org.mlinge.s10;

public class MyThread extends Thread{

@Override
public void run() {
System.out.println(ClassFactory.getInstance().hashCode());

public static void main(String[] args) {

MyThread[] mts = new MyThread[10];


for(int i = 0 ; i < mts.length ; i++){
mts[i] = new MyThread();
}

for (int j = 0; j < mts.length; j++) {


mts[j].start();
}
}
}

[java] view plain copy print?


1935123450
1935123450
1935123450
1935123450
1935123450
1935123450
1935123450
1935123450
1935123450
1935123450

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;
}
}

public class Client {


public static void main(String[] args) {
//
Factory factory = new ConcreteFactory();
//.class
IProduct product01 = factory.createProduct(ConcreteProductA.class);
IProduct product02 = factory.createProduct(ConcreteProductB.class);
product01.method01();
product01.method02();
product02.method01();
product02.method02();
}
}

C
int*pint=0;
pint+=6;

cout << pint << endl;


pint 0 int 1
int 6 0x18

1. String
String str = new String(); str
String[] str = new String[3]; str[0] null;

IO

1abstract
2 new

4 abstract
5

2abstract class Java


interface Remote

3 abstract class abstarct


interface static final
interface public abstract
4abstract class interface abstract class "isa"interface "has-a"
5

6 public static final


friendly
4abstract class interface abstract class
"is-a"interface "has-a"
5

6 public static final


friendly

You might also like