黑马程序员—易混淆的知识
2015-07-04 09:04
323 查看
------- android培训、java培训、期待与您交流! ----------
String和StringBuffer类区别
1.String 是定长的
例如:String s1="abc";s1="egf";
StringBuffer类:是变成字符串,因为它具有(buffer)缓冲区:StringBuffer类表示的字符串,其内容与长度随时动态可变,
可直接对串自身进行插入、删除、修改、替换等操作,且操作结果影响串对象本身。
二、创建StringBuffer类型字符串的方法
1.用构造方法,不能用类似StringBuffer s1="abc";这种方法。
a.StringBuffer(): 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
b.StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。初始容量大小为字符串长度+16
c.StringBuffer(int capacity)构造一个不带字符,但具有指定初始容量的字符串缓冲区
2.常用的方法
(1)append()系列:将参数中的字符串表示形式追加到序列中去。
(2)setLength(): 设置字符序列的长度,如果 newLength 参数大于或等于当前长度,则将追加有效的 null 字符
(3)insert()系列: 将参数中的字符串表示形式插入序列中其中:offset指欲插入字符的起始位置
(4)delete(int start, int end) 移除此序列的子字符串中的字符。
(5)reverse() 将此字符序列用其反转形式取代。
3.类的容量和字符长度
(1)capacity() 返回当前容量。
(2)length() 返回长度(字符数)。
(3)ensureCapacity:确保容量至少等于指定的最小值,后期动态调整容量
抽象和接口
相似部分:
1.对于方法抽象方法只有方法声明没有方法实现
2.都不能创建实例
不同之处
1.对于成员变量:接口中的都是public static fanal (静态常量)型,
但是抽象类并没有规定。
2.接口里只有抽象方法,但是抽象类中可以定义普通方法并且
普通方法有具体实现
3.接口里成员是public的,不能定义成其它封装类型(如:private,protected),
但是抽象类中可以使用一般类的封装类型
4.接口里没有构造方法,但是抽象类中有
5.在接口中不包含super,this,但是抽象类中可以用super,this
==和equals
怎么判断两个对象相等
1.==:
(1)对于对象来说,如果用两个对象变量去做判断,只能说明两
个对象变量是不是指向同一块内存区。
(2)注意null:表示空引用
2.equals:指示其他某个对象是否与此对象“相等”。
(1)在object继承过来的方法比较仍然是是不是指向同一块内存区
public boolean equals(Object obj) {
return (this == obj);
}
(2)一般情况下根据需要在子类中进行改写
3.instanceof:运算符,左方是一个对象变量,右方是类型
判断左方是否是右方类型的实例或其子类实例,如是返回true,否则false
应用前提:左方代表的对象所属的类型和右方的类型存在继承关系
字符和字符串
(1)字符值:定义字符类型关键字:char类型 常量是:用''括起来如: ‘a’,‘b’,'\\'
(2)字符串:值用双引号括起来的值: "abc","cdef","ab\n"(表示:ab回车),"ab\\":(表示ab\),"中国"
重载和覆盖
方法重载:在类中方法名相同,参数不同
方法覆盖:子类和父类存在相同的方法名、参数列表、返回类型,在使用子类方法时即覆盖了父类的方法
向上转型和向下转型
向上转型:是指子类的对象变量或对象赋值给父类的引用,即子类的对象可以当做父类的对象使用
向下转型:就是把父类变量指向的对象强制转换为子类型的对象
throw和throws
throws关键词:仅说明方法可能会出现哪些异常,方法内部没有出来
throws:在方法的后边加上throws后,形如:
方法()throws 异常类1,异常类2
指的是:该方法以后可能会抛出异常类1,异常类2这些类异常
throw:自动抛出异常
如:throw new ArithmeticException();程序与手动抛出ArithmeticException类型的异常
throws:说明方法可能会抛出的异常
throw:抛出异常
throws和throw的区别:
throws是放在方法后用来说明将来方法可能会抛出的异常(系统的或自定义的)
throw:在方法中用来抛出异常的,此时需要new 一个异常对象,把异常信息封装
super和this的异同:
1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
3)super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参)
4)this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)
5)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
6)super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
7)super()和this()均需放在构造方法内第一行。
8)尽管可以用this调用一个构造器,但却不能调用两个。
9)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
10)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
11)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。
continue和break
break:结束循环或switch语句
continue:通常表示结束本次循环
区别:break结束整个循环。continue结束本次循环,循环体语句中continue后边语句本次就不再执行,流程进行下次循环
String和StringBuffer类区别
1.String 是定长的
例如:String s1="abc";s1="egf";
StringBuffer类:是变成字符串,因为它具有(buffer)缓冲区:StringBuffer类表示的字符串,其内容与长度随时动态可变,
可直接对串自身进行插入、删除、修改、替换等操作,且操作结果影响串对象本身。
二、创建StringBuffer类型字符串的方法
1.用构造方法,不能用类似StringBuffer s1="abc";这种方法。
a.StringBuffer(): 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
b.StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。初始容量大小为字符串长度+16
c.StringBuffer(int capacity)构造一个不带字符,但具有指定初始容量的字符串缓冲区
2.常用的方法
(1)append()系列:将参数中的字符串表示形式追加到序列中去。
(2)setLength(): 设置字符序列的长度,如果 newLength 参数大于或等于当前长度,则将追加有效的 null 字符
(3)insert()系列: 将参数中的字符串表示形式插入序列中其中:offset指欲插入字符的起始位置
(4)delete(int start, int end) 移除此序列的子字符串中的字符。
(5)reverse() 将此字符序列用其反转形式取代。
3.类的容量和字符长度
(1)capacity() 返回当前容量。
(2)length() 返回长度(字符数)。
(3)ensureCapacity:确保容量至少等于指定的最小值,后期动态调整容量
抽象和接口
相似部分:
1.对于方法抽象方法只有方法声明没有方法实现
2.都不能创建实例
不同之处
1.对于成员变量:接口中的都是public static fanal (静态常量)型,
但是抽象类并没有规定。
2.接口里只有抽象方法,但是抽象类中可以定义普通方法并且
普通方法有具体实现
3.接口里成员是public的,不能定义成其它封装类型(如:private,protected),
但是抽象类中可以使用一般类的封装类型
4.接口里没有构造方法,但是抽象类中有
5.在接口中不包含super,this,但是抽象类中可以用super,this
==和equals
怎么判断两个对象相等
1.==:
(1)对于对象来说,如果用两个对象变量去做判断,只能说明两
个对象变量是不是指向同一块内存区。
(2)注意null:表示空引用
2.equals:指示其他某个对象是否与此对象“相等”。
(1)在object继承过来的方法比较仍然是是不是指向同一块内存区
public boolean equals(Object obj) {
return (this == obj);
}
(2)一般情况下根据需要在子类中进行改写
3.instanceof:运算符,左方是一个对象变量,右方是类型
判断左方是否是右方类型的实例或其子类实例,如是返回true,否则false
应用前提:左方代表的对象所属的类型和右方的类型存在继承关系
字符和字符串
(1)字符值:定义字符类型关键字:char类型 常量是:用''括起来如: ‘a’,‘b’,'\\'
(2)字符串:值用双引号括起来的值: "abc","cdef","ab\n"(表示:ab回车),"ab\\":(表示ab\),"中国"
重载和覆盖
方法重载:在类中方法名相同,参数不同
方法覆盖:子类和父类存在相同的方法名、参数列表、返回类型,在使用子类方法时即覆盖了父类的方法
向上转型和向下转型
向上转型:是指子类的对象变量或对象赋值给父类的引用,即子类的对象可以当做父类的对象使用
向下转型:就是把父类变量指向的对象强制转换为子类型的对象
throw和throws
throws关键词:仅说明方法可能会出现哪些异常,方法内部没有出来
throws:在方法的后边加上throws后,形如:
方法()throws 异常类1,异常类2
指的是:该方法以后可能会抛出异常类1,异常类2这些类异常
throw:自动抛出异常
如:throw new ArithmeticException();程序与手动抛出ArithmeticException类型的异常
throws:说明方法可能会抛出的异常
throw:抛出异常
throws和throw的区别:
throws是放在方法后用来说明将来方法可能会抛出的异常(系统的或自定义的)
throw:在方法中用来抛出异常的,此时需要new 一个异常对象,把异常信息封装
super和this的异同:
1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
3)super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参)
4)this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)
5)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
6)super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
7)super()和this()均需放在构造方法内第一行。
8)尽管可以用this调用一个构造器,但却不能调用两个。
9)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
10)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
11)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。
continue和break
break:结束循环或switch语句
continue:通常表示结束本次循环
区别:break结束整个循环。continue结束本次循环,循环体语句中continue后边语句本次就不再执行,流程进行下次循环
相关文章推荐
- 近一个月的面试总结
- 近一个月的面试总结
- 【剑指Offer学习】【面试题34:丑数】
- 【剑指Offer学习】【面试题33:把数组排成最小的数】
- 【剑指Offer学习】【面试题32:求从1到n的整数中1出现的次数】
- 《Java面试试题》写一个两个线程之间的死锁
- 2015070308 - 职场学习
- 黑马程序员----java中的多线程基础
- 2015年7月VIP内推前端工程师面试经历
- 程序员面试最重要注意哪些?
- IOS 面试题(三)
- IOS 面试题(四)
- 黑马程序员----OC学习之继承
- 多线程笔试面试总结(一)
- 黑马程序员——Java基础---线程的另一个总结(4)--线程通信(互斥),线程范围的共享变量
- 2015_06月底面试问题总结
- 程序员的道法术器势
- 黑马程序员——Java基础--集合(三)
- Java程序员的Golang入门指南(下)
- Java程序员的Golang入门指南(下)