黑马程序员——JAVA基础之主函数main和静态static,静态代码块
------- android培训、java培训、期待与您交流! ----------
主函数:是一个特殊的函数。作为程序的入口,可以被jvm调用。
主函数的定义:
public:代表着该函数访问权限是最大的。
static:代表主函数随着类的加载就已经存在了。
void:主函数没有具体的返回值。
main:不是关键字,但是是一个特殊的单词,可以被jvm识别。
(String[] arr):函数的参数,参数类型是一个数组,该数组中的元素是字符串。字符串类型的数组。
主函数是固定格式的:jvm识别。
jvm在调用主函数时,传入的是new String[0];
静态(关键字):static
static用法:
是一个修饰符,用于修饰成员(成员变量,成员函数)。
当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。
格式: 类名.静态成员。
static特点:
1,随着类的加载而加载。 也就说:静态会随着类的消失而消失。说明它的生命周期最长。
2,优先于的对象存在。明确一点:静态是先存在,对象是后存在的。
3,被所有对象所共享
4,可以直接被类名所调用。
实例变量和类变量的区别:
1,存放位置。类变量随着类的加载而存在于方法区中。 实例变量随着对象的建立而存在于堆内存中。
2,生命周期: 类变量生命周期最长,随着类的消失而消失。实例变量生命周期随着对象的消失而消失。
静态使用注意事项:
1,静态方法只能访问静态成员。非静态方法既可以访问静态也可以访问非静态。
2,静态方法中不可以定义this,super关键字。 因为静态优先于对象存在。所以静态方法中不可以出现this。
3,主函数是静态的。
静态的利弊:
利处:对对象的共享数据进行单独空间的存储,节省空间。 没有必要每一个对象中都存储一份,可以直接被类名调用。
弊端:生命周期过长。访问出现局限性,静态只能访问静态。
什么时候使用静态static:
每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装。以便复用。 虽然可以通过建立对象使用这些工具方法,对数组进行操作但是发现了问题:
1,对象是用于封装数据的,可是对象并未封装特有数据。
2,操作数组的每一个方法都没有用到对象中的特有数据。
这时就考虑,让程序更严谨,是不需要对象的。可以将类中的方法都定义成static的。直接通过类名调用即可。
将方法都静态后,可以方便于使用,但是该类还是可以被其他程序建立对象的。为了更为严谨,强制让该类不能建立对象。可以通过将构造函数私有化完成。
静态代码块
静态代码块格式:
static
{
静态代码块中的执行语句。
}
静态代码块特点:
随着类的加载而执行,只执行一次,并优先于主函数。
用于给类进行初始化的。
/**
* 静态代码块的演示
* 显示:b c a e9 d
*/ class StaticCode
{
int num=9;
StaticCode()
{
System.out.println("b");
} static
{
System.out.println("a");
}
{
System.out.println("e"+this.num);//要用this.来访问
} StaticCode(int x)
{
System.out.println("d");
}
public static void show()
{
System.out.println("show run");
}
} class StaticCodeDemo
{
static
{
System.out.println("b");
}
public static void main(String[] args)
{
new StaticCode(4);
}
static
{
System.out.println("c");
}
}
------- android培训、java培训、期待与您交流! ----------
黑马程序员——JAVA基础之主函数main和静态static,静态代码块的更多相关文章
- 黑马程序员——JAVA基础之函数,重载,内存结构
------- android培训.java培训.期待与您交流! ---------- 函数: 什么是函数? • 函数就是定义在类中的具有特定功能的一段独立小程序. • 函数也称为方法. 函数的格 ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)
正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G QQ 1481135711 这是我总 ...
- 黑马程序员——JAVA基础之语法、命名规则
------- android培训.java培训.期待与您交流! ---------- 1.java语言组成:关键字,标识符,注释,常量和变量,运算符,语句,函数,数组. 2.java关键字:被Jav ...
- 黑马程序员——JAVA基础之常用DOS命令和环境变量的配置
------- android培训.java培训.期待与您交流! ---------- 1.常用dos命令: dir 显示当前文件下目录 ...
- 黑马程序员 Java基础<九>---> 多线程
ASP.Net+Android+IOS开发..Net培训.期待与您交流! 多线程 一.概述: 1.线程是什么 说到线程,我们就得先说说进程.所谓进程,就是一个正在执行(进行)中的程序,每一个进程执行都 ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...
- 黑马程序员——JAVA基础之String和StringBuffer
------- android培训.java培训.期待与您交流! ---------- String类: 字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String str = &quo ...
- 黑马程序员——JAVA基础之多线程的安全问题
------- android培训.java培训.期待与您交流! ---------- 导致多线程出现问题的一个特殊的状态:就绪.具备了执行资格,但是还没有获取资源. 导致安全问题的出现的原因: 1. ...
随机推荐
- PHP汉字转拼音类
看到的文章,转过来留用,哈哈 汉字转拼音类(全拼与首字母) <?php class GetPingYing { private $pylist = array( 'a'=>-20319, ...
- C语言:typedef 跟 define 的区别
typedef (int*) pINT1;以及下面这行:#define pINT2 int* pINT1 a,b; 与pINT2 a,b; 定义的a,b 有差别吗 回答: typedef作为类型定义关 ...
- (转)Tomcat的目录结构
原文:http://hi.baidu.com/qinyougen/item/beeb506abb3e1d08a1cf0ffb Tomcat的目录结构 一.TOMCAT的目录结构 /bin:存放wind ...
- bistu新生-1004
#include "stdio.h"#include "stdlib.h"#include "math.h"int cmp(const vo ...
- Makefile学习笔记
ls -l 查看文件详细信息 1.gcc -E test.c -o test.i//预编译gedit test.i //查看:高级C 2.gcc -Wall -S test.i -o test.s// ...
- yii2.0-rules验证规则应用实例
Rules验证规则: required : 必须值验证属性||CRequiredValidator 的别名, 确保了特性不为空. [['字段名1','字段名2'],required] //字段 ...
- 动态规划 算法(DP)
多阶段决策过程(multistep decision process)是指这样一类特殊的活动过程,过程可以按时间顺序分解成若干个相互联系的阶段,在每一个阶段都需要做出决策,全部过程的决策是一个决策序列 ...
- 企业级的App发布流程
1.先注册企业级开发证书http://blog.sina.com.cn/s/blog_6cad9db90102uy0s.html2.开发 企业流程http://blog.csdn.net/pang04 ...
- MySQL数据库备份和还原的常用命令小结
备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库 ...
- magento 去掉index.php .html
首先应该确保你的服务器环境,达到了magento的运行需求,若你是使用的是magento专用空间就不必担心了,若不是请查看我以前的文章,检测你的运行环境(http://www.hellokeykey. ...