学习Java第五天

一、面向对象基础

1.1 认识两个概念即类和对象

对象:现实世界中任何一个现存的实体是一个对象

:类是对象的一个抽象,是对象的一个概括(具有相同属性和行为的对象),类是对象的一个模板,反之对象是类的一个具体实例是类的一个具体实现

理解:图纸和楼房

图纸就是楼房的一个设计一个模板,楼房则是根据图纸进行修建的

表格思维法:略

问题:

张三开着法拉利闯红灯,请问这里面涉及到几个对象

1.2面向对象和面向过程

面向对象:思考单元是对象------决策者的角色(设计

面向过程:思考单元是过程------执行者的角色(执行

理解案例一:

张三开着货车从成都拉货到北京

面向对象:

张三------让张三具有开车的能力

货车------让它具有跑起来的功能以及装货的功能

货物------大小、价格。。。

起始地------名称

目的地------名称

面向过程:

张三这个人去找到货车再将货物给运送到货车里面再接着启动货车从成都出发前往北京

假若现在要求张三开着货车从北京拉货物到上海

我们讲过我们在书写Java代码的时候其实就是在画图纸

理解案例二:

炒饭和盖饭

面向对象好比与盖浇饭------耦合度比较低

面向过程就好比与蛋炒饭------耦合度就比较高

1.3面向对象和面向过程优缺点

面向过程优点

a、简单

b、符合人逻辑

c、实现快

缺点

a、难以扩展

b、复用性差

面向对象优点

a、可扩展

b、可维护

c、可复用

缺点:

a、设计难度大

b、规划复杂

1.4面向对象三大特性

封装------>将代码及其处理的数据绑定在一起的一种编程机制

继承------>Java是单继承

多态------>“一个接口,多个方法”

二、类

2.1类的组成

属性:属性我们可以理解为一个对象的标签,就好比我们人有姓名、年龄等属性标签即告知别人是什么------>成员变量

行为:行为我们可以理解为一个对象能干什么,就好比我们人有吃饭、学习、运动的动作------>方法

2.2程序结构

public class 类名{

属性

行为

}

一个Java文件中至多一个public类,并且public类的类名要和Java文件名保持一致

一个Java文件中可以存在多个类

public不是必须的,一个Java文件可以不存在public类

2.3属性

属性就是指成员变量

程序结构:

权限修饰符 其他修饰符 数据类型(基本数据类型/引用数据类型) 变量名 = 值;

注意:成员变量可以不用初始化即成员变量有默认值

2.3.1权限修饰符

权限修饰符用于控制被访问的范围

权限名         当前类         相同包         子类         不同包

public          true              true               true          true

protected    true              true               true          false

default        true               true               false        false

private        true              false              false         false

2.3.2 其他修饰符

static 、final、transient ......

static关键字所修饰的变量被称为静态变量

final关键字所修饰的变量被称为常量,常量一旦被初始化以后就不能被修改同时常量必须被初始化;

成员变量和局部变量的对比

位置成员变量存在于类中方法外

           局部变量存在于方法里面、代码块里面、形参

作用域:成员变量作用域是整个类

              而局部变量只能作用于具体的代码块或者方法里面

内存:成员变量跟随对象,它存放于里面

           局部变量存放于内存块,它存放于里面

生命周期:成员变量的生命周期是和类以及对象相关

                  局部变量的生命周期和方法相关

修饰符:成员变量可以有权限修饰符、static修饰符、final修饰符

              局部变量可以被final所修饰不能使用权限修饰符、static修饰符等符号

默认值:成员变量可以不用初始化,程序会给成员变量一个默认值

               局部变量在使用前必须要初始化,没有默认值

2.4方法

方法的重载:

指的是同一个类中可以运行多个方法重名,但是它们的参数列表必须保持不同

2.5 构造器

构造器是一个特殊的方法,它用于初始化对象,构造器是在创建对象的时候被调用即new关键字以后被调用

注意:构造器!=创建对象它=初始化对象,只是说它在创建对象的时候调用

构造器这个方法的特殊性:

1、方法名和类名相同

2、没有返回值,只有权限修饰符即不能使用void、其它返回值类型

程序结构:

权限修饰符 类名 (参数列表){

代码体

}

好处:完成类的一些初始化操作,不同的对象可以根据自身的需求对类的初始化

构造器的分类

构造器分为两类:无参构造、有参构造

注意:当一个类中没有去手动定义构造器的时候会默认创建一个无参构造也被称为默认构造器

当我们手动定义了一个构造器以后(无论有参还是无参),这个默认构造器就不会存在了

一个类中可以存在多个构造器,只是要求这些构造器的参数列表保持不同即可

三、对象

3.1对象的创建

我们知道对象是类的具体体现,一个类可以构造出多个对象

程序结构

类名 对象名 = new 类名();

四、this关键字

this翻译为 这------> 这个------>这个对象

在Java中this关键字指的当前类的一个实例对象

既然this是当前类的一个实例对象,那么我们就可以使用该关键字去调用当前类的属性和行为

当构造中的参数名和成员变量重名的时候,我们可以使用this关键字进行区分

若要在一个构造器中去调用另外一个构造器我们可以使用this(实际参数)的形式,如果没有实际参数则调用的是当前类的空参构造,若有实际参数则调用的是对应的有参构造器

this(实际参数)必须出现在行首

当方法中的参数和成员变量重名时,程序会采取就近原则使用的参数,如果我们要使用对应的那个成员变量我们就需要通过this关键字去区分

五、static关键字

static关键字是从属于类的即被static修饰的方法和成员变量从属于类

它只和类有关,它和对象的创建无关

被static所修饰的方法和变量是会优先于实例方法和实例变量加载到内存里面,它的生命周期只和类有关

static所修饰的成员是被所有对象共享的

5.1静态变量

5.2静态方法

注意:静态方法里面不能使用this关键字

5.3静态变量和静态方法的调用

5.3.1变量的调用

a、类里面

静态变量名

假若方法中的参数名和静态变量名重名了的话就不推荐使用this关键字进行区分,相反我们可以使用 类名.静态变量名 的形式去调用

b、在其它类里面调用

类名.静态变量

5.3.2方法的调用

被static所修饰的方法是静态变量,它只能去调用静态属性和静态方法,

在其它类里面若要去调用静态方法我们可以通过 类名.静态方法名 的形式去调用

例如我们前面学习数组的时候,Arrays工具类就提供了很多方法

六、类的加载和内存分析

Java是编译和解释混合型的编程语言,它的运行需要依靠JVM虚拟机。JVM虚拟机在运行Java程序代码的时候会将管理它的内存划分成不同的数据区域,其中在JVM的数据存储区就包含栈、堆、方法区、程序计数器等。

6.1栈

栈分为两种:虚拟机栈和本地方法栈

虚拟机栈:每个方法在执行的同时都会创建一个栈帧

一个线程就是一个栈

一个栈里面有多个栈帧

每个栈帧里面放的是方法的局部变量

一个方法对应一个栈帧

6.2堆

堆是Java虚拟机所管理的内存中最大的一块存储区域。堆内存被所有线程共享。主要存放使用new关键字创建的对象

6.3方法区

方法区同Java堆一样是被所有线程共享的区间,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码。

七、静态代码块

7.1代码块

{

代码块

}

代码块可以用于类中一些初始化操作

代码块优先于构造器执行

7.2静态代码块

static {

代码块

}

静态代码块优先于代码块的执行,再去执行代码块,接着才是构造器

静态代码块只被执行一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值