373讲!!!类变量引出、类方法、类成员、main语法、代码块、代码块细节(重点、难点)
内容纲要

373讲!!!类变量引出、类方法、类成员、main语法、代码块、代码块细节(重点、难点)

file

file

file

file

  • 静态变量最大的特点就是会被所在类的所有对象实例共享

  • 类变量(静态变量)可以通过类名来访问


成员变量:作用范围是整个类,相当于C中的全局变量,定义在方法体和语句块之外,一般定义在类的声明之下;成员变量包括实例变量和静态变量(类变量);
实例变量:独立于与方法之外的变量,无static修饰,声明在一个类中,但在方法、构造方法和语句块之外,数值型变量默认值为0,布尔型默认值为false,引用类型默认值为null;
静态变量(类变量):独立于方法之外的变量,用static修饰,默认值与实例变量相似,一个类中只有一份,属于对象共有,存储在静态存储区,经常被声明为常量,调用一般是类名.静态变量名,也可以用对象名.静态变量名调用;
局部变量:类的方法中的变量,访问修饰符不能用于局部变量,声明在方法、构造方法或语句块中,在栈上分配,无默认值,必须经初始化;
[原文地址][https://blog.csdn.net/github_39655029/article/details/80648679]


file

file

  • JDK7以及之前 类变量(静态变量)认为放在方法区里面。 JDK8及之后认为其放在堆中,堆中有个class对象指向方法区。

file

file

file

对象名.类变量名 (或者) 类名.类变量名 其访问权限和普通属性的访问权限一样。

类变量的细节

file

file


静态方法

file

file

  • 方法设计成静态方法,提高开发效率(当方法中不涉及到任何对象相关的成员时)。
  • 开发自己的工具类时,可以将方法做成静态的,方便使用。例如下面。

file

file

  • 类方法和普通方法都是随着类的加载而加载,将结构信息储存在方法区。

  • 类方法无法使用this (普通方法中隐含这this的参数)

  • 静态方法只能访问静态成员。

file

  • 普通成员方法,既可以访问 非静态成员,也可以访问静态成员。

课堂练习

file

file

file

  • 在static方法中,不可以使用this 关键字,若要传值可以 Person.total = total;

小结:(1) 静态方法,只能访问静态成员 (2) 非静态方法,可以访问所有的成员 (3) 在编写代码时,仍然要遵守访问权限规则

main方法语法

file

  • main方法接收String类型的数组参数,该数组中保存执行java命令时传递给所运行的类的参数。

file

file

file

  • main()方法中,我们可以直接调用main方法所在的类的静态方法或静态属性
  • 但是,不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员。

在IDEA 中可以在run/Debug Configurations 中的Program arguments中传入main(String[] args)方法中的参数

file

代码块

file

  • 修饰符可选。要写的话,也只能写static

  • 代码块分为2 类,使用static 修饰的叫静态代码块,没有static 修饰的,叫普通代码块

  • 逻辑语句可以为任何逻辑语句(输入、输出、方法调用、循环、判断等)

  • ; 号可以写上,也可以省略。

  • 代码块的调用顺序优先于构造器

代码块的好处

  • 减少构造方法的冗余,多个构造器使都有相同的语句使用代码块让代码更简洁

file

file

代码块的细节、注意事项。

file

注意:

  1. static 代码块也叫静态代码块,作用是对类进行初始化,而且它随着类的加载而执行,且只会执行一次(因为类只加载一次)。如果是普通代码块,每创建一个对象,就执行。

file

  1. 类什么时候会被加载

    1. 创建对象实例时(new)
    2. 创建子类对象实例,父类也会被加载
    3. 使用类的静态成员(静态属性,静态方法)
  2. 普通的代码块,在创建对象实例时,会被隐式的调用。被创建一次,就会调用一次。

​ 如果只是使用类的静态成员时,普通代码块并不会执行。(没创建对象,构造器不执行)

!!!代码块细节(重点、难点)

file

  • 调用静态代码块静态属性的初始化(注意:静态代码块和属性的初始化优先级一样,都是static 凭什么让着你。),如果有多个静态代码块和多个静态变量初始化,则按他们的定义顺序调用

  • 调用普通代码块普通属性的初始化(注意:普通代码块和普通属性初始化调用的优先级一样,如果有多个普通代码块和多个普通属性初始化,则按定义顺序调用)。。。。这里说的属性,别记成方法了。。

file

file

  • 在构造器中隐藏了 (1)super( ); (2)本类的普通代码块(普通属性的初始化(优先级一样)) 故先调用父类构造器然后再调用本类的普通代码块,最后再执行本类的语句。

  • 细节6 (较难)

file

  • 静态代码块只能调用静态成员(静态属性和静态方法),普通代码块可以调用任意成员。

file

代码块课堂练习

file

file

运行结果如下

file

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇