构造方法

一:概念

  给对象的数据(属性)进行初始化

二:特点

  a.方法名与类同名(字母大小写也要一样)

  b.没有返回值类型

  c.没有具体的返回值 return

三:构造方法重载

  方法名相同,与返回值类型无关(因为构造方法没有返回值),只看参数列表

  注:如果没有写出构造方法,系统自动提供一个无参的构造方法,如果我们给出了构造方法,

  系统不再提供构造方法。

 class Student{
//下面是构造方法
public Student{
//无参构造方法
}
public Person(String name,int age){
//有参构造方法
}
}

成员变量

一:赋值

  A.通过setxxx()方法

  B.通过构造方法

例子:学生类

class Student{
private String name; private int age;
//下面是构造方法
public Student(String name,int age){
//构造方法赋值
//this.name = name;
//this.age = age;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
}

创建对象的步骤

  Student s = new Student();

  1,Student.class加载进内存

  2,声明一个Student类型引用s

  3,在堆内存创建对象,

  4,给对象中属性默认初始化值

  5,属性进行显示初始化

  6,构造方法进栈,对对象中的属性赋值,构造方法弹栈

  7,将对象的地址值赋值给s

static关键字

一:概念:

  static用于修饰类的成员,如成员变量,成员方法,代码块,被static

修饰的成员具备一些特殊性。

二:特殊性

  a:随着类的加载而加载

  b:优先于对象存在

  c:被类的所有对象共享

  举例:咱们班级的学生应该共用同一个班级编号。其实这个特点也

  是在告诉我们什么时候使用静态?

  如果某个成员变量是被所有对象共享的,那么它就应该定义为静态

  的。

  举例:

    饮水机(用静态修饰)

    水杯(不能用静态修饰)

  共性用静态,特性用非静态

  d:可以通过类名调用

    其实它本身也可以通过对象名调用。

  推荐使用类名调用。

  静态修饰的内容一般我们称其为:与类相关的,类成员

三:注意事项

  a:在静态方法中是没有this关键字的

  如何理解呢?

    静态是随着类的加载而加载,this是随着对象的创建而存在。

    静态比对象先存在。

  b:静态方法只能访问静态的成员变量和静态的成员方法

  静态方法:

    成员变量:只能访问静态变量

    成员方法:只能访问静态成员方法

  非静态方法:

    成员变量:可以是静态的,也可以是非静态的

    成员方法:可是是静态的成员方法,也可以是非静态的成员方法。

  简单记:

    静态只能访问静态。

四:列子

class Student{
static String name;
//静态变量
static{
System.out.println("这是静态代码块");
}
public static void sayHello()
{
System.out.println("这是静态方法");
}
}

五:静态变量和成员变量的区别

  A:所属不同

    * 静态变量属于类,所以也称为为类变量

    * 成员变量属于对象,所以也称为实例变量(对象变量)

  B:内存中位置不同

    * 静态变量存储于方法区的静态区

    * 成员变量存储于堆内存

  C:内存出现时间不同

    * 静态变量随着类的加载而加载,随着类的消失而消失

    * 成员变量随着对象的创建而存在,随着对象的消失而消失

  D:调用不同

    * 静态变量可以通过类名调用,也可以通过对象调用

    * 成员变量只能通过对 象名调用

main方法的格式详细解释

  A:格式

    * public static void main(String[] args) {}

  B:针对格式的解释

    * public 被jvm调用,访问权限足够大。

    * static 被jvm调用,不用创建对象,直接类名访问

    * void被jvm调用,不需要给jvm返回值

    * main 一个通用的名称,虽然不是关键字,但是被jvm识别

    * String[] args 以前用于接收键盘录入的

使用JDK提供的帮助文档

  A:找到文档,打开文档

  B:点击显示,找到索引,出现输入框

  C:你应该知道你找谁?举例:Scanner

  D:看这个类的结构(需不需要导包)

    * 成员变量 字段

    * 构造方法 构造方法

    * 成员方法 方法

Math类

一:概念

  类包含用于执行基本数学运算的方法

二:获取随机数的方法

  public static double random():返回带正号的 double 值,该值大于等于 0.0

  且小于 1.0。

童鞋们可以自行验证一下。

代码块

  代码块概述:

  * 在Java中,使用{}括起来的代码被称为代码块。

  代码块分类:

  * 根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码

    块,同步代码块(多线程讲解)。

常见代码块:

  * a:局部代码块

    在方法中出现;限定变量生命周期,及早释放,提高内存利用率

  * b:构造代码块 (初始化块)

    在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调

    用构造都执行,并且在构造方法前执行

  * c:静态代码块

    在类中方法外出现,并加上static 修饰;用于给类进行初始化,在加载的

    时候就执行,并且只执行一次。

一般用于加载驱动

class Text {
static {
System.out.println("静态代码块");
}
{
System.out.println("构造代码块");
}
public Text() {
System.out.println("构造方法");
}
}
public class Demo {
static {
  System.out.println("Demo 静态代码块");
}
public static void main(String[] args) {
  System.out.println("我是 main 方法");
  Text s1 = new Text();
   Text s2 = new Text();
}
}

运行结果:

可以看出,执行顺序 静态代码块>构造代码块>构造函数

面向对象之继承

  继承(extends)概念:

    让类与类之间产生关系,子父类关系

  继承的好处:

    * a:提高了代码的复用性

    * b:提高了代码的维护性

    * c:让类与类之间产生了关系,是多态的前提

  继承的弊端:

    * 类的耦合性增强了。

    * 开发的原则:高内聚,低耦合。

    * 耦合:类与类的关系

    * 内聚:就是自己完成某件事情的能力

  继承的特点:

    * a:Java只支持单继承,不支持多继承。(一个儿子只能有一个爹)

    * 有些语言是支持多继承,格式:extends 类1,类2,...

    * b:Java支持多层继承(继承体系) * 如果想用这个体系的所有功能用

   最底层的类创建对象

    * 如果想看这个体系的共性功能,看最顶层的类

  继承的注意事项:

    * a:子类只能继承父类所有非私有的成员(成员方法和成员变量)

    *b:子类不能继承父类的构造方法,但是可以通过super(马上讲)关键字去访

  问父类构造方法。

    * c:不要为了部分功能而去继承

  什么时候使用继承:

  * 继承其实体现的是一种关系:"isa"。如果有两个类A,B。

  只有他们符合 A是B的一种,或者B是A的一种,就可以考虑使用继承

this和super的区别和应用:

  this和super的用法很相似。

  this代表本类对象的引用。

  super代表父类的内存空间的标识。

  this和super的使用区别:

    * a:调用成员变量

    *this.成员变量 调用本类的成员变量,也可以调用父类的成员变量

    *super.成员变量 调用父类的成员变量

     b:调用构造方法

    *this(...) 调用本类的构造方法

    *super(...) 调用父类的构造方法

    * c:调用成员方法

    *this.成员方法 调用本类的成员方法,也可以调用父类的方法

    *super.成员方法 调用父类的成员方法

final关键字

  final修饰特点

    1,final修饰的类是一个最终类,不能在派生子类。

    2,final修饰的方法是最终方法,不可以给重写。

    3,final 修饰的变量是一个常量,只能被赋值一次。 被 final 修饰的常量名

    所有的字母都是大写的。如果由多个单词组成单词间通过 _ 连接。

    4,可以通过构造代码块或者构造函数赋值一次。

      * 基本类型,是值不能被改变

      * 引用类型,是地址值不能被改变,对象中的属性可以改变

Java编程基础篇第六章的更多相关文章

  1. Java编程基础篇第五章

    数组概述 概念:数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器.数组既可以存储基本数据类型,也可以存储引用数据类型.应用场景:为了存储同种数据类型的多个值 数组定义格式 格式1:元素类型 ...

  2. Java编程基础篇第四章

    循环结构 循环结构的分类 for循环,while循环,do...while()循环 for循环 注意事项: a:判断条件语句无论简单还是复杂结果是boolean类型 b:循环体语句如果是一条语句,大括 ...

  3. Java编程基础篇第三章

    逻辑运算符 与(&)(&&),或(||)(|),非(!) &和&&的区别 &:无论&的左边真假,右边都进行运算 &&:当 ...

  4. Java语言程序设计(基础篇) 第六章 方法

    第六章 方法 6.2 定义方法 1.方法的定义由方法名称.参数.返回值类型以及方法体组成. 2.定义在方法头中的变量称为形式参数(formal parameter)或者简称为形参(parameter) ...

  5. Java编程基础篇第一章

    计算机语言 人与计算机交流的方式. 计算机语言有很多种如:C语言,c++,Java等 人机交互 软件的出现实现了人与计算机之间的更好的交流(交互) 交互方式 图形化界面:便于交互,容易操作,简单直观, ...

  6. Java编程基础篇第二章

    关键字 概述:被Java语言赋予特定含义的单词. 特点:组成关键字的字母全部为小写字母. 标识符 概述:给类,接口,包,方法,常量起名字时的字符序列 组成规则:英文大小写字母,数字,$和— 命名规则. ...

  7. java编程基础篇-------> 从键盘输入一位整数,代表月份,编程判断指定月份属于一年中的哪个季度。如果是 12 月、1 月、2 月,就属于冬季。

    从键盘输入一位整数,代表月份,编程判断指定月份属于一年中的哪个季度.如果是 12月.1 月.2 月,就属于冬季:如果是 3 月.4 月.5 月,就属于春季:如果是 6 月.7 月.8 月,就属于夏季: ...

  8. java编程基础篇---------> 编写一个程序,从键盘输入三个整数,求三个整数中的最小值。

    编写一个程序,从键盘输入三个整数,求三个整数中的最小值. 关键:声明变量temp   与各数值比较. package Exam01; import java.util.Scanner; public ...

  9. 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制

    你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...

随机推荐

  1. ThunderBird对只有回复地址的邮件过滤

    回复地址,其实就是reply-to 增加一个自定义的字段:reply-to即可

  2. Centos PHP+Apache执行exec()等Linux脚本权限设置的详细步骤

    1. 查看一下你的Apache的执行用户是谁: lsof -i:80         运行之后的结果为: 从图中我们可以清楚的看到,httpd(也就是Apache)的执行用户为:exec_shell( ...

  3. Docker入门 - 003 Docker 实例

    Docker Hello World Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序. 输出Hello world runoob@runoob: ...

  4. [elk]bin/elasticsearch-sql-cli使用

    在探sql groupby语句 这个长久不用竟然忘记 part name age dep1 ara 22 dep1 arb 22 dep1 arc 22 dep2 ema 10 dep2 emc 11 ...

  5. 怎么让Windows2012和Windows2008多用户同时远程

    具体方法请参照百度经验:http://jingyan.baidu.com/article/cd4c2979f19765756e6e60ec.html.经过实践证明,是没有问题的.

  6. SecureCRT自动上传文件python脚本

    本人在ubuntu下使用SecureCRT,上传文件习惯用rz命令.每次上传都弹对话框选择文件按确定后才上传,感觉很费力.最后自己摸索整理出一个脚本. 使用方法是,在[Script]菜单点[Run.. ...

  7. Win2003打开网页时总是提示添加网址到信任站点的设置方法

    在WIN2003系统中,我们打开网页,或打开网站,或浏览网页时,老是跳出一个窗口提示“添加网址到信任站点”,“网页老是提示添加信任”或“2003每打开一次网页都要加入受信任站点”或“win2003提示 ...

  8. Java线程生命周期

    当你需要使用Java线程在多线程环境下进行编程时,理解Java的线程周期与线程的状态是非常重要的.通过实现Runnale接口或者继承Thread类,我们可以创建线程,为了启动一个线程,我们需要创建一个 ...

  9. tensorflow简单记录summary方法

    虽然tf官方希望用户把 train , val 程序分开写,但实际开发中,明显写在一起比较简单舒服,但在保存数据到 summary 时, val 部分和 train 部分不太一样,会有一些问题,下面讨 ...

  10. 恒生UFX接口引用计数心得

    本文介绍在基于恒生T2SDK基础上开发对接UFX柜台时,有关引用计数的一些心得体会. 下面以配置接口和连接接口为例子来介绍,下面是文档介绍: 创建配置接口说明: 3.1.2 创建配置接口(NewCon ...