变量的作用域
变量的作用域是指程序的一部分,在这部分中,变量可以被引用。
属性不管在何处声明,它的作用域都是整个类
局部变量必须必须先声明再使用,在使用前必须给定初始值,局部变量的作用域范围是从定义的那一点到距离它最近的反大括号之间。
当局部变量名和属性重名时,在局部变量的作用域内局部变量屏蔽掉属性。
this 关键字
this代表当前类的对象。用法如下:
利用this. 可以调用当前对象的方法或属性。
一个类的若干构造方法之间可以相互调用,调用时该调用语句应该是构造方法中第一条可执行语句。在利用this调用构造方法时根据实参的个数匹配调用的是哪个其他的构造方法。
当方法需返回当前正在讨论的对象时,可以采用return this 的形式。
包
定义包的语法结构:package 包名;
注意:
1.定义包的语句应在源文件中的第一条可执行语句。
2.无名包中的类不能被有名包中的类引用,而有名包中的类可以被无名包中的类引用,无名包中的所有类可以互相引用。
引入包中类的语法结构:import 包名.类名; 或者 import 包名.*;
如果在一个程序中涉及到两个包中的同名类时,创建此类对象时需明确指出该类所属的包。如下所示:
包名.类名 对象名 = new 包名.类名.构造方法
如果两个包包含相同的类名,且这两个包又被一个程序同时引用,那么如何区分这个同名类?例如first包中包含一个Base类,而second包中也包含一个Base类。此时为了创建对象必须写上所指类所属的完整路径,即:first.Base 对象名 = new first.Base();
访问控制修饰符
类
同一包中的其他类不同包中的其他类
被public修饰的类
允许
允许
被缺省修饰符修饰的类
允许
不允许
类成员的访问控制修饰符:
private 类内可访问,不可通过 对象.属性 来访问
默认 包内可访问
protected 包内,包外子类可访问
public 包内,包外都可访问
属性定义为私有的,访问方法定义为公有的。
static修饰符
用static修饰的属性,也称为类属性
用于描述一类对象共享的属性
可通过类名直接调用,也可通过对象名调用
静态方法不能访问非静态属性
静态属性和静态方法在第一次使用类的时候创建,所有这个类的对象共享
非静态属性和非静态方法在创建对象的时候创建,每个对象之间独立
静态初始化器:
static {
静态属性名 = 初始值;
}
静态初始化器和构造方法有三点区别:
静态初始化器对类进行初始化,构造方法是对类的对象进行初始化;
静态初始化器在其所属的类导入内存时被调用,构造方法在用new创建对象时调用;
静态初始化器是一组语句不是方法,构造方法是特殊的方法;
String和StringBuffer
使用String类的对象表示字符串:
String a = “fjkdfj”;
String b = new String(“fkdjf”);
String类中常用的方法:
public int length(); //获取字符串的个数。
public char charAt(int index); //获取字符串第index个字符,从0开始。
public String substring(int beginIndex, int endIndex); //获取从beginIndex到enIndex的子串。包括beginIndex,不包括endIndex。
public String substring(int beginIndex); //获取从开始到结束的子串
public int indexOf(int ch); //定位参数所指定的字符的下标。eg:str.indexOf(‘i’);
public int indexOf(int ch, int index); //从index开始,定位参数所指定的字符。
public int indexOf(String str); //定位参数所指定的字符串。
public int indexOf(String str, int index); //定位从index开始定位str所指定的字符串。
public String replace(char c1, char c2); //把字符串中所有的c1替换成c2。
public String replaceAll(String s1, String s2); //把字符串中所有出现的s1替换成s2。
public String replaceFirst(String s1, String s2); //把字符串中第一个s1替换成s2。
public boolean equals(Object o); //比较是否与参数相同,区分大小写。
public boolean equalsIgnoreCase(Object o); //比较是否与参数相同,不区分大小写。
public String toUpperCase(); //把字符串中所有字符都转换成大写。
public String toLowerCase(); //把字符串中所有字符都转换成小写。
public boolean startsWith(String prefix); //字符串是否以指定的参数为前缀。
public boolean endsWith(String suffix); //字符串是否以指定的参数为后缀。
StringBuffer
StringBuffer也是字符串,与String不同的是StirngBuffer对象创建完之后可以修改内容。
三种构造函数:
public StringBuffer(int); //创建指定大小的字符串。
public StringBuffer(String); //以给定的字符串创建StringBuffer对象。
public StringBuffer(); //生成一个空的字符串。
public StringBuffer append(任何对象); //在字符串后面追加对象。
public StringBuffer insert(int offset, 任何对象); //在字符串某个特点位置添加对象。
public int length(); //获取字符串长度。
public int capacity(); //获取容量。
public StringBuffer deleteCharAt(int index); //删除指定位置的字符。
public StringBuffer delete(int start, int end); //第一个参数指定的字符会被删除,第二个参数指定的字符不会删除。
public char charAt(int); //获取指定位置的字符。
public String substring(int start); //从start开始到结束的子串。
public String substring(int start, int end); //从start开始到end结束的子串。
public CharSequence subSequence(int start, int end); //从start开始到end结束的子串。
public String toString(); //把StringBuffer的内容转换成String对象。
ArrayList
ArrayList是一种动态数组,它是java.util包中的一个类。原则上所有的对象都可以加入到ArrayList里,但通常为了使用方便,一般可以通过泛型()限定加入到ArrayList中的元素类型以保证加入的都是相同类型的元素。
构造方法有三种:
ArrayList(); //构造一个初始化为10的空链表。
ArrayList(Collection c); //使用一个已经存在的集合构造一个链表,集合中的元素在新的链表中的顺序由集合的iterator方法决定。
ArrayList(int initialCapacity); //构造一个由参数指定初始化空间大小的链表。