------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1.Object
(1)Object是类层次结构的根类,所有的类都直接或者间接的继承自Object类。
(2)Object类的构造方法有一个,并且是无参构造
这其实就是理解当时我们说过,子类构造方法默认访问父类的构造是无参构造
(3)要掌握的方法:
A:toString()
返回对象的字符串表示,默认是由类的全路径+'@'+哈希值的十六进制表示。
这个表示其实是没有意义的,一般子类都会重写该方法。
B:equals()
比较两个对象是否相同。默认情况下,比较的是地址值是否相同。
而比较地址值是没有意义的,所以,一般子类也会重写该方法。
(4)要了解的方法:
A:hashCode() 返回对象的哈希值。不是实际地址值,可以理解为地址值。
B:getClass() 返回对象的字节码文件对象
C:finalize() 用于垃圾回收,在不确定的时间
D:clone() 可以实现对象的克隆,包括成员变量的数据复制,但是它和两个引用指向同一个对象是有区别的。
(5)两个注意问题;
A:直接输出一个对象名称,其实默认调用了该对象的toString()方法。
B:面试题
==和equals()的区别?
A:==
基本类型:比较的是值是否相同
引用类型:比较的是地址值是否相同
B:equals()
只能比较引用类型。默认情况下,比较的是地址值是否相同。
但是,我们可以根据自己的需要重写该方法。
2.Scanner
(1)在JDK5以后出现的用于键盘录入数据的类。
(2)构造方法:
A:System.in其实是标准的输入流,对应于键盘录入
B:构造方法
InputStream is = System.in;
Scanner(InputStream is)
C:常用的格式
Scanner sc = new Scanner(System.in);
(3)基本方法格式:
A:hasNextXxx() 判断是否是某种类型的
B:nextXxx() 返回某种类型的元素
(4)要掌握的两个方法
A:public int nextInt()
B:public String nextLine()
(5)需要注意的小问题
A:同一个Scanner对象,先获取数值,再获取字符串会出现一个小问题。
B:解决方案:
a:重新定义一个Scanner对象
b:把所有的数据都用字符串获取,然后再进行相应的转换
字符串的特点
A:字符串一旦被赋值,就不能改变。
注意:这里指的是字符串的内容不能改变,而不是引用不能改变。
B:字面值作为字符串对象和通过构造方法创建对象的不同
String s = new String("hello");和String s = "hello"的区别?
小细节:
StringBuffer:同步的,数据安全,效率低。
StringBuilder:不同步的,数据不安全,效率高。
A:String,StringBuffer,StringBuilder的区别
String是内容不可变的,而StringBuffer和StringBuilder是内容可变的。
StringBuffer是同步的,数据安全,效率低。而StringBuilder是不同步的,
数据不安全,效率高。
B:StringBuffer和数组的区别?
两者都可以看做是一个容器,装其他数据。
StringBuffer的数据最终只能是字符串类型的。
而数组可以存放任意类型的数据,但必须是同一种数据类型。
注意的问题:
String作为形式参数,StringBuffer作为形式参数。
String和StringBuffer都是引用类型,但是在作为形式参数时,
String跟常量效果一样,只是把本身的值传了过去,而没有传递地址值
StringBuffer传递的是地址值。
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
JDK5的新特性
自动装箱 基本类型--引用类型
自动拆箱 引用类型--基本类型
把下面的这个代码理解即可:
Integer i = 100;
i += 200;
面试题
-128到127之间的数据缓冲池问题
(1)针对数学运算进行操作的类
(2)常见方法(自己补齐)
A:绝对值 int abs(int a);
B:向上取整 double ceil(double a);
C:向下取整 double floor(double a);
D:两个数据中的大值 int max(int a,int b);
E:a的b次幂 double pow(double a,double b);
F:随机数 double random();
G:四舍五入 int round(float a); long round(double a);
H:正平方根 double sqrt(double a);
(1)用于产生随机数的类
(2)构造方法:
A:Random() 默认种子,每次产生的随机数不同
B:Random(long seed) 指定种子,每次种子相同,随机数就相同
(3)成员方法:
A:int nextInt() 返回int范围内的随机数
B:int nextInt(int n) 返回[0,n)范围内的随机数
(1)系统类,提供了一些有用的字段和方法
(2)成员方法(自己补齐)
A:运行垃圾回收器 System.gc();
B:退出jvm System.exit();
C:获取当前时间的毫秒值 System.currentTimeMillis();
D:数组复制 System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length);
9.BigInteger
(1)针对大整数的运算
(2)构造方法
A:BigInteger(String s)
(3)成员方法(自己补齐)
A:加 BigInteger add(BigInteger val);
B:减 BigInteger subtract(BigInteger val);
C:乘 BigInteger multiply(BigInteger val);
D:除 BigInteger divide(BigInteger val);
E:商和余数 BigInteger[] divideAndRemainder(BigInteger val);
(1)浮点数据做运算,会丢失精度。所以,针对浮点数据的操作建议采用BigDecimal。(金融相关的项目)
(2)构造方法
A:BigDecimal(String s)
(3)成员方法:
A:加 BigDecimal add();
B:减 BigDecimal subtract();
C:乘 BigDecimal multiply();
D:除 BigDecimal divide();
E:自己保留小数几位 BigDecimal divide(BigDecimal divisor,int scale,int roundingMode);
(1)Date是日期类,可以精确到毫秒。
A:构造方法
Date()
Date(long time)
B:成员方法
getTime()
setTime(long time)
C:日期和毫秒值的相互转换
案例:你来到这个世界多少天了?
(2)DateFormat针对日期进行格式化和针对字符串进行解析的类,但是是抽象类,所以使用其子类SimpleDateFormat
A:SimpleDateFormat(String pattern) 给定模式
yyyy-MM-dd HH:mm:ss
B:日期和字符串的转换
a:Date -- String
format()
b:String -- Date
parse()
(1)日历类,封装了所有的日历字段值,通过统一的方法根据传入不同的日历字段可以获取值。
(2)如何得到一个日历对象呢?
Calendar rightNow = Calendar.getInstance();
本质返回的是子类对象
(3)成员方法
A:根据日历字段得到对应的值
B:根据日历字段和一个正负数确定是添加还是减去对应日历字段的值
C:设置日历对象的年月日