先来说说 Static 关键词价绍
修饰变量,又叫类变量。 // 类名.属性名 = 10;
修饰方法,静态方法。 // 类名.方法名( );
实例变量与静态变量的区别?
实例变量是属于对象的,静态变量是属于类的,分配内存和初始化的时机也不同,静态变量要早于实例变量。
创建对象之前还有那些底层工作?
类初始化,在第一次使用这个类的时候,我们要先进行类初始化。(类的初始化只进行一次)
1.在类创建对象的时候
2.访问类的静态属性的时候
3.访问类的静态方法的时候
4.使用java命令运行一个类的时候
类初始化时到底做什么?
1.在Static Area(Method Area :方法区)分配空间把类的.class文件加载到其中;
2.JVM将要验证这个文件是不是符合java虚拟机的规范的文件,看看是不是有CAFFBABE有的话就认同是符合JVM规范的文件。
3.给静态变量和静态初始化代码块中的属性分配空间,默认初始化。
4.声明时初始化,静态初始块初始化,按照代码从上到下的顺序初始化。
静态变量是隶属于类的,多个对象是共享一个Static资源的。
静态代码块(静态方法)不能访问非静态成员(实例成员,实例方法),原因:类初始化优先于对象初始化,那是对象的实例变量还不存在。
编译后的代码静态代码和非静态代码都是放在方法区中。
JVM将内存中分为5块:
栈(虚拟机栈):主要是为了执行Java程序的
堆:
方法区(常量池):
本地方法区:调用其他语言的程序
PC(计数器):记录下一跳指令地址的地址
方法的重载(OverLoad):
什么是方法的重载?
多个方法,方法名相同参数列表不同,则在这多个方法之间就叫方法的重载。
参数不同的几种形式:
1.参数的个数不同
2.参数的类型不同
3.参数的顺序不同
重载 又叫静态连编(静态绑定,前期绑定)。
绑定:调用方法introduce,到底要调用那一块introduce代码叫做绑定。
静态绑定:在编译的时候就已经知道要调用那一块代码。
设计模式:对同一中问题,有一种固定的解决方案 ,开发一个软件的流程(瀑布模型)
1.问题的定义 做什么
2.可行性分析 市场上看能不能赚钱 技术上看看能不能做下来
3.需求分析 询问客户 软件要有什么功能
4.概要设计 怎么做 考虑大概 软件需要弄成多少个模块
5.详细设计
详细考虑模块功能 类 方法 参数
6.编码
7.测试 1>单元测试 :程序员自己测试自己的程序
2>集成测试:把程序员写的代码凑到一块一起测试 测试工程师 JIRA bug管理工具
根据看不看代码分为3中测试:
黑盒测试:不看代码测试
灰盒测试:介于两种测试之间
白盒测试:看代码测试
3>系统测试:把软件和硬件结合起来,模拟一个真实的环境 测试
4>验收测试:根据用户是谁有分为两种,Alpha测试和Beta 测试
Beta测试版:是将软件发布到公司外部去,让最终用户使用。
Alpha测试版:在公司内部客户测试,让内部用户来测试。
8.上线运行
9.维护
面试题1:
面试时必问请说出一种设计模式?并将它简述其要点?
门面模式(facade):把多个方法的调用封装到一个方法里,对外提供一个统一的接口,简化系统的使用。
面试题2:什么是重载(OverLoad)?
答:1.方法名相同 2.参数列表不同 的方法之间叫做重载
参数列表不同的几种形式:
1.参数的个数不同
2.参数的类型不同
3.参数的顺序不同
方法名之间,参数列表相同,返回值相同的方法之间叫不叫重载?
答:不叫,会报错,Duplicate method!编译器是靠参数列表的不同来确认调用哪一个方法,而返回值是运行的时候才得到的。因此编译器在碰到返回值不同的函数时,就会混乱,认为他是同一个方法,不知道调用哪一个,则就会报错。
联系客服