CLASSPATH

java执行命令时利用此路径加在需要的.class文件

字符串常量就是String 类的匿名对象

String类在直接复制的情况下只会保留一块堆内存

a="hhh"
b="hhh"
a==b true

String a="hee";
String b="hee";
String c="he";
c+='e';
System.out.println(a.hashCode()+" "+b.hashCode()+" "+c.hashCode());
在这种情况下 a,b同一 hashcode 相同

	String a=new String("hee");
	String b="hee";
	String c="he";
	c+="e";
	System.out.println(a==b);
        System.out.println(b==c);		
            System.out.println(a.hashCode()+" "+b.hashCode()+" "+c.hashCode());

a,b,c均不同一
String 采用了 共享设计的设计模式
String a=new String("sssd")会导致内存浪费
使用new就不会入共享池

手工入共享池
String a=new String("hee").intern();
String b="hee";
a==b true;这下ab同一

字符串一旦定义就无法改变,对字符串的链接实际上是进行引用关系的改变
回避大量修改字符串的代码,会产生大量的垃圾内存区域
可以修改的字符串类型:
StringBuffer
StringBuilder类 作为代替

equals() equalsIgnoreCase() 是判断是否相等

repleaseAll() 方法可以代替字符串中的所有某一字符

this()在一个构造函数中调用其他的构造函数,这种情况只可以在构造函数的第一行调用this()(其他构造函数)

在java中函数传参是基础类型传值,对象类型传引用

但有一个特例。String 是对象类型,但是由于其不会改变值,所以行为看起来就像基本类型一样##

常用的内存区域
栈内存空间 : 对象的引用
堆内存空间 : 对方的属性内容
全局数据区 : static 属性
全局代码区: 方法的定义

static 方法不能调用 非 static方法
非static方法可以调用 static 方法

调用主方法时,如果参数本身就带有空格 那么用“”表示字符串就可以

代码块#

普通代码块,
静态代码块,
构造块,
同步代码块。
普通代码块:没什么鸟用,在里面是局部变量,外面是全局变量(范围更大一些)
构造块: 在类内部,且不论再哪里都会优先于构造方法执行(实例化的时候调用)
静态块:在类内部,且无论实例化多少次都只会有调用一次静态块,一般用于静态变量的初始化
在主程序的静态块先于主程序执行

内部类##

指定属性时候
outer.this.XXX
这样这顶属性

声明一个内部类
outer.inner a=new outer().new inner();

私有内部类只能在Outer类的内部使用

static 内部类:
将内部类变成了外部类
并且只能访问outer类中的静态成员或方法
outer.inner a=new outer.inner() 不在构造outer实例对象

在方法中定义的内部类课可以访问方法的参量护着变量(JDK 1.8后)
标准方法:在要是用的参量和变量之前加上final关键字

父类对象继承的话私有成员是不能访问的,但是私有成员是存在的,可以通过set get 方法间接的进行访问

super必须放在子类对象构造函数的首行

父类的private方法不能被覆写

String 也使用了final 定义 所以不能够被继承

instanceof判断类型

抽象类##

抽象类不能有子类
抽象类内部也可以有抽象类,可以再抽象类的子类中区继承。

外部抽象类不允许使用static,而内部的抽象类可以使用static,就像一个为外部类一样。
抽象类中可以有static方法,这样就可以直接使用

隐藏抽象类的子类的方法:使用内部抽象私有子类,抽象类的内部,一个继承了本类的私有的类
使用static getinstance方法获得一个唯一的子类实例

抽象类的普通方法可以调用抽象方法,只是此时抽象方法必须由子类来提供

Servlet继承自httpServlet 就是一种抽象继承关系(java web开发)

接口定义##

接口中只能有全局常亮和抽象方法
加不加 public static final (全局常量)
public abstract (抽象方法)
效果一样
接口中只能使用一种访问权限public
一个接口可以使用extends 关键字继承多个父接口

在接口A中定义一个抽象内部类X
那么A的子类内部就可以有继承X的内部类实现

设计模式:工厂设计模式##

Factory.getinstance(classname)

设计模式:代理设计模式##

real 功能较少, Proxy提供了许多功能
net= new Proxy(new Real());

如果自己写接口,请使用工厂类获得相应的子类

Object类#

理论上应该覆写三个方法
toString
equals
hashCode

equals 默认是比较地址(即同一)

包裹类##

对象型包装类: Charater Boolean
数值型包装类(number 的直接子类):Byte Short Intergeter Long Float Double

包装类型默认为null 这和基础类型不同

String类的转化
方法一: 直接加,不推荐,会产生垃圾空间
方法二:public static String valueOf(数据类型变量) 可以将任意类型的类转化为String类