一、static关键字:静态的,它可以修饰成员变量和成员方法

1、修饰成员变量的情况,当类所属对象中存在共享数据时,我们就可以把数据对应的属性定义为静态的,这里的共享数据是对象数据相同,而不是拥有相同的属性。举例如下:

class Person

{

 String name;

 int age;

 String country;

}

类创建的对象如果国籍都是中国,那么我们就可以 
static   
String 
country;把这个变量定义成静态的,它是存放在方法区,就是data 
segment,而且只有一份,这样只要有一个对象对其进行赋值之后,其他对象直接调用就可以了。静态成员(变量和方法)是随着类的加载而存在与数据区,分配存储空间,所以除了可以用对象名调用外,也可以直接用类名去调用。

2.修饰成员方法的情况:

class
Person

{

 String name;

 int age;

 String country;

public 
static  void  eat()

{

}

}被静态static修饰之后的方法不可以再访问非静态的成员变量,只能访问静态的变量,但是,非静态的方法既可以访问静态的方法,也可以访问非静态的方法,因为静态优先于非静态而存在,所以前面的不可以访问后面的,但是后面的可以访问前面的。被static修饰之后的方法,可以直接用类名来调用。

3.static的一些特点:

(1)、当使用到类时,类被加载到内存,而静态成员随着类的加载而加载;

(2)、静态成员可以用类名直接调用,它是优先于对象而存在的;

(3)、它为所有的对象所共享,都可以来调用。它是先于对象而存在的。

4.实例变量和静态变量的一些区别:

(1)实例变量随着对象的产生而被封装在堆内存中,而静态变量随着类的加载而加载到方法区中。

(2)存储空间不同,生命周期不同。

(3)静态的方法中不可以定义this super
等关键字,因为静态是先于对象而存在的,this是当前对象的引用

二、什么时候使用静态

1、当属于同一个类中的对象拥有共同的数据时,我们可以把存储这个数据的成员变量用static来修饰。

2、当方法内部没有使用非静态成员时,我们可以把方法定义成为静态方法,直接用类名来调用,简化步骤。

三、main函数:public  static void main(String[]
args){   }

1、public
:是访问权限修饰符,被它修饰代表类或者函数的方法访问权限最大,要想调用和重写必须权限不小于它。

2.static
:说明主函数是随着类的加载而加载的,优先于对象而存在,主函数调用同一个类中函数,必须是静态的。

3.void
:是数据类型,说明它是无返回值类型

4.main:主函数,它不是一个关键字,但是他能够被java虚拟机所识别,作为程序的入口。

5.(String[] 
args)主函数被java虚拟机调用传进来的形式参数,它的类型为字符串数组,数组中的元素都是字符串,args
是个参数名,它是任意的,可以修改

你想控制台输入什么,他就输出什么,我们用控制台代替虚拟机向主函数中传递参数,然后打印出结果。

代码如下:

public class MainDemo

{

 public static void main(String[]args)

 {

  for(int i=0;i

  {

   System.out.println(args[i]);

}

 }

}

四、静态工具类

1.对象是用来封装数据的,只要这个类中有非静态的成员存在,那么就必须创建对象。

2,一些应用程序存在共性的功能,比如求和、取最值、排序等等,我们可以把这些功能提出出来,单独封装在一个类里,提供给程序员使用,可以把不需要提供的私有化,制作成API文档,作为参考。

文档注释格式:

五、静态代码块

格式:{      
执行语句;}

生命周期:静态代码块是随着类的加载而被加载,随着类的消失而消失、

特点:它优先于主函数而存在    
作用:用来对类进行初始化

并且只被执行一次。

六、对象的初始化过程

Person p=new Person();

1、首先用到了Person这个类,就要把它从硬盘加载到内存中

2、如果有静态代码块,那么静态代码块会随着类的加载而被加载到方法去,静态成员,包括方法和变量都会被加载到方法区。

3、new创建对象,在堆内存中分配地址,开辟存储空间

4、在堆中建立对象的特有属性,就是封装类中的非静态成员到堆中,然后对属性进行默认初始化

5,显示初始化属性,这一步可以在类中进行,直接对特有属性进行赋值。

6.调用构造代码块的,对所有对象进行初始化

7、调用构造函数,对相应的对象进行初始化

8、将内存地址赋值一份给栈中的变量引用,使引用指向该对象。

static关键字的用法和main函数的更多相关文章

  1. static 关键字 静态成员变量及静态成员函数

    static类成员 类成员类似于C语言的全局变量,但是与全局变量又有所不同,例如,全局变量是可以被任何的用户代码所修改,而且全局变量破坏了对象的封装性. 使用类的 static 成员的优点 使用 st ...

  2. 2016-12-14:通过static关键字,使用类成员函数作为回调函数

    #include <iostream> using namespace std; class Callee { public: void PrintInfo(int i) { cout & ...

  3. Java中的static关键字解析(转自海子)__为什么main方法必须是static的,因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...

  4. Java中的static关键字解析

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...

  5. Java中的static关键字解析 转载

    原文链接:http://www.cnblogs.com/dolphin0520/p/3799052.html Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到 ...

  6. Java中的static关键字

    写在前面: 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰 ...

  7. 转:iOS程序main函数之前发生了什么

    原文地址:http://blog.sunnyxx.com/2014/08/30/objc-pre-main/ 我是前言 一个iOS app的main()函数位于main.m中,这是我们熟知的程序入口. ...

  8. java中static关键字解析

    static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列 ...

  9. java中的static关键字详解

    static对于我们这些初学者在编写代码和阅读代码是一个难以理解的关键字,也是大量公司面试题最喜欢考的之一.下面我就来就先讲述一下static关键字的用法和我们初学者容易误解的地方. static关键 ...

随机推荐

  1. 设置结点的ID为固定ID

    https://www.java.net//forum/topic/jxta/jxta-community-forum/how-initialize-pse-jxse-27 ————————————— ...

  2. Gym 100507D Zhenya moves from the dormitory (模拟)

    Zhenya moves from the dormitory 题目链接: http://acm.hust.edu.cn/vjudge/contest/126546#problem/D Descrip ...

  3. java commons-lang 工具包 逃脱工具 转unicode 及其他

    <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</ar ...

  4. 创建类模式(一):工厂方法(Factory Method)

    定义 此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦.复用和方便后期维护拓展的目的. 定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心 ...

  5. <%%>与<scriptrunat=server>,<%=%>与<%#%>的区别

      这些东西都是asp.net前台页面与后台代码交互过程中经常使用的,它们之间有的非常相似,又有一些不同.对比学习下,看看他们之间的联系与区别. 首先看<%%>与<scriptrun ...

  6. c++出错记录

    错误1如下:  vector<vector<int>> m_vc;  error: '&' cannot appear in a constant-expression ...

  7. Installation Directory must be on a local hard drive解决办法

    今天带着公司的电脑来杭州这边,同事发来一个Sliksubversion.msi来进行安装,由于系统是win8.1的,直接点击安装不了,真的是醉了,于是乎发挥度娘的力量找到了答案,这里贴出来,供大家来参 ...

  8. ASCII,GB2312,GBK,Unicode,Utf-8

    1.ASCII:American Stardand Code for Information Interchange,是当时美国制定出来的一套编码系统,使用7位或8位二进制来表示西文字符,0-31以及 ...

  9. 解决mysql 1040错误Too many connections的方法

    从官方文档知道linux上面编译安装的mysql默认的连接为100个,这样对于网站的需求来说是远远不够的. mysql官方告诉我们需要修改max_connections的值,那么我们怎么去修改呢?有两 ...

  10. C#开发的WebService使用JSON格式传递数据+Ajax测试

    [C#]  WebService 使用 JSON 格式傳遞筆記 + JQuery 測試 0 2 因為一些因素,必須改寫WebService,很傳統,但是很多公司還在用.. 因為XML 的關係,不想讓他 ...