1、匿名对象:new persion().tell();这样的,它只开辟栈内存,没有栈引用的关系
2、构造方法的名称必须与类名称一致,构造方法的声明处不能有任何返回值类型的声明,不能在构造方法中使用return返回一个值
3、String有两种比较方式:一种是使用“==”完成,比较的是地址值;另一种是使用"equals"方法完成,比较的是具体的内容
4、String类两种实例化方法的区别:
直接赋值:String str1 = "hello"; String str2 = "hello"; String str3 = "hello"; 那这两个地址是相同的,可以有效节省堆内存
通过关键字new赋值:String str = new String("hello");实际是开辟两个内存对象
5、字符串内容的改变,改变的是内存地址的引用关系
6、this关键字的作用:表示类中的属性this.name = name;调用本类的构造方法,构造方法可以互相调用,使用this(参数)的形式完成,注意在使用this关键字调用其他构造方法时,this()调用方法的语句只能放在构造方法的首行,在使用this调用类中其他构造方法时,至少有一个构造方法是不用this调用的,以防止递归调用的情况出现;表示当前对象
7、java常用的内存区域:栈内存-->可以保存对象的名称(更准确地说是保存了引用的堆内存空间的地址);堆内存-->保存每个对象的具体属性;全局数据区-->保存static类型的属性;全局代码区-->保存所有的方法定义
8、使用static方法,不能调用非static的属性或方法
9、java代码块:普通代码块-->使用{}包含的,里面的变量属于局部变量,不能在代码块之外使用;构造块-->将代码块直接定义在类中,构造块优先于构造方法执行,且执行多次,只要一有实例化对象产生,就执行构造块中的内容;静态代码块-->使用static关键字声明的代码块,静态代码块优先于主方法执行,普通类中定义的静态块优先于构造方法执行,不管有多少个实例化对象产生,静态代码块只执行一次。静态代码块的作用主要用于静态属性的初始化
10、
11、final关键字声明类、属性、方法:使用final声明的类不能有子类;使用final声明的方法不能被子类覆写;使用final声明的变量即成为常量,常量不可以修改。
12、抽象类:包含一个抽象方法的类必须是抽象类;抽象类和抽象方法都要使用abstract关键字声明;抽象方法只需要声明而不需要实现;抽象类必须被子继承,子类(如果不是抽象类)必须覆写抽象类中的全部方法;抽象类可以继承抽象类
13、接口是一种特殊的类,里面全部是由全局常量(static final)和公共的抽象方法(abstract)组成,也可以简化定义不写,一个接口不能继承一个抽象类,但是却可以通过extends关键字同时继承多个接口,实现接口的多继承,interface 子接口 extends 父接口A, 父接口B,...{}
14、对象的多态性:对象向上转型:父类 父类对象 = 子类实例; 对象向下转型: 子类 子类对象 = (子类)父类实例;
15、instanceof关键字判断一个对象到底是哪个类的实例,格式:对象 instanceof 类 -》 返回boolean类型
16、
以上的正则,如果想驱动起来,则必须依赖Pattern类和Matcher类,Pattern主要是表达一个规则的意思,即:正则表达式的规则需要在Pattern类中使用。Matcher类主要表示使用Pattern指定好的验证规则。