一、面向对象

1.特点:

A:是一种更符合我们思考习惯的思想
B:把复杂的事情简单化
C:让我们从执行者变成了指挥者

2.使用:

a:创建对象格式
类名 对象名 = new 类名();
b:如何使用成员变量和成员方法
对象名.成员变量
对象名.成员方法()

3.对象内存图

注意:

对象的方法在类的定义时就在方法区生成了,创建具体对象时再通过地址(0x001)调用该方法,不同的对象都是调用同一个方法。

4.Java面向对象开发、设计、特征

A:开发:就是不断的创建对象,通过对象调用功能
B:设计:就是管理和维护对象间的关系
C:特征:
  a:封装:通过private隐藏对象的属性和和实现细节,仅对外提供公共访问方法(public)  
  b:继承:把多个类中相同的内容提取出来定义到一个类中。
  c:多态

5.注意事项:

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

类中的位置不同:类中的方法外;方法定义中或方法声明上

内存的位置不同:在堆内存;在栈内存

生命周期不同:跟对象的创建和消失一致;跟方法的调用和调用完毕一致

初始化值不同:有默认初始值;没有默认初始值,必须在定义时赋值

(2)匿名对象的使用场景(匿名对象:new 类名(),即直接new一个对象,不给它取名字):

A:调用方法,仅仅调用一次的时候,调用多次就不适合用匿名对象了。好处:调用完毕后匿名对象就可以被当成垃圾回收

B:匿名对象可以作为实际参数传递

6.private概述

被private修饰的成员变量或方法只能在本类中访问。

7.this概述

A:代表对象,即所在函数所属的对象的引用;简单来说,哪个对象调用了this所在的函数,this就是哪个对象的引用

B:this(实际参数)可以用来调用本类中对应参数的构造方法。

8.构造方法 (一般格式:public 类名(){  })

(1)定义:用于给对象初始化的方法

(2)特点:方法名和类名相同;不需要定义返回值类型;没有具体的返回值;所有对象都需要初始化才可以使用

(3)注意事项:  

A:一个类中没有定义过构造方法,会自动生成一个默认的构造方法;相反,若自定义过构造方法,默认的构造方法就没有了。

B:一个类中可以有多个构造方法,以不同参数列表区分,即重载的形式。            

9.创建对象在内存中的步骤:(例:Person person = new Person();)

(1)将person.class文件加载到内存

(2)执行到main方法时,在栈内存中开辟了main方法的空间,然后在main方法的栈区中分配了一个变量person

(3)在堆内存中开辟一块实体空间,分配了一个内存首地址。new

(4)在该实体空间中进行成员变量的空间分配,并进行默认初始化

(5)进行成员变量的显式初始化

(6)对对象实体进行构造代码块的初始化

(7)调用该对象实体对应的构造方法进行初始化

(8)将内存首地址赋值给person,person就引用了该实体(指向该对象)。

10.static,是一个修饰符,用于修饰成员(成员变量或成员方法)

(1)特点:

A:被类的所有对象共享

B:静态成员随类的加载而加载,优先于对象存在

C:静态成员可以被类名所调用

(2)注意事项:

A:静态方法只能访问静态成员,不可以访问非静态成员

B:静态方法中不能使用this、super关键字,因为可能没有对象。

C:main函数是静态的

(3)成员变量和静态变量的区别

A:属于对象,也称实例变量;属于类,也称类变量

B:存在于堆内存中;存在于方法区中

C:随对象的创建而存在,随对象被回收而消失;随类的加载而存在,随类的消失而消失

D:只能被对象调用;可以被对象调用(不推荐),也可以被类调用(推荐)

11.代码块:用{  }括起来的代码段称为代码块,根据位置和声明的不同,可以分为局部代码块、、构造代码块和静态代码块。

(1)局部代码块:声明在方法中,用于限定变量的生存周期,提高内存利用率

(2)构造代码块:声明在类中的成员位置,每次调用构造方法前,都会先执行构造代码块。

        作用:可以把多个构造方法的共同代码放在构造代码块中。

(3)静态代码块:声明在类中的成员位置,用static修饰。

        作用:可以对类进行初始化,随类的加载而执行,而且只执行一次,优先于main函数执行。

(4)面试题:静态代码块,构造代码块,构造方法的执行顺序?

         静态代码块   ——   构造代码块 —— 构造方法

       只执行一次             每次调用构造方法都执行  

12.JDK5.0新特性之可变个数的形参的方法

(1).格式:对于方法的形参: 数据类型 ... 形参名

(2).特点

A:可变个数的形参的方法和同名的方法构成重载

B:可变个数的形参在调用时,参数个数从0到无穷多个都可以。

C:使用可变个数的形参的方法与使用数组的形参的方法是一致的,如String[] args相当于String ... args。

D:若方法中存在可变个数的形参,那么一定要声明在形参列表的最后,如

    public void say(int i , String ... args){} 不能写成: public void say(String ... args , int i){},因为无法确定i的位置。

(3).代码案例

//下面三个方法构成重载
public int getSum(int i, int j){
return i+j;
} public int getSum(int i,int j, int k){
return i+j+k;
} public int getSum(int ... args){//可变个数的形参的方法定义后,上面两个方法都可以不写,它们的功能已经包含进来了,这就是可变个数形参的方法的好处。
int sum = ;
for (int i=;i<args.length;i++){
sum += args[i];
}
return sum;
}

Java语法基础学习DayFour的更多相关文章

  1. Java语法基础学习DayEighteen(常用类)

    一.String类 1.特点 String代表不可变的字符序列,底层用char[]存放. String是final的. 2.内存解析 3.常用方法 int length() char charAt(i ...

  2. Java语法基础学习DaySeven

    ---恢复内容开始--- 一.包装类——Wrapper 1.定义:针对八种基本数据类型定义相应的引用类型——包装类(封装类) boolean——Boolean          byte——Byte ...

  3. Java语法基础学习DaySix

    一.JavaBean——可重用组件 1.JavaBean是指符合以下标准的Java类: (1)类是公共的 (2)有一个无参的公共的构造器 (3)有属性,且有对应的get.set方法 2.好处 用户可以 ...

  4. Java语法基础学习DayThree

    一.流程控制语句补充 1.switch语句 格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体 ...

  5. Java语法基础学习DayTwentyOne(网络编程)

    一.IP地址和端口号 1.作用 通过IP地址,唯一的定位互联网上一台主机. 端口号标识正在计算机上运行的进程,不同进程有不同的端口号,被规定为一个16位的整数0~65535,其中0~1023被预先定义 ...

  6. Java语法基础学习DayTwenty(反射机制续)

    一.Java动态代理 1.代理设计模式的原理 使用一个代理将对象包装起来, 然后用该代理对象取代原始对象. 任何对原始对象的调用都要通过代理. 代理对象决定是否以及何时将方法调用转到原始对象上. 2. ...

  7. Java语法基础学习DayNineteen(反射机制)

    一.Refection定义 1.概述 Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性 ...

  8. Java语法基础学习DaySeventeen(多线程续)

    一.线程的特点 1.线程的分类 java中的线程分为两类:守护线程和用户线程.唯一的区别是判断JVM何时离开. 守护线程是用来服务用户线程的,通过在start()方法前调用Thread.setDaem ...

  9. Java语法基础学习DaySixteen(多线程)

    一.多线程的创建 1.作用 程序需要同时执行两个或多个任务时需要多线程. 程序需要实现需要等待的任务时,如用户输入.文件读写操作.网络操作.搜索等,需要多线程. 需要一些后台运行的程序时,需要多线程. ...

随机推荐

  1. linux之bash shell

    GNU bash ======================================================== 通常计算机硬件是由运算器.控制器.存储器.输入/输出设备等等这些物理 ...

  2. hdoj1043

    8数码问题有解:除0外逆序数%2相等.16数码有解:除0外,如果0的行数相差奇数个,逆序也差奇数个,vice versa.

  3. HDOJ 1023 Train Problem II

    考虑第1个火车出站的时刻,从1到n都有可能,如果它是第i个出栈,那么前面有规模为i-1的子问题,后面有规模为n-i的子问题.累加.

  4. p1468 Party Lamps

    就是模拟.同一个开关按2下相当于没按,那么,如果一共按0下,就是没按,按1下就是4个开关的1个,按2下可能相当于实际按了0下或按2下,按3下实际按了1下或3下,之后如果是奇数,相当于按1或3下,偶数相 ...

  5. hdu-2419 Boring Game

    http://acm.hdu.edu.cn/showproblem.php?pid=2419 给一个图,预分配点值.随后有三种操作,F u v查询与u联通部分大于等于v的最小的数,没有则返回0,U u ...

  6. Confluence 6 编辑一个空间的配色方案

    空间默认继承全局的配色方案.但是,如果你是空间管理员的话,你可以对默认继承的全局方案进行调整,使用自定义的配色方案. 为一个空间修改配色方案: 进入空间后,然后从边栏的底部选择 空间工具(Space ...

  7. python基础之变量以及if语句

    1.变量 1.1定义:变量是一种介质,是将一些值暂时存储在内存中,方便后续程序调用.可将其看作容器但其内部的东西是可变化的. 1.2 变量的命名规则: 1.变量的命名只能由数字,字母,下划线构成. 2 ...

  8. ZCRM_DAY_IN_WEEK

    FUNCTION zcrm_day_in_week. *"------------------------------------------------------------------ ...

  9. H5 页面在微信端的分享

    微信分享,咋一看好像很复杂,实则非常简单.只需要调用微信官方出的微信jssdk,加上些许配置,就可以实现h5页面在微信上的分享,官方文档地址为: https://mp.weixin.qq.com/wi ...

  10. iOS性能优化总结

    iOS性能优化总结.关于 iOS 性能优化梳理: 基本工具.业务优化.内存优化.卡顿优化.布局优化.电量优化. 安装包瘦身.启动优化.网络优化等. 关于iOS 性能优化梳理: 基本工具.业务优化.内存 ...