一、String类的内存解析:
二、Junit的单元测试(eclipse):
如何使用:点击工程----右键----buildpath---addlibrary---jnuit---junit4
创建一个没有返回值,形参为空的方法,并加上标注(@Test)
三、static:被它修饰的成员,被所有的对象所共享
四、抽象&接口:
abstract 不能修饰:private、final、static、属性、构造器
接口:只有变量和抽象的方法,接口定义的是一种功能
四、内部类:
class Person{
String name="我是外部类";
class Student{
String name="我是内部类";
public void show(String name){
System.out.println(name);//我是内部类方法
System.out.println(this.name);//我是内部类
System.out.println(Person.this.name);//我是外部类
}
}
}
public class Test{
public static void main(String[] args){
Person.Student stu=(new Person()).new Student();
stu.show("我是内部类方法");
}
}
五、初始化块:
主要是对属性进行赋值的
六、设计模式:
①:单例设计模式:只允许创建一个此类的对象
1)饿汉式:
class Single{
private static Single single=new Single();
private Single(){}
pulbic static Single getInstance(){
return single;
}
}
2)懒汉式:
class Single{
private static Single single=null;
private Single(){};
public static synchronized Single getInstance(){
if(single==null){
single =new Single();
}
return single;
}
}
②:模板方法:就是抽象类的使用
③:接口之工厂方法:
interface A{
void show();
}
class A1 implements A{
public void show(){
System.out.println("我是A1");
}
}
class A2 implements A{
public void show(){
System.out.println("我是A2");
}
}
interface B{
A getInstance();
}
class B1 implements B{
public A getInstance(){
return new A1();
}
}
class B2 implements B{
public A getInstance(){
return new A2();
}
}
public class Test{
public static void main(String[] args){
new B1().getInstance().show();
new B2().getInstance().show();
}
}
④:接口方法之代理模式:代理类和被代理类都实现同一个接口,当调用被代理类的的方法的时候实际上上是调用代理的方法
interface Object{
void action();
}
//被代理类
class RoxyObject{
ObjectImpl obj;
public RoxyObject(){
System.out.println("创建了一个被代理类");
obj=new ObjectImpl();
}
public void action(){
System.out.println("被代理类执行");
obj.action();
System.out.println("被代理类执行完");
}
}
//代理类
class ObjectImpl{
public void action(){
System.out.println("----代理类开始-----");
System.out.println("-------代理类执行结束--------");
}
}
public class Test{
public static void main(String[] args){
new RoxyObject().action();
}
}
七、包转类和基本数据
①:自动装箱(基本-----包装类)
int i =10;
Integer i1=i;
②:自动拆箱(包装---基本)
Integer i=10;
int i1=i;
注意:Integer i =null; int i1=i; //这样是不行的,会报空指针异常,相当于:int i1=i.intValue();
③:String-----基本、包装
String s1="10";
int i =Integer.parseInt(s1);
④:基本、包装-----String
int i =10;
String str=String.valueOf(i);