Home avatar

Lruihao's Note

Lruihao's GitHub chart

面向对象基础知识总结

面向对象思想(理解)

  1. 面向对象是基于面向过程的一种编程思想
  2. 思想特点:
    A: 是一种更符合我们思考习惯的思想
    B: 把复杂的问题简单化
    C: 让我们从执行者变成了指挥者
  3. 举例:
    A: 洗衣服
    B: 吃饭
    C: 买电脑
  4. 举例并代码体现 把大象装进冰箱

类与对象(掌握)

  1. 我们学习编程是为了把现实世界的事物用编程语言描述来实现信息化。
  2. 现实世界事物是如何表达的呢? 属性:外在特征
    行为:内在行为
  3. 我们学习的是 java 语言,它最基本的单位是类。
    所以我们要学会用类来体现一个事物。
  4. 类:是一组相关的属性和行为的集合
  5. 对象:是该类事物的具体个体。
  6. 举例:
    学生 类
    张三 对象

类的组成(掌握)

  1. 成员变量
    其实就是变量,只不过定义在类中,方法外,并且可以不用初始化。
  2. 成员方法
    其实就是方法,只不过不需要 static 了
  3. 案例:
    学生类
1
2
3
4
5
6
class Student {
  String name;
  int age;

  public void study() {}
}

类的使用(掌握)

  1. 创建对象
    格式:类名 对象名 = new 类名 ();
  2. 使用成员
    成员变量:对象名。变量名; 成员方法:对象名。方法名 (…);

成员变量和局部变量的区别(理解)

  1. 在类中的位置不同
    A: 成员变量 类中,方法外
    B: 局部变量 方法的形式参数,或者方法体中
  2. 在内存中的位置不同
    A: 成员变量 在堆中
    B: 局部变量 在栈中
  3. 生命周期不同
    A: 成员变量 随着对象的存在而存在,随着对象的消失而消失
    B: 局部变量 随着方法的调用而存在,随着方法的调用完毕而消失
  4. 初始化值不同
    A: 成员变量 有默认初始化值
    B: 局部变量 没有默认值,必须先声明,赋值,最后才能使用

形式参数问题(理解)

  1. 基本类型
    基本类型作为形式参数,需要的是该基本类型的值。
  2. 引用类型
    引用类型作为形式参数,需要的是该引用类型的地址值。(对象)

匿名对象(理解)

  1. 匿名对象:没有名字的对象。是对象的简化书写方式。
  2. 使用场景
    A: 调用方法,仅仅只调用一次
    B: 作为实际参数传递

封装(掌握)

  1. 隐藏实现细节,提供公共的访问方式
  2. 好处:
    A: 隐藏实现细节,提供公共的访问方式
    B: 提高了代码的复用性
    C: 提高了代码的安全性
  3. 使用原则
    A: 把成员变量隐藏
    B: 给出该成员变量对应的公共访问方式

private 关键字(掌握)

  1. 是一个权限修饰符
  2. 可以修饰类的成员(成员变量和成员方法)
  3. 仅仅在本类中可以访问,对外提供对应的 GetXXX(),SetXXX() 等方法
  4. 标准代码:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Student {
  private String name;
  private int age;

  public void setName(String n) {
   name = n;
  }

  public String getName() {
   return name;
  }

  public void setAge(int a) {
   age = a;
  }

  public int getAge() {
   return age;
  }

  public void study() {}
}

this 关键字(掌握)

  1. this:代表本类的对象
  2. 应用场景:
    解决了局部变量隐藏成员变量的问题。
    其他用法和 super 一起讲。
  3. 标准代码:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
  class Student {
    private String name;
    private int age;

    public void setName(String name) {//局部变量
      this.name = name;
    }

    public String getName() {
      return name;
    }

    public void setAge(int age) {
      this.age = age;
    }

    public int getAge() {
      return age;
    }

    public void show() {
      System.out.println("姓名是:"+name+", 年龄是:"+age);
    }

    public void study() {
      System.out.println("学生爱学习");
    }

    public void eat() {
      System.out.println("学生要吃饭");
    }

    public void sleep() {
      System.out.println("学生想睡觉");
    }
  }

  class StudentTest {
    public static void main(String[] args) {
      Student s = new Student();

      s.setName("林青霞");
      s.setAge(28);

      s.show();
      s.study();
      s.eat();
      s.sleep();

      System.out.println("姓名是:"+s.getName());
      System.out.println("年龄是:"+s.getAge());
    }
  }

构造方法(掌握)

  1. 作用:对对象的数据进行初始化。
  2. 特点:
    A: 方法名和类名相同
    B: 没有返回值类型
    C: 没有返回值
  3. 注意事项
    A: 如果我们没写构造方法,系统将默认给出无参构造方法
    B: 如果我们写了构造方法,系统将不再给出默认无参构造方法
    建议:我们自己手动给出无参构造方法
  4. 给成员变量赋值:
    A: 无参+setXxx()
    B: 带参
  5. 一个标准的代码:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
  class Student {
    private String name;
    private int age;

    public Student() {}

    public Student(String name,int age) {//构造方法
      this.name = name;
      this.age = age;
    }

    public void setName(String name) {
      this.name = name;
    }

    public String getName() {
      return name;
    }

    public void setAge(int age) {
      this.age = age;
    }

    public int getAge() {
      return age;
    }

    public void show() {
      System.out.println("姓名是:"+name+", 年龄是:"+age);
    }
  }

  class StudentTest {
    public static void main(String[] args) {
      //无参+setXxx()
      Student s = new Student();
      s.setName("林青霞");
      s.setAge(28);
      s.show();

      //带参
      Student ss = new Student("张曼玉",20);
      ss.show();
    }
  }

对象的初始化过程(理解)

  • Student s = new Student(); 做了哪些事情
    A: 加载 Student.class 文件进内存
    B: 在栈中为 s 开辟空间
    C: 在堆中为学生对象开辟空间
    D: 为学生对象的成员变量赋默认值
    E: 为学生对象的成员变量赋显示值
    F: 通过构造方法给成员变量赋值
    G: 对象构造完毕,把地址赋值给 s 变量

static 关键字(掌握)

  1. 是一个状态修饰符。静态的意思
  2. 它可以修饰成员变量和成员方法
  3. 特点:
    A: 随着类的加载而加载
    B: 优先于对象存在
    C: 被所有对象共享

    这也是判断我们是不是该使用静态的条件
    举例:饮水机(可共享 static) 和水杯例子。
    D: 可以通过类名调用
    静态修饰的内容,可以通过类名调用,也可以通过对象名调用
  4. 方法访问特点
    A: 普通成员方法
    可以访问静态成员变量,非静态成员变量,静态成员方法,非静态成员方法
    B: 静态成员方法
    只能访问静态成员变量,静态成员方法
    简记:静态只能访问静态

    注意:
    静态中是不能有 this 的。
    先进内存的不能访问后进内存的。反之可以。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/**
 * 班级编号应该是被班级每个人都共享的,所以定义一个就应该可以了。
 * 而姓名和年龄,每个人应该是不一样的,所以,每个对象,都应该定义自己的。
 *
 * 在 java 中,用什么来表示成员变量是被共享的呢?static
 */
class Student {
  //姓名
  String name;
  //年龄
  int age;
  //班级编号
  //String classNumber;
  static String classNumber;

  public Student(String name,int age) {
    this.name = name;
    this.age = age;
  }

  public Student(String name,int age,String classNumber) {
    this.name = name;
    this.age = age;
    this.classNumber = classNumber;
  }

  public void show() {
    System.out.println(name+"---"+age+"---"+classNumber);
  }
}

class StudentDemo {
  public static void main(String[] args) {
    //创建学生对象
    Student s1 = new Student("林青霞",28,"20150306");
    s1.show();

    /*
    Student s2 = new Student("马云",35,"20150306");
    s2.show();

    Student s3 = new Student("马化腾",33,"20150306");
    s3.show();
    */
    Student s2 = new Student("马云",35);
    s2.show();

    Student s3 = new Student("马化腾",33);
    s3.show();
  }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*
  static: 静态关键字。

  作用:
    可以修饰成员变量和成员方法

  特点:
    A: 随着类的加载而加载
    B: 优先于对象存在
    C: 被类的所有对象共享
      这也是我们判断是否使用静态关键字的条件

      饮水机:可以被静态修饰
      水杯:不可以被静态修饰
    D: 可以通过类名调用
      我们的调用既可以是对象,还可以是类名
*/
class Student {
  public void show() {
    System.out.println("show");
  }

  public static void show2() {
    System.out.println("show2");
  }
}

class StudentDemo2 {
  public static void main(String[] args) {
    Student s = new Student();
    s.show();
    s.show2();

    Student.show2();
    //Student.show(); 
  }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*
  static 的注意事项:
    A: 在静态方法中是没有 this 关键字的
      因为静态是随着类的加载而加载,优先于对象而存在。而 this 是随着对象的创建而存在。
      先进内存的,不能访问后进内存的;而后进内存的,可以访问先进内存的。
    B: 静态只能访问静态。
      非静态的成员方法:
        可以访问静态成员变量,非静态成员变量,静态成员方法,非静态成员方法
      静态的成员方法:
        只能访问静态的成员变量,静态的成员方法
*/
/*
class Student {
  private String name;

  public static void setName(String name) {//  静态方法不能用 this
    this.name = name;
  }

  public void show() {
    System.out.println(name);
  }
}*/

class Demo {
  int x = 10;
  static int y = 20;

  public void show() {
    System.out.println(x);
    System.out.println(y);
  }

  public static void show2() {
    //System.out.println(x); 
    System.out.println(y);//√
  }

  public void show3() {
    show();
    show2();
  }

  public static void show4() {
    //show(); 只能访问静态的成员方法
    show2();
  }
}

class StudentDemo3 {
  public static void main(String[] args) {
    //Student.setName("林青霞");
  }
}

静态成员变量和普通成员变量的区别(理解)

  1. 所属不同
    静态属于类的,称为类变量
    非静态属于对象的,称为对象变量,实例变量
  2. 内存空间不同
    静态在方法区的静态区
    非静态在堆内存
  3. 生命周期不同
    静态随着类的加载而加载,随着类的消失而消失
    非静态随着对象的创建而存在,随着对象的消失而消失
  4. 调用不同
    静态可以通过类名调用,也可以通过对象名调用。建议通过类名调用
    非静态只能通过对象名调用

main 方法是静态的(理解)

1
public static void main(String[] args)

public: 访问权限修饰符,表示最大的访问权限,被 jvm 调用,所有权限要够大。
static: 被 jvm 调用,不用创建对象,直接类名访问
void: 被 jvm 调用,不需要给 jvm 返回值
main: 一个通用的名称,虽然不是关键字,但是被 jvm 识别
String[] args:
早期出现是为了接收键盘录入数据的。

Java 水仙花数(循环)

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3 次幂之和等于它本身(例如:13 + 53+ 3^3 = 153)。

Java 录入数据

记忆格式

(1) 导包:
import java.util.Scanner;
注意:位置在 class 的上面。
(2) 创建键盘录入对象:
Scanner sc = new Scanner(System.in);
(3) 获取数据
int i = sc.nextInt();
(4) 练习:
A: 求两个数据的和
B: 获取两个数据中较大的值
C: 获取三个数据中较大的值
D: 比较两个数是否相等

英语语法--主谓一致

常见情况

由 and 或 both and 连接的并列主语,谓语动词一般用复数

  1. English and chinese are two quite different languages.
  2. Both brother and sister tire of city life.

一但主语前被 no,every,each 所修饰时,谓语动词用单数

  1. No desk and (no) chair is seen in the hall.
  2. All work and no play makes Jack a dull boy.
  3. They each have been to the Forbidden city. each 位于主语后,所以谓语动词用复数

当主语表示同一事物的两个部分,同一个人的两个身份(第二个名词前无冠词),谓语动词用单数

比如 the(a)horse and cart a watch and chain a knife and fork a cup and soucer the butter and bread

英语语法--形式倒装

形式倒装,句子本不是本来的语序。

may 位于句首,标祝愿

例句

  1. May you succeed.
  2. May you have a happy holiday.
  3. Long live chairman Mao.(毛主席万古长青)

whatever 直接做成分或放在名词之前,however 放在 adv,adj 之前或 many,much 等词之前

例句

英语语法--完全倒装

完全倒装:把整个谓语动词放到主语前。

表方位或时间的副词 (adv)、表地点的介词短语位于句首时

例句

  1. Here comes the bus.
  2. In the lecture hall of a university sits a professor.
  3. Out rushed the children.
  4. Now comes your turn.
  5. Up jumped the cat and caught the mouse.
  6. Down came the rain and up went the umbrellas.
  7. Among the people stood his friend,Jim.
  8. (To be) South of the river lies a small factory.

但主语为表示人称的代词时无需倒装

英语语法--部分倒装

虽然我英语四级没过,词汇量也不很多,甚至下降了很多,但是对于英语的语法我还是很喜欢的,马上快四级了又,复习整理一下以前的语法笔记。以下内容纯手打!! 先从倒装句开始吧!分为三大类,部分倒装,完全倒装和形式倒装。先复习第一种。

发现新版本

当前站点有新版本可用。