一、static关键字

1、用法

Static是一个修饰符,用于修饰成员,包括成员变量和成员函数。当成员被静态修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用。System.out..println("I am stacit method!")

2、特点

2.1 随着类的加载而加载,也就是说静态会随着类的消失而消失,说明它的生命周期最长。

2.2 优先于对象存在:静态是先存在的,对象是后存在的。

2.3 被所有对象共享

2.4 可以直接被类名所调用

3、静态使用注意事项

4.1 静态方法只能访问静态成员

非静态方法既可以访问静态也可以访问非静态

4.2 静态方法中不可以定义this,super关键字

因为静态优先于对象存在。所以静态方法中不可以出现this

4、静态的利与弊

5.1 利处:对对象的共享数据进行单独空间的存储,节省空间;没有必要为每一个对象都存储一份,可以直接被类名调用。

5.2 弊处:生命周期过长,访问出现局限性(静态虽好,只能访问静态)

二、静态代码块/静态方法/构造代码块/构造函数/

静态代码块:随着类的加载而执行,只执行一次,且最先执行。

构造代码块:随着类的加载而执行,只执行一次,在静态代码块后执行。

构造函数:创建对象时被调用。

静态方法:随着类的加载时而加载,可以被类名直接调用。

class StaticCode {

StaticCode() {System.out.println("无参构造函数运行了...");}

static {System.out.println("静态代码块运行了...");}

{ System.out.println("构造代码块运行了...");

}

StaticCode(int x) { System.out.println("带参数的构造函数执行了..." + "传入整形参数:" + x);}

public static void show() { System.out.println("静态方法运行了..."); }

}

public class StaticCodeDemo {

static { System.out.println("主类的静态代码快运行了..."); }

public static void main(String[] args) {

new StaticCode(8);

}

}

运行结果如下所示:

三、单例设计模式

作用:一个类在内存中只存在一个对象

方法:

1,将构造函数私有化

2,在类中创建一个唯一的本类对象

3,提供一个方法可以获取到该对象

分为两种模式:

饿汉模式

这个是先初始化对象,后获取。

public class Single_HungryMan {

private static Single_HungryMan s = new Single_HungryMan();

public static Single_HungryMan getInstance() {

return s;}

}

懒汉模式

对象是方法被调用时,才初始化,也叫做对象的延时加载。称为:懒汉式 Single_LazyMan

public class Single_LazyMan {

private static Single_LazyMan s = null;

private Single_LazyMan() {}

public static Single_LazyMan getInstance() { 

if (s == null) 

  s = new Single_LazyMan(); 

return s; }

}

四、访问权限

1、private修饰词,表示成员是私有的,只有自身可以访问;  

2、protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员。  

3、无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ ),同一个包内可以访问,访问权限是包级访问权限; 

4、public修饰词,表示成员是公开的,所有其他类都可以访问;

5、类的访问限制,仅有public和包访问权限;  

a、一个Java文件只能有一个public类 

b、public类的名称必须同Java文件名完全一致

c、若Java文件中没有public类,则文件名可以任意

6、final关键字

a、final数据成员,使用前总是被初始化并被强制要求在定义处或构造器中赋值;一旦赋值后,对于基本类型其值会恒定不变,而对于对象引用会始终指向赋值的对象,但指向对象自身是可以修改的; 

b、final参数,对于基本类型表示无法改变参数的值,对于对象引用表示无法改变引用所指的对象;

c、final方法,保证方法不会在继承后修改和重载;所有的private方法都隐含式final的;Java中使用动态绑定(后期绑定)实现多态,除了static和final方法是使用前期绑定的;

     d、final类,表示该类不可被继承。 

黑马程序员_static\访问权限\单例模式 大汇总的更多相关文章

  1. 大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17

    黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目 ...

  2. 黑马程序员:Java基础总结----网络编程

    黑马程序员:Java基础总结 网络编程   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络编程 网络通讯要素 . IP地址 . 网络中设备的标识 . 不易记忆,可用 ...

  3. 黑马程序员:轻松精通Java学习路线连载1-基础篇!

    编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...

  4. 【黑马18期Java毕业生】黑马程序员Java全套资料+视频+工具

        Java学习路线图引言:        黑马程序员:深知广大爱好Java的人学习是多么困难,没视频没资源,上网花钱还老被骗. 为此我们历时一个月整理这套Java学习路线图,不管你是不懂电脑的小 ...

  5. 黑马程序员面试宝典(Java)Beta6.0免费下载

    场景 JavaSE基础 面向对象特征以及理解 访问权限修饰符区别 理解clone对象 JavaSE语法 java有没有goto语句 &和&&的区别 如何跳出当前的多重嵌套循环? ...

  6. 黑马程序员——【Java高新技术】——代理

    ---------- android培训.java培训.期待与您交流! ---------- 一.“代理概述”及“AOP概念” (一)代理概述 1.问题:要为已存在的多个具有相同接口的目标类的各个方法 ...

  7. 黑马程序员+SQL基础(上)

    黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...

  8. 黑马程序员+Winform基础(上)

    黑马程序员+Winform基础 ---------------<a href="http://edu.csdn.net"target="blank"> ...

  9. 黑马程序员:Java基础总结----反射

    黑马程序员:Java基础总结 反射   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 反射 反射的基石:Class类 Class类代表Java类,它的各个实例对象又分别 ...

随机推荐

  1. MySQL validate_password 插件

    从创建用户说起: 如我们在mysql中可以用grant all on *.* to userd@'localhost' identified by '123'; 来创建一个userd用户,虽然用户是创 ...

  2. linux下维护服务器之常用命令

    linux下维护服务器之常用命令! 第1套如下: 正则表达式: 1.如何不要文件中的空白行和注释语句: [root@localhost ~]# grep -v '^$' 文件名 |grep -v '^ ...

  3. CentOS7 yum lamp 虚拟主机配置 lamp各组件简单影响性能的参数调整--for 一定的环境需求

    LAMP Server on CentOS 7 Updated Tuesday, January 13, 2015 by Joel Kruger This guide provides step-by ...

  4. #include <boost/thread.hpp>

    在这个库最重要的一个类就是boost::thread,它是在boost/thread.hpp里定义的,用来创建一个新线程.它已经被纳入C++标准库中. 小结:新一代C++标准将线程库引入后,将简化多线 ...

  5. malloc用法

    malloc用法三部曲:(#include<stdlib.h>下的库函数) 1.malloc eg.ps=(char*)malloc(sizeof(char)*20)的意思是,动态分配空间 ...

  6. OpenGLES 怎样在十天内掌握线性代数 - 希望这是真的!

    OpenGLES 怎样在十天内掌握线性代数 - 希望这是真的! 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&q ...

  7. mysql insert中文乱码无法插入ERROR 1366 (HY000): Incorrect string value

    ERROR 1366 (HY000): Incorrect string value: '\xB1\xEA\xCC\xE2\xD5\xE2...' for column 'title' at row ...

  8. aspx后台生成json对象

    json对象应用很广,有时,我们要把一些数据转化为json对象,就需要用到以下方法了. 1.使用Newtonsoft.Json.DLL (推荐使用) 下载地址:http://files.cnblogs ...

  9. ASP.NET中怎样才能使自己的代码运行的效率更高

    一.网页设计相关: 1,做好页面布局和内容规划,只放置合适的内容,并尽可能使页面设计的最小. 2,使用好的网页编辑器,如DW,FP,不要用VS自带的编辑器,因为它会产生很多无用的沉余代码,而且设计的界 ...

  10. DEV GridControl导出到Excel或打印

    //方法1SaveFileDialog fileDialog = new SaveFileDialog(); fileDialog.Title = "导出Excel"; fileD ...