大佬给推荐的韩顺平老师的课程 2021年刚刚录的船新版本!
【零基础 快速学Java】韩顺平 零基础30天学会Java
我整理的学习路线与各章节学习笔记戳这里
硬把从另一个讲师那里看了300多集的我拽过来 几十节课一下子爱上这个节奏了!安利!!
具有其他语言基础的盆友只需要把前几章的章节总结简单看一下 然后再去着重看需要学习的章节就可以了!
知识点分的非常清晰! 每章还有总结 这…真的是我理想中的学习资料呐!
学习笔记整理过后放到这里
本专题包括以下几个主要知识点~
本次笔记主要记录 main方法的深入理解 、 代码块的内容
我们经常使用 “psvm”
来快捷打出main方法
那么这个main方法具体是个啥? 来深入理解下——
main方法接受的是String类型的数组参数 (数组中保存的是 执行Java命令时传递给所运行的类的参数!)
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(); } }
在IDEA中传递参数的方法——
很有意思的一个小技巧 点这里看一下
又称为初始化块 属于类中的成员(即 代码块是类的一部分)
代码块类似于方法 将逻辑语句封装在方法体中 通过{}包围起来
但是代码块和方法不同 —— 没有方法名、没有返回、没有参数 只有方法体
同时 代码块不用通过对象或类显示调用 而是加载类时/创建对象时隐式调用
那么说了那么多特点 代码块的基本语法是什么呢?
{ ...//其实就是这么一段代码 };
这里来举个例子看看代码块能干个啥~
上面是一端冗余的代码
那么我们就可以使用代码块——
测试一下——
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; } }
https://www.bilibili.com/video/BV1fh411y7R8?p=387&spm_id_from=pageDriver
static代码块也叫静态代码块 随着类的加载而执行 且只会执行一次
[static]{ };
普通代码块 每创建一个对象就执行一次
{ };
创建对象实例时
A a = new A();
创建子类对象实例 父类也会被加载!
public class B extends A{}
B b = new B();
——A类也会被加载
使用类的静态成员时(静态属性,静态方法)
案例演示
A类 extends B类的静态块
这里跟静态方法的特点是一样滴~
另外 静态代码块的特点——学习起来比较麻烦 工作就比较轻松!