黑马程序员——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. ...
随机推荐
- 关于Warn:name or service not known的解决办法
由于之前搭建起了一个集群,然后直接将相应的配置文件复制过来 , 发现出现了 Warn:name or service not known 的问题,导致无法启动datanode. 解决的办法就是将sal ...
- 《java笔记 day07》
//匿名对象_1 class Car { //描述属性: String color; int number; //描述行为: void run() { System.out.println(color ...
- Security Checklist (路由器安全checklist)
Security Checklist Website by Michael Horowitz Home | Introduction | Router Bugs | Security Che ...
- mysql 为某一数据库下所有表中添加相同字段
BEGIN DECLARE s_tablename VARCHAR(100); /*显示表的数据库中的所有表 SELECT table_name FROM information_schema.t ...
- 使用busybox构建根文件系统
当我们在Qemu上运行起来自己编译的内核之后,需要使用busybox构建一个文件系统,将此文件系统挂载上去就可以使用busybox提供的各种命令了. 1.编译安装busybox 源码下载地址:http ...
- Add Two Numbers ---- LeetCode 002
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- ios即时通讯客户端开发之-mac上搭建openfire服务器
一.下载并安装openfire 1.到http://www.igniterealtime.org/downloads/index.jsp下载最新openfire for mac版 比如:Openfir ...
- Objective-c---分类 、 扩展 、 ARC
1 分类练习 1.1 问题 分类是Objective-C提供的一种类的补充和扩展方法,补充和扩展的每个部分被称为分类,分类本质上是类的一部分.提出分类概念的作用有两个:一是分解大的代码,提高程序可读性 ...
- MINIX3 进程调度分析
MINIX3 进程调度分析 5.1MINIX3 进程调度概要 MINIX3 的进程调度还是非常简单的,调度算法是非常短小的,其目的就是体现 了一个简单和高效的设计原则,当然简单和高效其实很难并存, ...
- JS基础知识(数组)
1,数组 var colors = new Array(); var colors = new Array(20); var colors = new Array(“red”, “blue”, “gr ...