
java基础面试
文章平均质量分 73
学习快乐小王子
这个作者很懒,什么都没留下…
展开
-
成员变量与局部变量
局部变量和成员变量定义局部变量和成员变量他们的定义不同,在不同的位置可能就是不同的变量,根据声明的位置不同:局部变量定义在方法体{}中,形参上,代码块{}中。 存放在 栈 中,方法执行完就没了。成员变量在类中,但是在方法外。类变量: 有static修饰,存放在方法区中,整个类共享。实例变量: 没有static修饰,存放在堆中,实例自己拥有。案例public class VariableCase { static int s; int i; int j;原创 2021-12-11 13:42:00 · 190 阅读 · 0 评论 -
方法参数传递机制
Java中方法传递机制,到底是值传递还是引用传递???这个要必要深究一下。同样,先说结论①当形参是基本数据类型的时候,是值传递。②当实参是引用数据类型的时候,传递的是地址值,同时,**还需要注意:String 和 包装类型的值是不可变的。**比如:String str = “word”; 这个word是在字符串常量池中,不可改变,如果进行了一些操作,是会创建出新的字符串。案例public class Case { public static void main(String[] args原创 2021-12-08 19:23:07 · 534 阅读 · 0 评论 -
类加载过程 --父子类构造方法、静、非静代码块/变量加载顺序问题
概述弄清楚父子类的加载过程,各个类中静态/非静态变量、静态/非静态代码块、构造方法、普通方法等的加载过程对于推断最终的结果非常重要。结论先给出总的结论。类初始化过程(1)一个类要创建实例需要先加载并初始化该类。main()方法所在的类需要先加载并初始化。(2)一个子类要初始化需要先初始化父类。(3)一个类初始化就是执行<clinit>()方法。<clinit>()方法包括:静态变量和静态代码块,他们的加载顺序同执行顺序。且只执行一次。总的来说,类加载的时候先加载父原创 2021-12-08 11:37:29 · 1102 阅读 · 0 评论 -
设计模式 -- 单例模式
单例设计模式分为两种:1. 饿汉式不管需不需要这个对象,只要类加载了,就把他创建出来。不存在线程安全问题。写法1:/** * 单例模式 --> 饿汉式 * 在类加载的时候就创建出这个对象,不管需不需要用到 * * (1)构造器私有化 * (2)使用类型进行调用 */public class Singleton1 { //构造器私有化 private Singleton1(){} //使用静态变量提供这个类的实例 --> 这里的修饰符是publ原创 2021-12-07 21:37:19 · 160 阅读 · 0 评论 -
数值计算i++,++i原理剖析
数值计算学习java虚拟机是怎么计算两个数的,特别是有i++ 和 ++i 这些场景的时候。总结赋值“=” 是最后计算的,右边所有的计算完成才会进行赋值。=右边的数按照从左到右的顺序压入到操作数栈中。不同运算符计算的顺序按照运算符的优先级。自增(i++,++i),自减(i–,--i)都是直接修改变量的值,不会经过操作数栈。赋值前的临时结果也放在操作数栈中。题目:public static void main(String[] args) { int i = 1;原创 2021-12-07 17:17:01 · 1009 阅读 · 0 评论