3.2 面向对象编程高级 main方法深入理解 类的五大成员之代码块-跟着韩老师学JavaSE
作者:互联网
大佬给推荐的韩顺平老师的课程 2021年刚刚录的船新版本!
【零基础 快速学Java】韩顺平 零基础30天学会Java
我整理的学习路线与各章节学习笔记戳这里
硬把从另一个讲师那里看了300多集的我拽过来 几十节课一下子爱上这个节奏了!安利!!
具有其他语言基础的盆友只需要把前几章的章节总结简单看一下 然后再去着重看需要学习的章节就可以了!
知识点分的非常清晰! 每章还有总结 这…真的是我理想中的学习资料呐!
学习笔记整理过后放到这里
- 一方面是让自己再二次记忆一下
- 一方面是希望可以帮到有这方面知识需要的朋友 给他们一个新的切入点来重新了解这一个知识
本专题包括以下几个主要知识点~
本次笔记主要记录 main方法的深入理解 、 代码块的内容
文章目录
- 2.理解main方法语法
- 3.代码块
2.理解main方法语法
【1】main语法说明
我们经常使用 “psvm”
来快捷打出main方法
那么这个main方法具体是个啥? 来深入理解下——
main方法接受的是String类型的数组参数 (数组中保存的是 执行Java命令时传递给所运行的类的参数!)
【2】main特别说明
1.在 main()方法中,我们可以直接调用 main 方法所在类的静态成员
2.但是,不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员
依旧是举个例子
public class Main01 {
//静态的变量/属性
private static String name = "韩顺平教育";
//非静态的变量/属性
private int n1 = 10000;
//静态方法
public static void hi() {
System.out.println("Main01 的 hi 方法");
}
//非静态方法
public void cry() {
System.out.println("Main01 的 cry 方法");
}
public static void main(String[] args) {
//可以直接使用 name
//1. 静态方法 main 可以访问本类的静态成员
System.out.println("name=" + name);
hi();
//2. 静态方法 main 不可以访问本类的非静态成员
//System.out.println("n1=" + n1);//错误
//cry();
//3. 静态方法 main 要访问本类的非静态成员,需要先创建对象 , 再调用即可
Main01 main01 = new Main01();
System.out.println(main01.n1);//ok
main01.cry();
}
}
【3】main动态传值
在IDEA中传递参数的方法——
很有意思的一个小技巧 点这里看一下
3.代码块
【1】代码块快速入门
代码块基本介绍
又称为初始化块 属于类中的成员(即 代码块是类的一部分)
代码块类似于方法 将逻辑语句封装在方法体中 通过{}包围起来
但是代码块和方法不同 —— 没有方法名、没有返回、没有参数 只有方法体
同时 代码块不用通过对象或类显示调用 而是加载类时/创建对象时隐式调用
代码块基本语法
那么说了那么多特点 代码块的基本语法是什么呢?
{
...//其实就是这么一段代码
};
代码块的好处和案例演示
这里来举个例子看看代码块能干个啥~
上面是一端冗余的代码
那么我们就可以使用代码块——
测试一下——
public static void main(String[] args) {
//这里创建对象时 就会先调用代码块中的内容
Movie movie = new Movie("你好,李焕英");
System.out.println("===============");
Movie movie2 = new Movie("唐探 3", 100, "陈思诚");
}
完整代码如下——
public class CodeBlock01 {
public static void main(String[] args) {
//这里创建对象时 就会先调用代码块中的内容
Movie movie = new Movie("你好,李焕英");
System.out.println("===============");
Movie movie2 = new Movie("唐探 3", 100, "陈思诚");
}
}
class Movie {
private String name;
private double price;
private String director;
//3 个构造器-》重载
//老韩解读
//(1) 下面的三个构造器都有相同的语句
//(2) 这样代码看起来比较冗余
//(3) 这时我们可以把相同的语句,放入到一个代码块中,即可
//(4) 这样当我们不管调用哪个构造器,创建对象,都会先调用代码块的内容
//(5) 代码块调用的顺序优先于构造器..
{
//代码块中的内容
System.out.println("电影屏幕打开...");
System.out.println("广告开始...");
System.out.println("电影正是开始...");
};
public Movie(String name) {
System.out.println("Movie(String name) 被调用...");
this.name = name;
}
public Movie(String name, double price) {
this.name = name;
this.price = price;
}
public Movie(String name, double price, String director) {
System.out.println("Movie(String name, double price, String director) 被调用...");
this.name = name;
this.price = price;
this.director = director;
}
}
【2】代码块使用细节
https://www.bilibili.com/video/BV1fh411y7R8?p=387&spm_id_from=pageDriver
1.static代码块作用:对类进行初始化 随着类的加载而执行 且只会执行一次
static代码块也叫静态代码块 随着类的加载而执行 且只会执行一次
[static]{
};
普通代码块 每创建一个对象就执行一次
{
};
2.类什么时候被加载(很重要!背下来!)
-
创建对象实例时
A a = new A();
-
创建子类对象实例 父类也会被加载!
public class B extends A{}
B b = new B();
——A类也会被加载 -
使用类的静态成员时(静态属性,静态方法)
案例演示
A类 extends B类的静态块
3.普通的代码块在创建对象实例时会被隐式地调用 创建一次就调用一次 而使用类的静态成员时 普通代码块不会执行
4.创建一个对象时 在一个类中的调用顺序(重难点!)
first-调用静态代码块和静态属性初始化
second-调用普通代码块和普通属性的初始化
last-调用构造方法
5.构造器的最前面隐含了super()和调用普通代码块
6.创建子类对象时 子类对象的静态代码块、静态属性初始化、普通代码块、普通属性初始化、构造方法的调用顺序(面试题)
7.静态代码块只能直接调用静态成员(静态属性和静态方法)普通代码块可以调用任意成员
这里跟静态方法的特点是一样滴~
另外 静态代码块的特点——学习起来比较麻烦 工作就比较轻松!
标签:调用,韩老师,静态,代码,String,3.2,面向对象编程,main,name 来源: https://blog.csdn.net/qq_45704942/article/details/119358748