JAVA SE6全方位学习总结
第1~6章
1,两种运行java Applet的方式
package ch2;
import java.awt.*;
//这是一个java Applet的样本,展示了两种运行java Applet的方式,直接运行,和在html代码中运行
public class SayHello extends java.applet.Applet
{
public void init()
{
setSize(100,100);
}
public void paint(Graphics g)
{
g.drawString("Hello Java 2!",20,50);
}
}
直接运行java SayHello.java 或者或在html里运行:appletviewer SayHello.java
2,带标签的break和continue的用法:
package ch6;
//loop的用法,还有break,continue,可以试试去掉loop以后使用break和continue的效果,是不一样的
public class Mark
{
public static void main(String argv[])
{
int i,j;
Loop1:
for (i=1;i<=5;i++)
{
Loop2:
for (j=1;j<=5;j++)
{
if (j == 3)
break Loop2;//跳出loop2循环
if (i == j)
continue Loop1;//继续下一轮的loop1循环
System.out.println(i+"*"+j+"="+i*j);
}
}
}
}
第7~8章
1,类类型在类族中的转换,转换后关于方法调用注意的问题!
2,super(),this()调用父类构造函数和自己的其他构造函数,规则
3,重载,遮蔽(属性),改写(方法)
4,接口注意事项,标记接口的概念和用处
public class Prog8_5
{
public static void main(String argv[])
{
Tank tank = new Tank();
Fighter fighter = new Fighter();
/*类型是Tank的,两个方法都可以调用,若Car tank = new Tank();
则tank只能调用Car里德方法move*/
tank.move();
tank.shoot();
fighter.move();
fighter.shoot();
}
}
public class Prog8_6
{
public static void main(String argv[])
{
Weapon tank = new Tank();//接口也可以当一个类型来声明对象!!!
Weapon fighter = new Fighter();
tank.shoot();//只能调用这个接口里的方法!!!
fighter.shoot();
}
}
区别!!!
第9章 Object类常用方法
1,类的类型转换,兄弟类型不能转换,通过转换为父类在往兄弟类型转也不行!!!一个是编译时错误一个是运行时错误。
不论你怎样转来转去,一个对象当初是什么样的类,它永远都是那个类的对象
在转换过程中的调用方法和属性的问题?、、?
2,对象包含内容相等的判断,对于你自己的类,需要改写equals方法,举个例子:
public class MyObject
{
public int data;
public MyObject(int i)
{
data=i;
}
public boolean equals(Object obj)
{
if (obj != null && (obj instanceof MyObject))
if (this.data == ((MyObject)obj).data)
return true;
return false;
}
}
3,散列码
两个相同的对象(内容相同,不是引用相同)他们的散列码相同。散列吗是改写的方式是将用于equals方法中的属性,取其wrapper了类的hash code,所以你改写equals的时候,hashcode也要改写
package ch9.equals;
public class MyObject implements Cloneable
{
public int data;
public MyObject(int i)
{
data=i;
}
public boolean equals(Object obj)
{
if (obj != null && (obj instanceof MyObject))
if (this.data == ((MyObject)obj).data)
return true;
return false;
}
public int hashCode()
{
return (new Integer(data).hashCode());
}
public Object clone()
{
try
{
return super.clone();
}
catch (CloneNotSupportedException e)
{
System.out.println(e);
return null;
}
}
}
package ch9.equals;
public class Prog9_6
{
public static void main(String argv[])
{
MyObject obj1 = new MyObject(1);
MyObject obj2 = new MyObject(1);
MyObject obj3 = new MyObject(3);
//1,2hashcode相等
System.out.println("obj1's hash code :"+obj1.hashCode());
System.out.println("obj2's hash code :"+obj2.hashCode());
System.out.println("obj3's hash code :"+obj3.hashCode());
}
}
以上还包含了对象clone的方法!!!
第十章 深入内存
1,java.util.Arrays API的使用
toString与deepToString,deepEquals,,排序sort。查找binarySearch
2,参数传递,只有传值!传对象引用其实也是传值
3,垃圾回收
finalize是在对象被回收前,GC调用到的方法,可以利用它做一些事情,确认对象有没有被回收。打印信息什么的
第十八章 内部类
成员是内部类:类级别和对象级别。
区别!!!
public class InnerClasses { private static String staticAttribute = "Outter class' static attribute"; private String instantiateAttribute = "Outter class' instantiate attribute"; public void instantiateMethod() { System.out.println("Outter class' intantiate method"); } public static void staticMethod() { System.out.println("Outter class' static method"); } public static class StaticInnerClass { public StaticInnerClass() { System.out.println("static Inner class"); } public void access() { System.out.println(staticAttribute); staticMethod(); } } public class InstantiateInnerClass { public InstantiateInnerClass() { System.out.println("Instantiate Inner class"); } public void access() { System.out.println(instantiateAttribute); instantiateMethod(); } } }
public class InnerClassExample1 { public static void main(String argv[]) { InnerClasses.StaticInnerClass in; in = new InnerClasses.StaticInnerClass(); in.access(); } }
public class InnerClassExample2 { public static void main(String argv[]) { InnerClasses out = new InnerClasses(); InnerClasses.InstantiateInnerClass in; in = out.new InstantiateInnerClass(); in.access(); } }
两种成员是内部类的访问方法!
区域式内部类
匿名内部类!
第19,20章 包装类 深入字符串处理
略
第21章 文件处理 线程
前面已写
数据流连接的原理!Filter流类体系。很重要