构造方法的重载
构造方法的重载是指在同一个类中存在着若干个具有不同参数列表的构造方法。
有时在一个类定义内可能出现多个实现类似功能的方法,但这些方法处理的信息有所不同,因为功能类似,若给不同的命名容易造成理解上的混乱,所以就要给这些方法相同的名字,也即在一个类中出现多个同名方法的现象,这叫方法的重载。
变量的作用域
变量的作用域是指程序的一部分,在这部分中,变量可以被引用。
1.属性不管在何处声,它的作用域是整个类。
2.局部变量必须先声明再使用,在使用前必须给定初始值,局部变量的作用域范围是从定义的那一点到距离它最近的反大括号之间。
3.当局部变量和属性重名时,在局部变量的作用域内局部变量屏蔽掉属性。
this关键字
该关键字代表了当前类对象的一个引用。因为该构造方法的形参变量的名字和待赋值属性的名字相同,为了能够区分二者中哪一个是属性,在属性前加上this.,即利用this.可以调用当前对象的属性和方法。
我们可以将无参的构造方法改成如下格式
public Rectangle()
{
this(5,5);
}
这里this(5,5)代表调用本类带两个参数的构造方法,可见我们可以使用this(实参)调用本类的其他构造方法,但该语句出现的位置要求是所隶属的构造方法的第一条可执行语句,this还可以作为方法的返回值。当方法需返回当前正在讨论的对象时,可以采用return this的形式。
包
1.定义包的语法结构:package 包名;
2.引入包中的类的语法结构:import 包名.类名;或 import 包名.* ;
3.如果在一个程序中涉及到两个包中的同名类时,创建此类对象时需明确指出该类所属的包 包名.类名 对象名=new 包名.类名.构造方法
注意
定义包的语句应是.java源文件中的第一条可执行语句。
无名包中的类不能被有名包中的类引用,而有名包中的类可以被无名包中的类引用。
访问控制修饰符
类 | 同一包中的其他类 | 不同包中的其他类 |
---|---|---|
被public修饰的类 | 允许 | 允许 |
被缺省修饰符修饰的类 | 允许 | 不允许 |
属性和方法的访问控制修饰符
static修饰符
1.静态属性和静态方法
被static修饰符修饰的属性称为静态属性,静态属性是类的属性而不是该类的某个对象的属性,在类创建时为静态属性分配一段内存空间,任何一个该类的对象访问静态属性时获取到的都是同样的值,任何一个该类的对象去修改静态属性时,该类的其他对象也能获取到变化后的新值。
被static修饰符修饰的方法称为静态方法,静态方法也是类的方法而不是该类的某个对象的方法。非静态方法可以操纵静态属性,但静态方法不能操纵非静态属性。
无论是调用静态方法还是静态属性有两种调用方式,即:
(1)类名.静态属性或静态方法
(2)对象名.静态属性或静态方法
2.静态初始化器
语法结构如下
static{
静态属性名=初始值;
}
可以理解为特殊的方法。静态初始器的作用是为整个类的属性即静态属性完成初始化工作。静态初始器语句组中的语句当满足下列条件时被执行且只被执行一次:首次生成该类对象时(即用new创建对象时)或首次通过类名访问静态属性时。
静态初始器和构造方法有三点区别:
1.静态初始器是对类进行初始化,构造方法是对类的对象进行初始化。
2.静态初始化器在其所属的类导入内存时被调用,构造方法在用new创建对象时调用。
3.静态初始化器是一组语句不是方法,构造方法是特殊的方法。
String和StringBuffer
1.String
String是比较特殊的数据类型,它不属于基本数据类型,但是可以和使用基本数据类型一样直接赋值,不使用new关键字进行实例化。也可以像其他类型一样使用关键字new进行实例化。例如:
String s1 ="this is a string!";
String s2 =new String("this is another string!");
另外String在使用的时候不需要用import语句导入,还可以使用“+”这样的运算符。如果想把字符串连接起来,可以使用“+”完成。
String的一些常用方法如下:
1.求长度
方法定义:public int length();
方法描述:获取字符串中的字符的个数。str.length();
2.获取字符串中的字符
方法定义:public char charAt(int index);
方法描述:获取字符串中的第index个字符,从0开始。str.charAt(index);
3.取子串
方法定义:public String substring (int beginIndex,int endIndex);
方法描述:获取从beginIndex开始到endIndex结束的子串,包括beginInedx,不包括endIndex。 str.substring(1,4);如果有一个数字就是从这个数字到最后
4.定位字符或者字符串
形式一:
方法定义:public int indexOf(int ch);
方法描述:定位参数所指定的字符。 str.indexOf(‘i’);
形式二:
方法定义:public int indexOf(int ch,int index);
方法描述:从index开始定位参数所指定的字符。
str.indexOf(‘i’,4);
形式三:
方法定义:public int indexOf(String str);
方法描述:定位参数所指定的字符串。
str.indexOf(“is”);
形式四:
方法定义:public int indexOf(String str,int index);
方法描述:从index开始定位str所指定的字符串。
str.indexOf(“is”,6);
5.替换字符和字符串
形式一:
public String replace(char c1,char c2);
从index开始定位str所指定的字符串
str.replace(‘i’,‘I’);
形式二:
public String replaceAll(String c1,String c2);
把字符串中出现的所有s1替换成s2.
replaceAll(“is”,“IS”);
形式三:
public String replaceFirst(String c1,String c2);
把字符串中的第一个s1替换成s2.
replaceFirst(“is”,“IS”);
6.比较字符串内容
形式一:
public boolean equals(Object o);
比较是否与参数相同,区分大小写
str.equals(“this”);
形式二:
public boolean equalsIgnoreCase(Object o);
比较是否与参数相同,不区分大小写
str.equals(“this”);
7.大小写转换
转换成大写:
public String toUpperCase();
把字符串中的所有字符都转换成大写
str.toUpperCase();
转换成小写:
public String toLowerCase();
把字符串中的所有字符都转换成小写
str.toLowerCase();
8.前缀和后缀
判断字符串是否以指定的参数开始或结尾。
判断前缀:
public boolean startsWith(String prefix);
str.startsWith(“this”);
判断后缀:
public boolean endsWith(String prefix);
str.endsWith(“this”);
2.StringBuffer
StringBuffer也是字符串,与String不同的是StringBuffer对象创建完之后可以修改内容。有如下构造函数:
public StringBuffer(int);//创建指定大小的字符串
public StringBuffer(String);//给已定的字符串创建StringBuffer对象
public StringBuffer();//默认的构造函数,生成一个空的字符串
下面的代码分别生成了3个StringBuffer对象:
StringBuffer sb1 = new StringBuffer(50);
StringBuffer sb2 = new StringBuffer(“字符串初始值”);
StringBuffer sb3 = new StringBuffer();
StringBuffer的常用方法及其用法如下:
1.在字符串后面追加内容
public StringBuffer append(char c);
public StringBuffer append(boolean b);
public StringBuffer append(char[] str);
public StringBuffer append(CharSequence str);
public StringBuffer append(float f);
public StringBuffer append(double d);
public StringBuffer append(int i);
public StringBuffer append(long l);
public StringBuffer append(Object o);
public StringBuffer append(String str);
public StringBuffer append(StringBuffer sb);
public StringBuffer append(char[] str,int offset,int len);
public StringBuffer append(CharSequence str.int start,int end);
2.在字符串的某个特定位置添加内容
public StringBuffer append(int offset ,char c);
public StringBuffer append(int offset,boolean b);
public StringBuffer append(int offset,char[] str);
public StringBuffer append(int offset,CharSequence str);
public StringBuffer append(int offset,float f);
public StringBuffer append(int offset,double d);
public StringBuffer append(int offset,int i);
public StringBuffer append(int offset,long l);
public StringBuffer append(int offset,Object o);
public StringBuffer append(int offset,String str);
public StringBuffer append(int offset,StringBuffer sb);
public StringBuffer append(int offset,char[] str,int offset,int len);
public StringBuffer append(int offset,CharSequence str.int start,int end);
3.StringBuffer的长度和容量
public int length();
public int capacity();
length方法用于获取字符串的长度,capacity方法用于获取容量,两个不相等
4.删除某个字符
public StringBuffer deleteCharAt(int index);
删除指定位置的字符,索引是从0开始
5.删除某个子串
public StringBuffer delete(int start,int end);
6.获取字符串中的字符
public char charAt(int)
charAt(int)方法用来获取指定位置的字符。
7.获取字符串中的子串
public String substring(int start); 从start开始到结束的子串。
public String substring(int start,int end);从start开始到end结束的子串。
public CharSequence subSquence(int start,int end);从start开始到end结束的子串。
8.转换成字符串
public String toString();
把StringBuffer的内容转换成String对象
3.String与基本数据类型之间的转换
把字符串转换成数字:
String input=“111”;
int i=Intger.parseInt(input);//比较常用
int i2=new Integer(input).intValue();
int i3=Integer.valueOf(input);
int i4=new Integer(input);
把数字转换成字符串:
String out=new Integer(i).toString();
String out2=String.valueOf(i);
ArrayList
ArrayList是动态数组,它是java.util包中的一个类。原则上所有的对象都可以加入到ArrayList里,但通常为了方便,一般可以通过泛型(<dataType>)限定加入到ArrayList中的元素类型以保证加入的都是相同类型的元素。
该类的构造方法有:
ArrayList(),构造一个初始化为10的空的链表。
ArrayList(Collection<?extends E> c),使用1个已经存在的集合构造一个链表,集合中的元素在新的链表中的顺序由集合的iterator方法决定。
ArrayList(int initialCapacity),构造一个由参数指定初始化空间大小的链表。
其他的主要方法:
1.向集合中添加对象的方法
public void add(int index,Object o)第一个参数表示要添加的元素的位置,从0开始。
public boolean addAll(int index,Collection c) 第一个参数表示位置,如果不指定位置,默认在最后添加
public boolean add(Object o) 在链表最后添加参数指定的元素。
public boolean addAll(Collection c) 在链表最后添加参数指定的所有元素。
2.删除特定的元素
public boolean remove(Object o) 删除指定的某个元素
public boolean removeAll(Collection c) 删除指定的多个元素
public void clear();删除所有元素
public boolean retainAll(Collection c) 只保留指定集合中存在的元素,其他的都删除相当于取两个集合的交集。
public Object remove(int index) 参数用于指定要删除的元素的位置。
3.获取某个元素或者获取某些元素
public Object get(int index) 获取指定位置的元素
public List subList(int fromIndex,int toIndex) 获取从from到to的元素,包括from不包括to