JAVA基础学习
本次主要记录的知识点有:
-
递归
递归指的是,自调用函数,在函数体内部直接或间接地自己调用自己,即函数的嵌套调用是函数本身,需要注意的有两点,一是递归必须要有出口,不能形成死循环,二是递归不易调用多次,容易造成栈内存溢出,而由于java不会提示栈溢出错误,所以多次调用递归在语法上是不会报错的,但是在实际的运算过程中,答案是错误的。
递归:在Java中 在方法中调用方法本身的现象,我们称之为递归
递归注意事项:
1.递归要有出口,否则就是死递归 死递归会造成栈溢出
2.递归的次数不宜过多,否则也会有栈溢出的风险
生活中:学Java----找工作—挣钱—娶媳妇----生娃----学Java-----找工作—挣钱—娶媳妇
递归体现的思想:体现的是一种拆分合并的思想
以下为一个递归的例子:在这里插入代码片
public class MyDemo {
public static void main(String[] args) {
show(5);
}private static void show(int i) {
//注意递归也要出口
System.out.println(“递归”);
if(i<0){
return;
}else{
show(–i);
}
}死递归
//private static void show() {
// show();
// // StackOverflowError 栈溢出
//}
} -
面向对象的思想了解
首先了解到,如C语言这种面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求的语言叫做面向过程的语言,而把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起。即使面向对象编程,即JAVA。
举例来说,C语言:洗衣服:脱下脏衣服->倒水->倒洗衣粉->搓->晾晒
JAVA语言:洗衣服:把脏衣服扔进洗衣机
优势:a:是一种更符合我们思想习惯的思想
b:可以将复杂的事情简单化
c:将我们从执行者变成了指挥者
角色发生了转换
特征
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
-
类与对象
类是我们Java中最小的单位,他体现了一种封装的思想,封装了成员变量(属性)成员方法(功能)而类是一个抽象的概念,你不能直接使用,要使用该类,你的对类进行实例化,所谓实例化,就是创建该类对象,因为对象才是该类的一个具体表现
例:`//class 类
public class Student { //定义了一个学生类
//定义成员变量
String name = “张三”;
int age = 23;
char sex = ‘男’;//成员方法
public void eat() {
System.out.println(“吃饭”);
}public void sleep() {
System.out.println(“睡觉”);
}public void palyGame() {
System.out.println(“打豆豆”);
}
}
创建对象:`Student s=new Student();
即创建了具体的学生s。
-
关键字的概述和特点
1.private关键字:
可以修饰成员变量,也可以修饰成员方法,被修饰的成员,只能在本类中访问,外界无法通过 对象.成员 去访问,即私有化。
2.this关键字:
表示本类属性、表示本类方法、当前对象
调用类中的属性:this.属性;
调用类中的方法:this.方法();
调用类中的构造:this();
3.public关键字:
一个java文件中,在只能有一个public修饰的class,且该class名与文件名一致
4.super关键字:
调用父类的属性和方法 -
继承
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
通过extends关键字可以实现类与类的继承
class 子类名 extends 父类名 {}
单独的这个类称为父类,基类或者超类;这多个类可以称为子类或者派生类。
继承的注意事项
a:子类只能继承父类所有非私有的成员(成员方法和成员变量)
b:子类不能继承父类的构造方法,但是可以通过super(待会儿讲)关键字去访问父类构造方法。
c:不要为了部分功能而去继承
什么时候使用继承
继承其实体现的是一种关系:“is a” .
采用假设法。
如果有两个类A,B。只有他们符合A是B的一种,或者B是A的一种,就可以考虑使用继承。
例:class Animal{
String name;
int age;
void run() {
System.out.println(“跑步”);
}
void eat() {
System.out.println(“吃东西”);
}
}
class cat extends Animal{
void run() {
System.out.println(“猫跑步”);
}
void eat() {
super.eat();
System.out.println(“吃的是鱼”);
}
}
class dog extends Animal{
void run(){
System.out.println(“狗跑步”);}
void eat() {
super.eat();
System.out.println(“吃的是骨头”);
}
}
例中,Animal为父类,cat,dog为子类。