当前位置 : 主页 > 编程语言 > c++ >

JAVA面向对象思想的基本知识点

来源:互联网 收集:自由互联 发布时间:2021-06-30
t.text 1.栈区、堆区、静态区通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间;而通过new关键字和构造器创建的对象放在堆
t.text
1.栈区、堆区、静态区
通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间;而通
过new关键字和构造器创建的对象放在堆空间;程序中的字面量(literal)如直接书写的100、”hello”和常量都是放
在静态区中.
String str = new String("hello");
上面的语句中变量str放在栈上,用new创建出来的字符串对象放在堆上,而”hello”这个字面量放在静态区。

2.静态变量与实例变量的生命周期
静态变量是用static修饰的变量,可以通过类名直接访问,并且静态变量是放在方法区的,而实例变量不能通过类名访问,
并且实例变量存放在堆区。静态变量的生命周期由类创建而开始,类结束而销毁,实例变量的生命周期由实例变量本身决定。

3.局部变量的生命周期
局部变量位于栈区,它的生命周期由调用该局部变量的方法决定。

4.操作符==与equals()方法
==比equals()更严谨,==除了比较引用对象是否相同外,还要对引用变量进行判断,而equals方法主要用来比较对象内容
是否相同。

5。继承extends
当父类、子类在同一个包下的时候,子类继承public、protected以及默认级别的成员变量和成员方法。当父类、子类不在同
一个包下的时候,子类继承父类public以及protected两个级别的方法和变量。

一个类只能继承一个直接父类,但可以有多个间接父类。

6.方法重载和方法覆盖
方法重载:方法名相同,但是参数不同,是编译时的多肽
方法覆盖:主要是建立在父类和子类之间,子类重写父类的方法,通常是方法名、参数、返回类型都必须相同

7.多肽
多肽中绑定规则:静态方法与引用变量声明的类型静态绑定,成员变量与引用变量声明的类型静态绑定,实例方法与引用变量
的对象动态绑定。例子:
Base who=new Sub();
其中Base表示引用类型,Sub表示对象。

8.继承的利弊
继承提高了代码的重用性,定义了下层能够拥有的属性和方法
继承的弊处是打破了封装

9.接口
接口和抽象类都不能被实例化,接口中只是声明方法但不包含具体的实现细节,接口不能实现另一个接口但是能继承多个接口,
要实现接口通过implements来进行,一个类实现其接口时必须实现接口中的抽象方法,一个类可以实现多个接口。

10.类的生命周期
类的生命周期从类被加载、连接、初始化、卸载结束。

11.对象的生命周期
对象的创建有四种方法:通过new来创建、通过序列化和反序列化、通过反射机制、通过对象的clone方法。

12.多线程
进程是指运行中的应用程序,每个进程有自己独立的内存空间,每次执行一个java.exe就表示进程去解析JAVA程序代码。
线程是指进程中的一个执行流程,进程可以由线程组成,一个进程中可以同时运行多个不同的线程。

线程与进程的区别:进程需要操作系统为其分配内存空间,而同一进程中所有线程可以共用一个进程的内存空间,线程可以
共享一个内存和资源。
线程的创建方法:创建线程有两种方式:通过实现Thread类,通过实现Runnable接口。
1.Thread类:通过extends来继承Thread类,然后执行Run方法,之后通过start方法开始子线程。
2.实现Runnable接口:通过implements来实现,执行Run方法,通过start方法开始子线程

线程让步:sleep()和yield()
sleep方法不考虑优先级而yield只会把CPU转给比自己优先级相等或高的线程

13.数组
int []a=new int [1];

排序:冒泡排序:值较小的数据向数组顶部冒出,值较大的数据向数组的底部。
for(int i=0;i
 
  array[j+1]){
            int temp=array[j];
            array[j]=array[j+1];
            array[j+1]=temp;
        }
    }
}

二叉查找:通过比较数组的一半进行比较

int low=0;
int high=array.length-1;
int middle;
while(low
 
网友评论