做网站买别人的服务器,郑州企业管理培训课程,学编程的培训机构,有多少收费网站常用类
一、Object类
1. Object类的介绍
(1) Object 类位于 java.lang 包中#xff0c;是继承关系的根类、超类#xff0c;是所有类的父类(直接的父类或是间接父类)
(2) Object类型的引用可以用于存储任意类型的对象。
(3) Object类中定义方法#xff0c;所有类都可以直接使…常用类
一、Object类
1. Object类的介绍
(1) Object 类位于 java.lang 包中是继承关系的根类、超类是所有类的父类(直接的父类或是间接父类)
(2) Object类型的引用可以用于存储任意类型的对象。
(3) Object类中定义方法所有类都可以直接使用。
2. 8Object类中常用方法
(1) getClass() : 返回引用中实际存储的对象类型。【理解】
开发实际应用用于判断两个引用中实际存储的对象类型是否一致一致-true;不一致-false。
class Animal{}
class Dog extends Animal{}
class Cat extends Animal{}
案例 Animal a1 new Cat();
Animal a2 new Dog();
System.out.println(a1.getClass() a2.getClass());(2) int hashCode() : 返回对象的整数哈希码值。对象的哈希码值来源是将 十六进制的地址转换十进制的整
数的结果。
注意由于不同的对象在堆空间中有不同的十六进制的地址所有不同的对象具有不同哈希码值。
(3) String toString() : 返回该对象字符串的变现形式。【开发重点】
a. 作用方便展示对象的信息子类通常将 toString方法覆盖。toString方法覆盖的原则如下
通常将所有的属性拼接为一个 字符串进行结果返回。
b. 案例public String toString(){
return namename,ageage; // this. 省略
}
c. get 方法和 toString 方法 区别
I. get方法是返回对象的单个属性的信息并且不会改变属性对应数据类型
II. toString 方法获取所有属性的信息并且将 所有属性拼接为 一个String类型的结果进行返回。
(4) boolean equals(Object o)用于比较对象内容是否相同。【开发应用重点】
a. 的应用
I. 如果 两端 为基本数据类型的变量则判断变量中数值是否相同
如果 两端 为引用类型的变量则判断引用中存储的地址是否相同。
II. 开发中 两端为引用类型的实际应用通常用于判断两个引用是否指向同一个对象。引用名1 引用名2 结果为 true代表两个引用指向同一个对象
结果为false,代表两个引用指向不同的对象。
b. equals 方法的应用
I. 父类 Object类中 equals方法实现原理如下
public boolean equals(Object obj) {
return (this obj);
}
注意父类中的equals方法是用于比较两个引用是否同一个对象但是开发时通常用equals方法比
较对象的内容所以父类中equals方法不足以满足子类的 需求则需要覆盖父类Object中
equals方法。
II. equals方法覆盖的原则
public boolean equals(Object obj){
// 1. 自反性判断当前对象和要比较的对象是否指向同一个对象 : this 和 obj
if(this obj){return true;
}
// 2. 判断 obj是否 空
if(obj null){return false;
}
// 3. 判断 两个引用中实际存储的对象类型是否一致
if(this.getClass() ! obj.getClass()){return false;
}
// 4. 强制类型转换: 为一一比较对象属性做准备
Student s (Student)obj;// 5. 将对象中属性一一进行比较:基本数据类型的属性 ; 引用类型equals比较
if(this.age s.age this.score s.score this.name.equals(s.name)){return true;
}else{return false;}
}(5) finalize() : JVM进行垃圾回收时,自动调用的方法。(垃圾回收器回收垃圾对象)(JVM性能调优时关注)
【面试】
a. 垃圾对象没有任何引用指向的对象。
Student s new Student();
s null ; // 将 s 指向的对象设置为 垃圾对象
b. 垃圾回收器用于JVM回收垃圾对象。简称为gc / GC
c. 垃圾回收的目的清除垃圾对象释放空间提高空间利用率。
d. 垃圾回收器回收垃圾对象时机
① 自动回收机制当JVM内存耗尽时不能再为新创建的对象分配空间时JVM中垃圾回收器会自动
将所有的垃圾对象一次性进行回收垃圾回收器进行回收垃圾对象时自动调用finalize方法。
② 手动回收机制利用 System.gc() ; 通知 垃圾回收器(GC)进行垃圾回收如果 GC空闲则进行垃
圾回收如果GC繁忙则暂不回收。
注意开发时finalize方法中不写任何重要代码finalize方法的执行节点不可控。二、包装类(位于 java.lang 包中)
1. 概念基本数据类型对应引用类型称之为基本数据类型的包装类。
2. 基本数据类型对应的包装类【重点】
基本数据类型 包装类类名
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
3. 数据之间转换【了解】
(1) int 和 Integer 之间的转换
int ----- Integer
a. Integer i1 new Integer(12); // 借助构造方法
b. Integer i2 Integer.valueOf(12); // 借助Integer类中的静态方法
Integer ---- inta. int a1 i1.intValue() ; // 借助Integer类中的成员方法 intValue()
(2) String 和 Integer之间的转换
String ---- Integer
a. Integer i3 new Integer(123); // 借助Integer类中的构造方法
b. Integer i4 Integer.valueOf(123); // 借助Integer类中的静态方法
Integer ---- String
a. String s1 i4.toString();
b. String s2 i4; //借助字符串的拼接
(3) int 和 String 之间的转换
int --- String
a. int a 3;
String s3 a;
String ---- int 【开发应用重点】
int a Integer.parseInt(123); // 借助 Integer类中静态方法
注意将String类型的数据转换为 int/Integer类型的数据要求要转换的String数据类型必须是纯数
字否则运行报错错误信息如下
java.lang.NumberFormatException (数字格式转换异常)
4. 自动装箱、自动拆箱
(1) JDK5.0之后提供自动装箱和自动拆箱的功能基本数据类型和对应包装类型之间可以相互自动转换
(2) 自动装箱基本数据类型可以直接赋值给其对应的包装类型。
自动拆箱包装类型的引用可以直接赋值给其对应的基本数据类型的变量。
(3) 案例 Integer i 12; // 自动装箱
int a i ; // 自动拆箱
(4) 自动装箱实现的原理自动装箱底层调用的时Integer类中 静态的 valueOf方法 【面试难点】
public static Integer valueOf(int i) {
if (i -128 i 127)
return IntegerCache.cache[i (-IntegerCache.low)];
return new Integer(i); // 如果 传入数据不在-128~127之间则new Integer类型对象
}
注意Java中将 -128~127常用数据段的内容进行了预先的包装处理转换数据只要在-128~127之间不
需要每次创建对象而是从处理结果中直接获取即可-128~127处理结果存储在缓冲区中、常量池。
面试题目 Integer i1 12;
Integer i2 12;
System.out.println(i1i2); // true
Integer i3 150;
Integer i4 150 ;
System.out.println(i3i4); // false
5. 包装类实际开发应用【开发重点】(1) 可以用于区分有效数据和无效数据例如 0 和 null , 0.0 和 null.
(2) 场景开发时通常将类中属性定义为基本数据类型对应包装类型。--区分有效数据和无效数据的
三、String类【开发重点】
1. 创建字符串的方式【面试重点】
(1) String s1 hello; // 只会创建一个对象在串池中产生
(2) String s2 new String(world); // 产生两个对象。一个在堆空间中一个在串池中产生。
注意如果串池中已经存在的字符串对象不会重复创建。
2. String类中常用方法
(1) char charAt(int index)根据下标获取对应的字符。
注意String类中封装了一个 char类型数组下标范围 0~字符串的长度-1如果指定的下标超出下标
范围则运行报错错误信息为java.lang.StringIndexOutOfBoundsException(数组下标越界)
(2) boolean contains(String str):判断一个字符串中是否包含 str子串包含-true;否则-false.
(3) boolean equals(String str):比较两个字符串内容是否相同相同-true;否则-false.
注意开发时比较字符串内容需要用 equals方法比较。
(4) int length() : 获取字符串的长度。
注意获取数组的长度数组名.length ;
/
String s hello;
for(int i0;is.length();i){
// 通过下标获取 对应的字符charAt
char c s.charAt(i);
System.out.println(c);
}(5) String trim() : 去除字符串前后的空格。
注意应用场景结合 将String转换int/Integer时应用
String age 18 ;
int n Integer.parseInt(age.trim());
(6) String[] split(String str) : 将当前字符串进行拆分拆分结果封装为一个String类型的数组。
3. String的不可变性【面试题目】
(1) String的字面值是字面常量如果在字符串上进行操作在原有字符串的基础上拷贝一个副文本在副
文本上完成操作(字符串拼接)。
(2) 由于String具有不可变性所以在完成字符串拼接时效率较低。
注意 String s a b;
上面的字符串的拼接只创建一个对象。原因如果 两端都为字符串常量时编译器在编译阶
段将ab 直接编译为 ab,称为编译器可知。四、可变长的字符串(位于java.lang包)
1. StringBuffer: JDK1.0版本线程安全运行效率慢
StringBuilder: JDK5.0版本线程不安全运行效率快。
2. 常用的构造方法
(1) public StringBuilder() : 无参数的构造方法
(2) public StringBuilder(String str) : 带有字符串类型参数的构造方法
3. 常用功能方法
StringBuilder append(String str)字符串的拼接
4. 注意StringBuilder是可变长字符串所有拼接效率远远高于 String。
面试题目String 和 StringBuilder、StringBuffer的区别。
解析
(1) String 是不可变长的字符串在完成字符串拼接时效率较低。
String线程安全。
(2) StringBuilder是可变长的字符串在完成字符串拼接时效率较高。
StringBuilder线程不安全。
(3) StringBuffer是可变长的字符串在完成字符串拼接时效率较高
StringBuffer线程安全。
五、BigDecimal类【了解】
1. BigDecimal类位于java.math 包中
2. 作用精确的表示、计算浮点数
3. 常用的构造方法
public BigDecimal(String n) : 带有字符串类型构造方法
4. 常用的方法
(1) BigDecimal r1 bd1.add(bd2); // 加法 bd1 bd2
(2) BigDecimal r2 bd1.subtract(bd2); // 减法 bd1 - bd2
(3) BigDecimal r3 bd1.multiply(bd2); // 乘法 bd1*bd2
(4) BigDecimal r4 bd1.divide(bd2,2,BigDecimal.ROUND_HALF_UP); // 除法 bd1/bd2
参数说明
第一个参数分母数据
第二个参数指定保留到小数点后几位
第三个参数取舍模式通常采用四舍五入(BigDecimal.ROUND_HALF_UP)