构造方法、static关键字以及静态的main方法

  1. 构造方法
    概述:
    给对象的数据进行初始化。
    构造方法格式:
    方法名和类名相同
    没有返回值,连void都没有
    没有具体的返回值
    构造方法的注意事项:
    如果不提供构造方法,系统会默认给出构造方法
    如果自己提供了构造方法,系统将不再提供
    构造方法也可以重载

例如:

注意:
1、如果我们没有给出构造方法,JVM会自动给我们提供一个无参构造方法
2、如果我们给出了构造方法,JVM就不再提供默认的无参构造方法。
这时候如果我们还想使用无参构造方法,就必须要自己给出来,JVM一旦发现我们自己给出了构造方法(不管是有参还是无参,只要我们自己定义了),就永远不会给出默认的构造方法。
3、构造方法可以发生重载(方法名一致,参数列表不一样)。
构造方法的作用:
可以给成员变量赋初始化值。
给成员变量赋值的两种方式:
1、使用setXxx()的形式给私有的成员变量赋值
2、使用带参数的构造方法给私有成员变量赋值,配合this指针使用
无参有参构造方法举例:

类的组成:
成员变量
构造方法
成员方法
根据返回值:
void,无返回值类型
非void的有参构造类型
形式参数:
空参的构造方法
有参的构造方法

当我们在new对象的时候,其实JVM给出了一系列运行,如下:

 

首先是
将Person.class文件加载到方法区
再在栈中给person开辟一个栈内存空间
再在堆中给person开辟一个堆内存空间
紧接着JVM给成员变量赋予初始值,一个是null,一个是0
再给成员变量进行初始化
再通过构造方法对成员变量进行初始化
数据初始化完毕,将内存中的地址给栈引用

3.static关键字
可以修饰成员变量和成员方法
static关键字的特点:
随着类的加载而加载
优先于对象存在
被类的所有对象共享(这也是判断是否使用静态关键字的条件)
可以通过类名调用
static关键字注意事项:
在静态方法中是没有this关键字的
静态方法只能访问静态的成员变量和静态的成员方法
一般情况下,只要看到一个类中有静态修饰的成员变量或者是成员方法,我们一律采用 类名.静态成员 这种方法使用
推荐使用类名调用
静态修饰的内容我们一般称为:类成员、与类相关的

static关键字使用的注意事项
在静态方法中是没有this关键字的
静态方法:
访问内容:
成员变量:只能访问静态的成员变量
成员方法:只能访问静态的成员方法
非静态方法:
访问内容:
成员变量:既可以访问静态的成员变量,也可以访问非静态的成员变量
成员方法:既可以访问静态的成员方法,也可以访问非静态的成员方法
也就是:静态的只能访问静态的。

举例:静态的只能访问静态的 

此时的内存静态图如下所示:

static随着类的加载而加载
static内存图。
用下面这些代码来解释在有static静态关键字的时候,内存是如果工作的。
将内存分为 栈、堆、方法区、静态区
首先方法里面有 class文件区、Human的方法区、静态区
1、首先运行主函数main,在栈中开辟main(String[] args)空间
2、紧接着到了函数Human h1 = new Human(“朱一龙”,41,“中国”);
3、在堆中new了一个空间出来,地址是0x0001,给name和age赋
初始值,Human中又包括了静态引用和方法引用。
h1指向0x0001,之后将name赋值为“朱一龙”,将
age赋值为41,紧接着到了静态引用,将country赋值为中国
再到了方法引用,然后到了方法引用,里面包括了构造方法和
show方法,之后展示数据

之后就在不断的重复这一过程。

main方法的格式讲解
main方法的格式讲解:
public static void main(String[] args) {…}

public: 公共的,访问权限是最大的。JVM默认的就是它。
        由于main方法是被JVM调用的,所以他的权限要是最大的。
static:静态的,不需要创建对象,通过类名就可以调用,方便我们JVM虚拟机调用
void:无返回值的意思,一般情况下,方法写返回是为了将结果返回给调用者,
     而main方法是被JVM虚拟机调用的,写返回内容没有意义。
main:是一个方法名,也是java程序的入口方法。大部分的语言入口的名字都是main
        小部分的程序入口方法不是main,例如C语言,底层调用的是_start

感谢观看,制作不易,请点赞加关注,谢谢。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中的static关键字可以用于修饰类、字段、方法、属性、构造函数等。它的作用是将其修饰的成员变为静态成员,即该成员不再与类的实例对象绑定,而是与类本身绑定。这意味着,无论创建多少个类的实例对象,静态成员只有一份,且可以通过类名直接访问。 在引用中,Student类被定义为静态类,其中的字段和方法也被定义为静态的。这意味着我们可以直接通过类名Student来访问其中的静态方法Print(),而不需要创建Student类的实例对象。 在引用中,Person类中的字段和方法被定义为静态的,但是Person类本身并没有被定义为静态类。这意味着我们需要先创建Person类的实例对象,然后通过该实例对象来访问其中的静态方法Print()。 下面是一个示例代码,演示了如何使用static关键字定义静态成员: ```csharp using System; class MyClass { public static int myStaticVar = 42; // 静态字段 public int myInstanceVar = 0; // 实例字段 public static void myStaticMethod() // 静态方法 { Console.WriteLine("This is a static method."); } public void myInstanceMethod() // 实例方法 { Console.WriteLine("This is an instance method."); } } class Program { static void Main(string[] args) { Console.WriteLine(MyClass.myStaticVar); // 直接访问静态字段 MyClass.myStaticMethod(); // 直接调用静态方法 MyClass obj1 = new MyClass(); MyClass obj2 = new MyClass(); obj1.myInstanceVar = 1; obj2.myInstanceVar = 2; Console.WriteLine(obj1.myInstanceVar); // 访问实例字段 Console.WriteLine(obj2.myInstanceVar); obj1.myInstanceMethod(); // 调用实例方法 obj2.myInstanceMethod(); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值