黑马程序员 【】java学习之路——函数(学习日记)

时间:2022-12-08 21:48:27

                                          -------android培训java培训、期待与您交流! ----------

函数就是定义在类中的具有特定功能的一段独立的程序代码块,也成为方法;

函数书写格式:

访问修饰符 返回值类型 函数名称(参数类型 参数列表)

{

  函数体;

 return 返回值;

}


函数分为:普通函数(成员方法)、构造函数(构造方法)

主函数是一个特殊的函数。作为程序的入口,可以被JVM调用。

普通函数(成员方法):用于实现一些功能的代码封装;

构造函数(构造方法):用于构造对象。

注意:当一个类中没有定义构造函数时。则系统默认给该类加入一个空参数的构造参数,但是你自定义了则系统就不再增加了。

特点:1函数名与类名相同;

            2不用定义返回值类型;

            3不可以写return

作用:给对象进行初始化。

构造函数和一般函数的区别:

1:构造函数是在对象一建立就运行,给队形初始化。

2:而一般方法是对象调用才执行,给对象添加对象具备的功能。

3:一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次。

什么时候定义构造函数?

当分析事务时,该事物存在具备一些特性或者行为,那么这些内容定义在构造函数中


构造代码块:给对象进行初始化  对象一建立就运行,而且优先于构造函数运行



构造函数和构造代码块的区别:

构造代码块是给所有对象进行统一初始化;而构造函数是对对应对象进行初始化。


构造函数间调用只能用this调用 但是之间不要“.”,并且一般函数是不能调用构造函数的

This只能放在构造函数的第一行因为初始化动作要先执行


静态:Static

用法:是一个修饰符,用于修饰成员(成员变量成员方法),不能修饰局部变量。

被static 修饰的成员变量就不在堆内存了。

当成员被静态修饰后,就多了一种调用方式,可以直接被类调用,调用方式为 类名.成员变量(静态)

内存分为:栈区、堆区、方法区(共享区、数据区)

静态变量存放在 方法区

 

Static特点:

1:随着类的加载而加载。也就是说:静态会随着类的消失而消失。说明它的生命周期最长。

2:优先于对象存在

       静态是先存在的,对象是后存在的

3:被所有对象所共有

4:可以直接被类名所调用


实例变量和类变量区别

1:存在位置

      类变量随着类的加载而存在于方法区中

      实例变量随着对象的建立而存在于堆内存中

2生命周期

     类变量生命周期最长,随着类的消失而消失

     实例变量生命周期随着对象的消失而消失


静态使用注意事项:

    1:静态方法只能访问静态成员;非静态方法即可以访问静态成员也可以访问非静态;

   2:静态方法中不可以定义this super 关键字  因为静态优先于对象存在。所以静态方法中不可以出现this

   3:主函数是静态的。


静态有利弊分析:

利:对对象的共享数据 进行单独空间的存储,节省空间。没有必要每一个对象中都存储一份。可以直接被类名调用。

弊端:生命周期过长。访问出现局限性(静态虽好,只能访问静态)

String name 成员变量或实例变量

Static string name 静态成员变量或类变量

 

主函数介绍:

主函数的定义:

格式: public static void main(String []args){}

Public :代表着该函数访问权限是最大的。

Static:代表主函数随着类的加载就已经存在了。

Void:主函数没有返回值。

Main:不是关键字,但是是一个特殊的单词,可以被JVM识别。

(String []args):函数的参数 参数类型是一个数组,该数组中的元素是字符串。字符串类型的数组。

主函数是固定格式的。

Args = arguments :args 是变量 是主函数定义中唯一一个可以改变的。

Jvm 在调用主函数时,传入的是new String[0];

Java Mian hah heihie  hah heihei 传入的参数

 

什么时候使用静态?

答:要从两方面下手:因为静态修饰的内容有成员变量和函数。

什么时候定义静态变量(类变量)?

答:当对象中出现共享数据时,该数据被静态所修饰。

     对象中的特有数据要定义成非静态存在于堆内存中。

什么时候定义静态函数?

答:当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。

 默认构造函数的权限 是随着类的变化而变化。

 

用javadoc 生成帮助文档  文档是以网页形式存在的

Javadoc –d myhelp –author –versionArrayTool.java

-d 指定路径 

Myhelp 存储文件夹  若是文件夹 没有 会自动创建

若是需要指定 作者和版本的话 需要加上 –author –version


静态代码块

Class StaticCode

{

     Static

    {

         System.out.println();

     }

}

特点:随着类的加载而执行,只执行一次,并优先于主函数。用于给类进行初始化的。

 

Person p = new Person(“zhangsan ”,20);

上边这句话都做了什么事情?

1,         因为new用到了Person.class所以会先找到Person.class文件并加载到内存中。

2,         执行该类中的static代码块,若果有的话,给Person.class类进行初始化。

3,         在堆内存中开辟空间,分配内存地址。

4,         在对内存中建立对象的特有属性,并进行默认初始化。

5,         对属性进行显示初始化

6,         对对象进行构造代码块初始化

7,         对对象进行对应的构造函数初始化

8,         将内存地址付给栈内存中的p变量