一、游长实参表
利用游长实参表,可在创建方法时不指定实参的个数。
eg.public static double average(double…numbers)
一个参数表中只能出现一次省略号,并且省略号及其类型必须放在参数表的末尾.
二、this
每个对象都可以用关键字this引用自己, 称为this引用(即this指向当前对象)。
构造函数体中,利用this来调用同一个类中的另一个构造函数,若这个this调用不是构造函数的第一条语句则会产生语法错误。
类的方法试图直接通过this来调用构造函数,也会产生语法错误。
三、Java API包
Java包含了许多预定义的类,按相关性被分组成了不同的类别,这些类别称为包。 这些包被统称为java应用编程接口(API)或java类库。
常见:java.util、java.applet、java.io、java.net、java.swing...
四、常用类库- System类
System类是一个公共最终类,不能被继承,也不能被实例化。
System类定义的方法丰富且实用,其所有的变量和方法都是静态的。
五、常用类库- Math类
- 三角函数:sin,cos
- 指数:pow(y,x)
- 最大、最小值:max(y,x),min(y,x)
- 生成随机数:random(只能生成0.0—1.0之间的随机double值)
eg. randomNumbers.nextInt();
区别:Random类(number=偏移值+缩放率*randomNumbers.nextInt(n);)
eg. Random randomNumbers=new Radom();
int randomValue=randomNumbers.nextInt();- ...
六、常用类库- Date类
实用Date类的构造方法,可以得到一个完整的日期。
在java.util.Date类中实际上取得的时间是一个非常正确的时间。但因为其显示的 格式不理想,不符合中国人的习惯要求,可使用DateFormat类对日期进行格式化操作 。
七、常用类库- Calendar类
Calendar类可以将取得的时间精确到毫秒。
这个类是抽象类,可以使用它的具体实现类GregorianCalendar。
八、数组
静态性:一旦创建就不能修改数组的长度。
类似于动态数组的类型:类Vector,长度可以变大或缩小。
数组是对象,是引用类型。
数组的元素可以是基本类型或引用类型。
使用关键字new,并指定数组元素的类型与个数。
eg. int c[]=new int[12];
int c[]; c=new int[12];
int[] c;//c=new int[12];
多维数组:最常用的多维数组是二维数组。
eg. int[][] a = new int[3][4];
九、字符串
与C语言不同: 字符(char)数组不是字符串 (String)。
String数值不必以'u0000'结束。
eg. String s1 = null;
String s2 = new String( );
String s3 = "您好!";
String s4 = new String( s3 );
int length():返回字符串的长度。
方法 charAt(int index):获得字符串指定位置的字符
方法 getChars(int srcBegin, int srcEnd, char[ ] dst, int dstBegin):复制字符串。
十、== 运算符
当用于基本数据类型(如int)时,用于判别是否相等。
当用于引用数据类型(如String)时,用来判别引用是否指向相同的对象。
Java虚拟机中含有字符串池(直接量在此池内),相同内容的字符串直接量->相同的对象。
eg.s1 = "hello"; // 字符串直接量
s2 = new String( "hello" );
s1 == "hello"; // true
s2 == "hello"; // false
十一、字符串比较
boolean equals(Object anObject):
比较当前的字符串与指定的对象(判断字符串内容是否相等)。
比较结果为真当且仅当给定的参数不为空,并且具有完全相同的字符序列。
eg. s1.equals( "Hi" );
查找字符串(String)中的字符或子串:
方法indexOf,返回第一次找到的时下标,如果没有找到,则返回-1 。
eg.String name = "CoolTools"; System.out.println (name.indexOf("oo"));//1
其他比较方法:略。
十二、类String的成员方法valueOf
静态(static)成员方法valueOf,将参数的值转化成相应的字符串。
对象还可以通过方法toString转化成字符串。
十三、其它String方法
s1.trim():返回新字符串,源字符串最前面和最后面的的空白符(即返回去掉前后空白字符的子串);
如果字符串没有被改变,则返回源字符串的引用。
s1.toString( ):由于s1本身就是字符串了,所以返回s1本身。
其它引用类型也可以通过方法toString,生成相应的字符串。
s1.toCharArray( ):将字符串转换成字符数组。
其他String方法:略。
十四、类StringBuffer
补充:引用
引用:保存对象对应的地址信息。
eg. String str="hello";//"hello"所在地址是0x10,则str的值是地址0x10
str="java"//"java"所在地址是0x11,则str的值变为地址0x11
当"=="用于引用数据类型(如String)时,用来判别引用是否指向相同的对象。
eg.s1 = "hello"; //字符串直接量"hello"所在地址是0x10,则s1的值是地址0x10
s2 = new String( "hello" ); //s2的值是另一个同为"hello"内容的对象的地址0x11,则s1的值是地址0x11
s3 = "hello"; //s3的值也是字符串直接量"hello"的地址,则s3的值也是地址0x10
s1 == "hello"; // true,即s1的值是字符串直接量"hello"的地址
s2 == "hello"; // false,即s2的值不是字符串直接量"hello"的地址
s1 == s2; // false,即s1和s2的值不都是字符串直接量"hello"的地址
s1 == s3; // true,即s1和s3的值同为字符串直接量"hello"的地址
// 基本类型参数,原始value不会被更改
public void func(int value) {
value = 100;
}
// 对于没有提供修改自身的成员方法引用类型,原始str不会被更改
public void func(String str) {
str = "hello";
}
StringBuilder sb = new StringBuilder("test");
// 对于提供修改自身的成员方法引用类型,原始的sBuilder会被更改
public void func(StringBuilder sBuilder) {
sBuilder.append("aa");
}
// 原始的sBuilder不会被更改
public void test(StringBuilder sBuilder) {
sBuilder = new StringBuilder("111");
}