------- android培训、java培训、期待与您交流! ----------
======================API=========================================
看api的步骤:
1、看类的说明。其所属的包以及出现的版本。
2、看其构造函数。
3、看普通的方法。看时注意参数,和返回值类型。
Object类
1、 private static native void registerNatives ();
见到本地关键字修饰的方法,这个方法的源代码,不是Java语言编写,C++写的
调用本地操作系统功能
2、 public boolean equals(Object obj){ return this == obj ;}
没有覆盖前,比较对象的地址。
覆盖equals方法,建立对象自己的比较方法,比较对象中的成员变量的值。
覆盖equals方法:
1 public boolean equals(Object obj){ 2 if(this==obj) 3 4 return true; 5 6 if(obj==null) 7 8 return false; 9 10 if(obj instanceof People){ 11 12 People p=(People)obj;//People是自定义的类 13 14 return this.name.equals(p.name)&&this.age==p.age; 15 16 } 17 18 return true; 19 20 }
toString
返回一个字符串,方法的意义,返回对象的字符串表现形式
没有覆盖之前 类名[email protected]十六进制
覆盖toString方法,返回自定义的对象的字符串表现形式
返回对象中的成员变量的值
例如:public String toString(){
return “Person”+this.name”+”...”+this.age;
}
与字符串有关的类
1、String类
String类的对象是不可以改变的,但是该对象的引用却可以改变。
2、字符串的常见方法
判断:
判断两个字符串的内容是否相等 boolean equals(Object obj)
判断是否以某个字符串开头 boolean startWith(String str)
判断是否包含指定的字符串boolean contains(String str)
获取:
获取指定位置上的单个字符 char chatAt(int index)
获取指定字符在字符串中第一次出现的下标 int indexOf(char ch)
获取指定字符在字符串中第一次出现的下标 int indexOf(char ch,int fromindex)
获取指定字符串在字符串中第一次出现的下标 int indexOf(String s)
获取指定字符串在字符串中第一次出现的下标 int indexOf(String s, ,int fromindex)
获取字符串的一部分 返回新的String substring(int start,int end)包含头,不包含尾
获取字符串的一部分 返回新的String substring(int start)包含头,后面的全要
获取字符串中字符的个数 int length()
转换:
字符串转成字节数组 byte[] getBytes()
字符串转成字符数组 char[] toCharArray()
字符串转成大写字母 String toUpperCase()
字符串转成小写字母 String toLowerCase()
将其他数据类型转成字符串 static String valueOf()
其他方法:
切割字符串,返回字符串数组 String[] split()
替换字符串,返回新的字符串 String replace()
去掉字符串两端的空格,返回新的字符串 String trim()
比较字符串谁大谁小 按照字典顺序比较int compareTo(String s)
3、StringBuffer类和StringBuilder常见方法
将数组追加到缓冲区StringBuffer append()\\在原有的常量池上追加
删除缓冲区中的数据StringBuffer delete()
在指定的位置上插入数据StringBuffer insert()
修改指定位置上的单个字符void setCharAt()
将缓冲区变成字符串,可以使用String类方法String toString()
注意:StringBuilder的功能和StringBuffer一模一样。前者是JDK5以后出现的。
4、String和StringBuffer的区别?
String的长度固定。
StringBuffer的长度可变。
StringBuffer和StringBuilder的区别?
StringBuffer的线程安全,效率低。
StringBuilder的线程不安去,效率高
5、String类的面试题
A:字符串一旦被赋值就不能被改动。
注意:这里的改动指的是字符串的内容,而不是字符串对象的引用。
B:String s = new String("hello");和String s = "hello";有区别吗?是什么呢?
有。前者创建了两个对象。后者创建了一个对象。
C:看程序,写结果
1 String s1 = new String("hello"); 2 3 String s2 = new String("hello"); 4 5 System.out.println(s1==s2);\\false 6 7 System.out.println(s1.equals(s2));\\true 8 9 10 11 String s3 = new String("hello"); 12 13 String s4 = "hello"; 14 15 System.out.println(s3==s4);\\false 16 17 System.out.println(s3.equals(s4));\\true 18 19 20 21 String s5 = "hello"; 22 23 String s6 = "hello"; 24 25 System.out.println(s5==s6);\\true 26 27 System.out.println(s5.equals(s6));\\true 28 29 D:看程序,写结果 30 31 String s7 = "hello"; 32 33 String s8 = "world"; 34 35 String s9 = "helloworld"; 36 37 System.out.println(s9==s7+s8);\\false 38 39 System.out.println(s9=="hello"+"world");\\true
总结:变量就直接造,常量先找,如果有就使用,否则就造。
Integer类
1、常见方法:(也是将字符串转换成转换成基本数据类型的)
static int parseInt(String s)将数字格式的字符串转成基本数据类型
Integer(String s)构造方法将数字格式的字符串,包装成Integer类型对象
intvalue()将构造方法中包装的字符串,转成基本数据类型
2、自动装箱和拆箱,1.5版本后的新特性
装箱:将基本数据类型封装成对象 Integer xx = 10;
拆箱:将封装成对象的基本数据类型,转成基本数据类型 xx+1
3、Integer类要注意的问题
Integer a=100;
Integer b=100;
System.out.println(a==b);\\true
虽然“==”比较的还是地址,但是如果如果所赋的值不超过byte 的范围就会直接令b=a, 不会开辟新空间。
Random类
1、两个构造
Random(); Random(long seed);
Seed(种子)不同,产生的随机数就不同
2、常用方法
nextInt(int n)
产生[0,n]之间的int值
Scanner类
1、Scanner的构造格式:
Scanner sc = new Scanner(System.in);
2、next()和nextLine()的区别
next()只会扫描有效字符,在扫描到结束符如(空格键、Tab键和Enter键)时结束,所 以next()扫描到的字符串前后不会包含空格键、Tab键和Enter键。
nextLine()扫描行分隔符(Enter)之前的所有字符,所以会包含空格。
对日期/时间有关类的总结
1、有关的类:
Date类、Dateformat类、SimpleDateFormat和Calendar类
2、Date中常用的方法:
毫秒值--->日期对象:
Date类的构造函数:Date(long date)
Date类中void setTime(long time)
日期对象---->毫秒值
Date类中long getTime():
System类中static long currentTimeMills();获取当前日期毫秒值。
3、Dateformate类是抽象类,所以只能通过子类对象来实现其中的方法。
使用静态方法,类名调用 getDateInstance()返回DateFormat类的子类对象
DateFormat df = DateFormat.getDateInstance();//返回的是SimpleDateFormat对象
DateFormate df=new SimpleDateFormate();
DateFormate中有个将字符串转换为Date类对象的:
Date parse(String s);
4、Calendar类虽然是一个抽象类。但它比较特殊,是一个语言环境敏感类。它创建实例对象的方法如下:
Calendar c=Calendar.getInstance();
Calendar中常用的方法:
add(int field,int amount):为给定的日历字段增加或减去指定的偏移量。
int get(int field):返回指定字段的值
void set(int year,int month,int day)
void setTime(Date d);用指定的Date设置Calendar的时间
计算机中的月份是0-11,星期天、一...六对应0到6。
5、以下是两个面试题,通过对Date类、DateFormat类和Calendar类的运用,掌握如何使用API。
1 /* 2 3 * 计算保质期,计算闰年的 4 5 */ 6 7 import java.text.DateFormat; 8 9 import java.util.*; 10 11 public class CalendarDemo { 12 13 public static void main(String[] args) throws Exception{ 14 15 //调用静态方法getIntance()获取日历对象的子类对象 16 17 //Calendar c = Calendar.getInstance(); 18 19 //printCalendar(c); 20 21 baoZhi(); 22 23 runNian(); 24 25 } 26 27 28 29 //定义方法,实现闰年的计算 30 31 private static void runNian(){ 32 33 /* 34 35 * 计算闰年,2月的最后一天是什么,如果是28平年,29闰年 36 37 * 获取日历对象getInstance 38 39 * 已知年份 40 41 * 将日历设置到这一年的3月1日 42 43 * 向前偏移1天,获取天数判断 44 45 */ 46 47 Calendar c = Calendar.getInstance(); 48 49 c.set(2002, 2, 1); 50 51 c.add(Calendar.DAY_OF_MONTH, -1); 52 53 if(c.get(Calendar.DAY_OF_MONTH)==29) 54 55 System.out.println("闰年"); 56 57 else 58 59 System.out.println("平年"); 60 61 } 62 63 64 65 //定义方法,实现保质期的计算 66 67 private static void baoZhi()throws Exception{ 68 69 /*生产日期是2014-3-10,保质期是187天,那一天到期 70 71 * 获取日历获取对象--操作系统走 72 73 * set方法,将日历设置到生产日期上 74 75 * 调用add方法,让天数,偏移187天,输出日历 76 77 */ 78 79 // 第一种:输入一个日期字符串 80 81 String date = "2014-3-10"; 82 83 DateFormat df = DateFormat.getDateInstance(); 84 85 Date d = df.parse(date); 86 87 Calendar c = Calendar.getInstance(); 88 89 // 第二种直接设置日历中的各字段 90 91 // 此时要将月份7就表示8月 92 93 // c.set(2014, 2,10); 94 95 c.setTime(d); 96 97 c.add(Calendar.DAY_OF_MONTH, 187); 98 99 printCalendar(c); 100 101 } 102 103 104 105 //打印当前日历对象的信息 106 107 private static void printCalendar(Calendar c){ 108 109 System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+ 110 111 c.get(Calendar.DAY_OF_MONTH)+"日 星期"+(c.get(Calendar.DAY_OF_WEEK)-1)); 112 113 } 114 115 }