基础知识:
静态关键字:修饰变量,方法,类,静态变量和静态方法属于类的,普通的是属于对象的。静态类只能作为内部类,静态语句块比构造方法先执行。
以前总是对static的涵义模棱两可,不太敢用,也不知道什么地方该用。其实static用法非常广泛,静态变量、静态成员、静态函数等,如果用的好,会使程序提升一个等级,并且可以解决很多实际问题,比如单例模式…而且静态数据成员存储在静态存储区,只存储一次,可以节省内存。所以在这里尽自己目前的理解做一个总结:
用法1:static局部变量
我的理解是有点类似全局变量的功能,但只能被赋值一次,也就是说函数第一次赋值之后,会一直保存这个值。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
用法2:static全局变量
静态全局变量和静态局部变量类似,只是作用域不同,都是存储在全局数据区。
关于存储区:new产生的动态数据存储在堆去;自动变量存储在栈去,会自动释放;而静态变量和全局变量存储在全局存储区,不会随函数退出而释放。
与一般全局变量的区别:
- static全局变量只初始化一次
- 仅能在本文件中使用,其它文件可以定义相同名字的变量
用法3:static函数
只要记住一点:静态函数与普通函数的区别,只能在声明它的地方可见,不能被其它文件所使用
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
总结1:若全局变量仅在单个文件中可用,则声明为static全局变量,若全局变量仅在单个函数内部可用,则声明为static局部变量。
OK,讲完了面向过程,该轮到面向对象了,这也是我觉得static比较精华的地方。
用法4:static数据成员
- 静态成员可供所有的对象访问,只分配一次内存,也只有一份拷贝,对于每个对象都是一样,它的值可以更新;
- 静态成员存储在全局数据区,因此不能类声明中定义,初始化规则:<数据类型><类名>::<静态数据成员名>=<值> ,在使用前必须初始化;
- 访问:通过对象或者类名来访问;
- 静态成员的访问符和普通成员一样:public、protected、private;
作用:
- 实现全局性,但不会与程序中其它全局名字冲突
- 与private搭配,可实现信息隐藏
一个计数的例子
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
用法5:static成员函数
- 与静态成员类似,它是类内部共同享用,和普通函数不同,静态成员函数没用this指针;
- 访问:与静态成员类似通过类名或对象;
- 非静态成员函数可以任意地访问静态成员函数和静态数据成员,但反过来不行;
- 静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;
js:
1.js就是JavaScript,是一种脚本语言,是jquery的类库
功能作用:
Javascript是比较流行的一种制作网页物资的脚本语言,它由客户端浏览器解释执行,可以应用在PHP,ASP,JSP和ASP.net等从网站建设语言中,目前比较热门的Ajax就是以javascript为基础的,由此可见,熟练掌握并应用Javascript对于网站开发人员非常重要.
Javascript主要应用于以下几个方面:
1.在网页中加入Javascript脚本代码,可以使网页具有动态交互的功能,便于网站的与用户间的沟通;及时响应用户的操作,对提交的表彰做即时检查,如验证表单元素是否为空,验证表单元素是否是数值型,检测表单元素是否输入错误等.
2.应用Javascript脚本制作网页特效,如动态的菜单,浮动的广告等,为页面增添的绚丽的动态效果,使网页内容更加丰富,活泼.
3.应用Javascript脚本,建立复杂的网页内容,如打开新窗口载入网页.
4.应用Javascript脚本可以对用户的不同事件产生不同的响应.
5.应用Javascript制作各种各样的图片,文字,鼠标,动画和页面的效果.
6.应用Javascript制作一些小游戏.
1.校验。
2.动态的html。
3.做一些特殊效果:
4.js内置对象:(string,math,date,array,event,boolean,RegExp(正则表达式),)个别可以使用new创建对象。
string的方法:
array的方法:批量操作()删除时用的多;join(,)
date的方法:
RegExp的方法:只匹配数字[0-9] [/d]
5.if判断何时为true:if(data)为true,if(大于0或者不为空都为true)
6.如何声明一个对象,如何给对象添加一个方法
创建对象:var Person={};声明属性:person.*=; 添加方法 person.sleep=function(){}
7.js如何继承:继承基于prototype(原型)
8.js闭包:
9.浏览器对象:
window:
location:
history:back返回,go(-2)返回前两页,forward跳转页面
10.dom:树结构
节点类型:
二、抽象类和接口区别
java源码中已知常用的抽象类:
什么时候用抽象类什么时候用接口
抽象类存在的意义