面向对象时,哈喽一定爱极了world吧?【史上最有爱的Java基础总结(足足六千字)

一线互联网大厂Java核心面试题库

image

正逢面试跳槽季,给大家整理了大厂问到的一些面试真题,由于文章长度限制,只给大家展示了部分题目,更多Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等已整理上传,感兴趣的朋友可以看看支持一波!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

}

建立一个:A.java的.java文件(java源文件)

在上面打开cmd

我们在命令行里使用javac命令对刚才的java源文件进行编译

可见文件夹内生成了一个java.class的 .class文件(编译后的文件)二进制字节码文件!~

打开发现是乱码。

我们再用java命令 将java.class 加载到JVM上进行运行


当你向世界说你好时,世界也在面向你!~


上述一套操作流程下来,只是为了熟悉cmd内使用java 和 javac命令

接下来,请复制下面的代码 并 新建一个 B.java文件

public class B {

static public synchronized final void main(String[] args) {

System.out.println(“HelloWorld!”);

for (String string : args) {

System.out.println(string);

}

}

}

这次,我们在使用java命令运行 B.class时

使用java B object oriented programming

HelloWorld!

object

oriented

programming

你从我的世界经过,并留下了一句Hello,我亦在目不转睛的凝视着你~

初识面向对象语言,HelloWorld!浪漫亦不过如此


上面的原理


main是JVM识别的特殊方法名,是程序的入口方法。字符串数组参数args为开发人员在命令行状态下与程序交互提供了一种手段!~

补充

1)定义.java文件可以参考我之前的文章,更改文件扩展名

2)此外应该还有朋友注意到了我们的主方法 main()方法 还有其他的定义格式public 与 static 没有先后顺序关系,位置可以更换,也可以加上final修饰符 和 synchronized修饰!~

static public synchronized final void main(String[] args)


二 如何在她(main方法)说出HelloWorld之前打招呼?

================================

如何实现在main()方法执行前输出"Hello,World"


众所周知,在Java语言中,main是程序的入口方法,在程序运行时,最先加载的就是main方法,

但这是否意味着main方法就是程序运行时第一个被执行的模块?

答案必然是否定的。

因为Java的面向对象特性决定了Java中以类为最基本的单位,在类加载完成时才会顺着类内主函数的入口进入main()方法。执行main()方法的内容!~

public class C {

static{

System.out.println(“Hello”);

}

public static void main(String[] args) {

System.out.println(“HelloWorld”);

}

}

代码如上,结果如下!~


三 Java程序初始化的顺序是怎样的【面试必备!~】

==============================

理论铺垫


通过上面的测试,我们发现了Java中类加载的顺序是最优先的

Java程序的初始化一般遵循三个原则(优先级依次递减)

1)静态对象(变量)(静态代码块) 优先于 非静态对象(变量)(初始代码块)

其中,静态 内容只 初始化 一次!而非静态内容可能会初始化多次。

2)父类优先于子类进行初始化

3)按照成员变量的定义顺序进行初始化

其中,同等级的变量 和 代码块(即同为静态或同为非静态),看定义顺序谁先谁后执行

默认值规则是一开是自动补充的,如类内的类变量和成员变量,Int基本类型的默认值都是0;

class A{

int anInt;//这个系统会自动给他补成0;这叫默认值规则

}

class B{

int anInt1=1024;//这叫初始化规则

}


It is easy to say,show me your code.


定义父类Base!~

package com.zdx.daily.java0101.test;

/**

  • @program: daily.study

  • @description: 测试用的父类

  • @author: SmallRedSun

  • @create: 2022-01-01 15:12

**/

public class Base {

static int anStaticInt = StaticIntMethod();

private static int StaticIntMethod() {

System.out.println(“1------>父类静态变量赋初值:类变量”);

return 1;

}

static{

System.out.println(“2------>父类静态代码块夹在静态变量一和三之间”);

}

static int getAnStaticInt=sMethod();

private static int sMethod() {

System.out.println(“3------>父类静态变量赋初值:类变量”);

return 3;

}

int anInt = intMethod();

private int intMethod() {

System.out.println(“4------>父类赋初值规则:属性”);

return 4;

}

{

System.out.println(“5------>父类构造代码块(普通代码块夹在静态变量一和三之间~”);

}

private int intMethod1() {

System.out.println(“6------>父类赋初值规则:属性”);

return 6;

}

protected Base(){

System.out.println(“7------>父类构造器(构造方法)”);

}

}

定义子类Derived!~

package com.zdx.daily.java0101.test;

/**

  • @program: daily.study

  • @description: 测试子类,继承自Base类

  • @author: SmallRedSun

  • @create: 2022-01-01 15:21

**/

public class Derived extends Base{

static int anStaticInt = StaticIntMethod();

private static int StaticIntMethod() {

System.out.println(“1------>子类静态变量赋初值:类变量”);

return 1;

}

static{

System.out.println(“2------>子类静态代码块夹在静态变量一和三之间”);

}

static int getAnStaticInt=sMethod();

private static int sMethod() {

System.out.println(“3------>子类静态变量赋初值:类变量”);

return 3;

}

int anInt = intMethod();

private int intMethod() {

System.out.println(“4------>子类赋初值规则:属性”);

return 4;

}

{

System.out.println(“5------>子类构造代码块(普通代码块夹在静态变量一和三之间~”);

笔者福利

以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”,不管是技术还是HR的问题都有针对性的回答。

有了这个,面试踩雷?不存在的!

回馈粉丝,诚意满满!!!




本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

量一和三之间~");

笔者福利

以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”,不管是技术还是HR的问题都有针对性的回答。

有了这个,面试踩雷?不存在的!

回馈粉丝,诚意满满!!!

[外链图片转存中…(img-nMA7GRlA-1715717300862)]
[外链图片转存中…(img-IwJKIAoZ-1715717300862)]
[外链图片转存中…(img-Wy3zt4Zg-1715717300863)]
[外链图片转存中…(img-SPKqdGVp-1715717300863)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值