1.Java类的构造方法
1.1 构造方法的定义
构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有;每个类可以有零个或多个构造方法,不能被static、final、synchronized、abstract和native修饰;构造方法不能被子类继承,构造方法可以被重载。
1.2 构造方法的作用
初始化对象,初始化对象的属性。
1.3 缺省构造方法
没有参数的构造方法。
1.4 构造方法重载
默认的构造方法是无参数的,构造方法重载是参数列表不同。
1.5 this关键字
this调用本类中的属性,也就是类中的成员变量;this调用本类中的其他方法;this调用本类中的其他构造方法,调用时要放在构造方法的首行。
2.static关键字
2.1 static关键字
使用static关键字把成员声明为静态成员。
2.2 静态成员的初始化过程
类的每个静态成员在内存中只有一份拷贝为该类的所有对象共享,所以静态成员只被初始化一次,在该类第一次被调用的时候初始化。
2.2 非静态成员的初始化过程
该类每一次被调用的时候都初始化一次。
3.垃圾回收机制
垃圾回收机制:垃圾回收机制的标准是对于已经丢弃的对象,垃圾回收有可能马上发现将回收,也有可能内存足够大的情况,并不会回收。程序员可以调用System.gc() 来显式的进行垃圾回收,Java 语言规范并不保证垃圾回收一定会执行或立即执行。
4.finalize方法
finalize方法:每一个对象都有一个finalize( )方法,这个方法是从Object类继承来的,finalize( )方法用来回收内存以外的系统资源,就像是文件处理器和网络连接器。该方法的调用顺序和用来调用该方法的对象的创建顺序是无关的。换句话说,书写程序时该方法的顺序和方法的实际调用顺序是不相干的。每个对象只能调用finalize( )方法一次。如果在finalize( )方法执行时产生异常(exception),则该对象仍可以被垃圾收集器收集。
5.字符串
String不是原始的数据类型,而是一个类,而且是一个final类,不能被继承。
5.1 String类关键方法
public char charAt(int index)返回字符串中第index个字符;
public int length()返回字符串的长度;
public int indexOf(String str)返回字符串中第一次出现str的位置;
public int indexOf(String str,int fromIndex)返回字符串从fromIndex开始第一次出现str的位置;
public boolean equalsIgnoreCase(String another)比较字符串与another是否一样(忽略大小写);
public String replace(char oldchar,char newChar)在字符串中用newChar字符替换oldChar字符
public boolean startsWith(String prefix)判断字符串是否以prefix字符串开头;
public boolean endsWith(String suffix)判断一个字符串是否以suffix字符串结尾;
public String toUpperCase()返回一个字符串为该字符串的大写形式;
public String toLowerCase()返回一个字符串为该字符串的小写形式;
public String substring(int beginIndex)返回该字符串从beginIndex开始到结尾的子字符串;
public String substring(int beginIndex,int endIndex)返回该字符串从beginIndex开始到endsIndex结尾的子字符串;
public String trim()返回该字符串去掉开头和结尾空格后的字符串;
public String[] split(String regex)将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组;
5.2 String类的不可变特性
String类对象被初始化赋值后,值将不再改变。
5.3 StringBuffer与StringBuilder类的特征,与String的区别
5.3.1 StringBuffer与StringBuilder的特征
StringBuilder是线程非安全的,但是执行速度快;StringBuffer是线程安全的,但是执行速度稍慢。
5.3.2 三者之间的区别
- 声明方式:StringBuilder和StringBuffer声明对象必须用new关键字,而String可不用。
- 可变性:StringBuilder和StringBuffer对象的长度是可变的,可以动态扩展的,而String对象的长度不可变。
- 执行速度:StringBuilder > StringBuffer > String
交流探讨到我的新浪微博:http://weibo.com/tianrui1990
欢迎关注技术分享微信公众号:JavaQ