一线互联网大厂Java核心面试题库
正逢面试跳槽季,给大家整理了大厂问到的一些面试真题,由于文章长度限制,只给大家展示了部分题目,更多Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等已整理上传,感兴趣的朋友可以看看支持一波!
}
建立一个: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的问题都有针对性的回答。
有了这个,面试踩雷?不存在的!
回馈粉丝,诚意满满!!!
量一和三之间~");
笔者福利
以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”,不管是技术还是HR的问题都有针对性的回答。
有了这个,面试踩雷?不存在的!
回馈粉丝,诚意满满!!!
[外链图片转存中…(img-nMA7GRlA-1715717300862)]
[外链图片转存中…(img-IwJKIAoZ-1715717300862)]
[外链图片转存中…(img-Wy3zt4Zg-1715717300863)]
[外链图片转存中…(img-SPKqdGVp-1715717300863)]