java面试强基(15)
创始人
2024-03-02 09:20:04
0

 

 

说明一下public static void main(String args[])这段声明里每个关键字的作用? 

​ public: main方法是Java程序运行时调用的第一个方法,因此它必须对Java环境可见。所以可见性设置为 pulic.

​ static: Java平台调用这个方法时不会创建这个类的一个实例,因此这个方法必须声明为static。

​ void: main方法没有返回值。

​ String是命令行传进参数的类型,args是指命令行传进的字符串数组。

 

public,private,protected的区别,继承方法与访问权限 

 

short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗? 

​ 对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能 赋值给short型。

​ 而short s1 = 1; s1 += 1;**+=操作符会进行隐式自动类型转换**,是 Java 语言规定的运算 符;Java编译器会对它进行特殊处理,因此可以正确编译。因为s1+= 1;相当于s1 = (short)(s1 + 1)。

static的独特之处? 

1、被static修饰的变量或者方法是独立于该类的任何对象,也就是说,这些变量和方法不属于任何一个实例对象,而是被类的实例对象所共享 。

2、在该类被第一次加载的时候,就会去加载被static修饰的部分,而且只在类第一次使用时加载并进行初始化,注意这是第一次用就要初始化,后面根据需要是可以再次赋值的。

3、static变量值在类加载的时候分配空间,以后创建类对象的时候不会重新分配。赋值的话,是可以任意赋值的!

4、被static修饰的变量或者方法是优先于对象存在的,也就是说当一个类加载完毕之后,即便没有创建对象,也可以去访问。

 

程序初始化的顺序 

在Java语言中,当实例化对象时,对象所在类的所有成员变量首先要进行初始化,只有当所有类成员完成初始化后,才会调用对象所在类的构造函数创建对象。

java程序的初始化—般遵循以下三个原则(以下三个原则优先级依次递减):

1)静态对象(变 量)优先于非静态对象初始化,其中静态对象(变量)只初始化1次,而非静态对象(变量)可 能会初始化多次。

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

3)按照成员变量定义顺序进行初始化。即使变量定义散布于方法定义之中,它们依然在任意方法(包括构造方法)被调用之前先进行初始化。

Java程序的初始化工作可以在许多不同的代码块中来完成(例如:静态代码块、构造函数 等),它们执行的顺序为:父类静态变量→父类静态代码块→子类静态变量→子类静态代码→父类非静态变量→父类非静态代码块→父类构造方法→子类非静态变量→子类非静态代码块→子类构造方法。

(静态)非静态成员域在定义时初始化和(静态)非静态代码块中初始化的优先级是平级的,也就是说按照从上到下初始化,最后—次初始化为最终的值(不包括非静态的成员域在构造器中初始化)。所以在(静态)非静态块中初始化的域甚至能在该域声明的上方,因为分 配存储空间在初始化之前就完成了。

 

 

 

 

 

 

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...