Java概念-02
- If语句是依靠boolean表达式进行的判断,而switch依靠的是内容进行的判断;
- 循环的使用:
如果已经明确的知道循环次数,建议使用for循环;如果不知道循环次数,但知道循环结束条件,建议使用witch循环;
3. 方法的重载:
发生在一个类之中,指的是:方法名称相同,参数类型及个数不同,与返回值无关的方法定义,在调用的时候,会根据传入的参数自动执行对应的方法;
4. 递归:
方法自己去调用自己的一种代码形式;
a) 递归虽然看起来代码结构简单,但是执行过多会造成java.lang.StackOverflowError,即栈溢出和程序执行过慢。所以在开发之中递归调用过多时,最好用for或while来代替;
b) 根本原因是,对于每一个线程,都有一个java栈,当有一个方法被调用的时候,会产生一些与这个方法有关的信息,比如:方法名称、参数、中间变量等,这些都叫栈帧,当一个方法执行完毕,栈帧才会从栈顶pop掉。如果你无节制调用递归的话,会一直向栈里push栈帧,而java栈是有一定的长度和深度的,当栈满了,无法在进行push的时候,机会出现栈溢出(java.lang.StackOverflowError),解决的方法,就是不要用递归,用for或while,而且平时也不建议用递归,效率太低;
5. 对java.lang.StackOverflowError的分析:
a) 原因:运行一个程序,JVM会开辟一块内容空间去存储程序进行时的一些信息,当程序运行时需要存储的信息超过了分配的空间,就会出现溢出,比如:死循环,递归;
b) 解决:首先优化程序代码,检查有无死循环,递归等,如果存在递归,建议用for或while开替代;
6. 面向对象的三大特征:
a) 封装:
将对象的属性和实现细节隐藏起来,仅对外提供公共的方法方式;例如:简单java类,封装属性,对外只提供setter和getter方法,工厂,代理等;封装是通过访问权限来进行控制的:private、default、protected、public;
b) 继承:
- 继承是发生在两个类之间,是通过exends实现的,被继承的类叫父类,继承的类叫子类。
- 在java里面只支持单继承,指一个类只能继承一个父类,被final定义的类不允许被继承。
- 在java里面如果一个类没有使用extends关键字,那么这个类默认继承Object。
- 子类可以继承父类:
当子类和父类在同一包中时,可以继承默认权限修饰的属性和方法;
当子类和父类在不同包中时,可以继承public/protected修饰的属性和方法;
5. 子类不可以继承父类:
无法继承父类构造方法,无法继承private修饰的属性和方法;
c) 多态:一个对象的不同表现形式
多态的三个核心条件:
- 继承的存在(继承是多态实现的核心,没有继承就没有多态);
- 子类重写父类的方法(多态下调用不同子类重写的方法);
- 父类引用变量指向子类对象(子类和父类的类型转换):
|- 将一个父类的引用指向一个子类对象,称为向上转型,自动类型转换,此时父类调用的是子类覆写或继承的方法,无法调用子类特有的方法;
|- 如果父类要想调用子类特有的方法,就得将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型,此时补习强制进行转换;
7. 构造方法:为对象进行初始化操作
a) 方法名称与类名称相同,无返回值,在对象创建的时候调用一次;构造方法允许被重载,当没有进行重载时,默认提供有一个无参构造;
8. this关键字:
a) this.属性:调用本类成员属性;
b) this.方法:调用本类成员方法;
c) this():调用本类的无参构造,要求放在首行,并且不要递归调用;
9. 简单java类开发原则:
a) 类名称要求有意义,可以明确的描述某一类的实体;
b) 类中的所有属性都要求使用private封装,封装后的属性提供有setter和getter方法;
c) 类中可以提供有若干个构造方法,但必须提供有无参构造;

浙公网安备 33010602011771号