构造方法详解

构造器也叫做构造方法(constructor),用于对象的初始化。

class Person2 {

String name;

int age;

public Person2(String name,int age){

this.name = name;

this.age = age;

}

要点:

1、要通过new关键字调用

2、构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里面使用return返回某个值

3、如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已经定义则编译器不会自动添加

4、构造器的方法名必须和类名一致

5、可以通过方法的重载来实现不同的构造方法。

方法的重载: 相同名称,相同返回值的方法,当其参数类型、数量、顺序不一致时就会发生方法的重载。当我们调用方法时,可以根据有目的性地传入固定的参数来实现所需要的方法功能。

对象创建的过程和this的本质

创建一个对象分为如下四步:

1、分配对象空间,并将对象成员变量初始化为0或者空

2、执行属性值的显式初始化

3、执行构造方法

4、返回对象的地址给相关变量

this的本质就是“创建好的对象的地址”。由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表“当前对象”。

可以在构造器里面调用另外一个构造器

this不能用于static方法中

static关键字和final关键字

static关键字

1、修饰成员变量(静态成员变量)

在类中,用static声明的成员变量为静态成员变量,也称为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。

static修饰的成员变量和方法,从属于类。普通变量和方法从属于对象。

当我们在类中定义了一个静态成员变量之后,这个静态成员变量是从属于类的。也就是用此类创建的所有对象都共享一模一样的静态成员变量值,当我们对其进行修改的时候,所有对象的相关属性都会被修改。

2、修饰成员方法(静态成员方法)

static修饰成员方法可以使得我们使用形如:“类名.方法名”的操作方法,避免了必须先new出对象的资源损耗和繁琐的步骤。静态方法调用类里面的成员变量或者静态成员方法,因为静态方法是从属于类的,而普通的成员变量和成员方法从属于对象。调用时会出现不知道认哪个对象的变量、方法的问题。

3、静态块

当我们初始化static修饰的成员时,可以将它们统一放在一个以static开头,用花括号括起来的块状语句中。

4、静态导包

Import static…*

采用static导入包后,在不与当前类的方法名冲突的情况下,不需要采用“类名.方法名”的方法去调用静态方法了,可以直接采用“方法名”去调用静态方法,就好像该类自己的方法一样使用即可。

final关键字

final关键字可以用来修饰类、方法和变量。

1、修饰类

当用final修饰一个类时,表明这个类不崩被继承。

2、修饰方法

使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。

(类的private方法会隐式地被指定为final方法)

3、修饰变量

对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

JAVA基础复习与总结<二>构造方法_static关键字_final关键字的更多相关文章

  1. Java基础复习笔记系列 二

    1.Java中Static的相关用法总结?(静态方法:静态变量:静态代码块) public static void main(String args[])执行的关键,在于有static.有了stati ...

  2. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

  3. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  4. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  5. 《Java基础复习》-控制执行流程

    最近任务太多了,肝哭我了,boom 参考书目:Thinking in Java <Java基础复习>-控制执行流程 Java使用了C的所有流程控制语句 涉及关键字:if-else.whil ...

  6. 《Java基础复习》—常识与入门

    突然发现自己Java基础的底子不到位,复习! 所记知识会发布在CSDN与博客网站jirath.cn <Java基础复习>-常识与入门 一.Java语言的知识体系图 分为三部分 编程语言核心 ...

  7. Java基础复习之数组

    Java基础复习之:数组 简介 数组(Array):多个相同数据类型按照一定顺序排列的集合,并使用一个名字命名,通过编号的方式对这些数据进行统一管理 一维数组 一维数组的声明与初始化 int[] id ...

  8. java基础复习记录

    java基础复习记录(数组.对象.异常) 数组 数组的定义 数组是相同类型数据的有序集合.如:篮球队就是一个数组,队员球服上有号码,相当于索引.通过某一个的某一个号码来确认是某一个队员.数组中索引从0 ...

  9. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

随机推荐

  1. iView页面Modal中内嵌Tabs,重新显示Modal时默认选中Tabs的第一项

    文档中说激活面板的name用value,页面第一次加载的时候可以,放在modal里就不好使了,每次打开的时候总显示上一次离开时的界面. 真正能用的是 this.$refs.tabs.activeKey ...

  2. mysql5.7 修改root密码无法登陆原因

    升级的mysql5.7修改完root账户密码后仍然无法登陆,查阅资料可能和user表的plugin 字段为空有关. 1.首先将my.ini中加入在[mysqld]节点上加skip-grant-tabl ...

  3. Stacking:Catboost、Xgboost、LightGBM、Adaboost、RF etc

    python风控评分卡建模和风控常识(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005214003&am ...

  4. Oracle Database 10g安装

    前言 oracle_10g_32位的安装包 链接:https://pan.baidu.com/s/1v1ZWYSjWLzKo3GnDuV5nrg 密码:88yd PLSQL Developer 32位 ...

  5. JAVA实现C/S结构小程序

    程序功能: 客户端向服务器发送一个本地磁盘中的文件, 服务器程序接受后保存在其他位置. 客户端实现步骤: 创建一个客户端对象Socket,构造方法中绑定服务器的IP地址 和 端口号 使用Socket对 ...

  6. MyBatis集成到Spring时配置MapperScannerConfigurer出错

    问题描述 在web项目中同时集成了spring mvc和mybatis. 将jdbc配置参数独立在外部配置文件中,然后通过<context:property-placeholder>引入. ...

  7. Beamer 目录分栏

    导言区加入 \usepackage{multicol} 然后 \section*{目录} \frame{\begin{multicols}{} \tableofcontents[hideallsubs ...

  8. [物理学与PDEs]第5章习题6 各向同性材料时强椭圆性条件的等价条件

    在线性弹性时, 证明各向同性材料, 强椭圆性条件 (5. 6) 等价于 Lam\'e 常数满足 $$\bex \mu>0,\quad \lm+2\mu>0.  \eex$$ 证明: (1) ...

  9. iTOP-4418开发板Qt系统下运行摄像头测试程序

    编译环境:Ubuntu 12.04 交叉编译工具链:gcc 4.4.1 一.添加编译器的环境变量 打开~/.bashrc文件,修改环境变量,如下图:   修改完后,更新环境变量,使用命令”source ...

  10. 可变有序列表list

    list是一种有序的集合,可以随时添加和删除其中的元素. 声明方法 list名=[元素1,元素2,元素3,--] >>> name=['Tom','David','Tony'] &g ...