static
1、可以用来定义静态的成员变量
2、可以用来定义静态的函数
3、可以定义静态代码块
1、静态成员变量语法特点
定义方法:起名Person.java
class Person {
staticint i; //int i 前加上static i 就是静态成员变量
}
a)、常用的调用成员变量方法,先生成
“类的对象”例如:(1)、 Person person = new person();
person.i= 10;
class test{
publicstatic void main (String args []){
Personperson = new Person(); //红色警报 Person person中间不加.
person.i= 10;
}
}
当我们将Person.java中定义为静态成员变量时候如上边(1、静态成员变量
的语法特点)
我们在test中就可以直接调用
class test{
publicstatic void main (String args []){
Person.i= 10 ;
}
}
注:1、静态成员变量【可以】使用类名进行直接调用;
2、静态成员变量同时也可以用对象来调用,即普通调用方法;
P1 是一个person的对象;将p1的i成员变量赋值为10;
P1 、 p2 都是一个引用他们分别指向堆内存当中的一个对象;
P1 对象中i的变量为10;
注意
如果i设置为静态的成员变量
此时p1、p2使用的i的这个成员变量是同一个,
所有的对象使用的静态变量的值都是同一份;
此为代码,先编译Person.java 然后编译Test.java然后执行Test
--------------------------------------------------------------------------------
//定义一个Person的类
class Person {
staticint i; //int i 前加上static i 就是静态成员变量
}
//定义一个Test的类
class Test{
public static void main (String args[]){
Person p1 = new Person();
Person p2 = new Person();
Person.i = 10;
System.out.println("p1的i值为" + p1.i);
System.out.println("p2的i的值" +p2.i);
/*
p1、p2使用的i的这个成员变量是同一个,任何一个成员变量的值得到修改,其他的所有的成员变量的值一同修改
*/
p1.i=20;
System.out.println("p1的i值为" + p1.i);
System.out.println("p2的i的值" +p2.i);
}
}
分别编译执行java Test
总结 1、定义静态变量在变量的类型前面加上static
2、既可以用对象名调用,又可以用类名调用
3、所有的对象使用的静态变量都是同一份,任何一个静态变量得到修改,其他的静态变量都会跟着修改
----------------------------------------------------------------------
静态函数:
class Person{
//static int i ;
static void fun() {
System.out.println("我是静态函数");
}
}
--------
class Test{
public static void main (String args[]){
/*
Person p1 = new Person();
Person p2 = new Person();
Person.i = 10;
System.out.println("p1的i值为" + p1.i);
System.out.println("p2的i的值" +p2.i);
//p1、p2使用的i的这个成员变量是同一个,所以修改p1的成员对象值时,p2也会同时修改
p1.i=20;
System.out.println("p1的i值为" + p1.i);
System.out.println("p2的i的值" +p2.i);
*/
Person.fun ();
}
}
----------------------------------------------------------------------------
class Person3{
static String name;
static void talk(){
System.out.println("I most love the human is " + name);
}
}
---
class Test3{
public static void main (String args[]){
Person3.name = "刘晶晶";
Person3.talk();
}
}
1、静态函数前边需要加上static
2、静态函数是可以用类名直接调用的 如上 class Test3 中 Person3.talk(); Person3就是类名
3、在静态函数中不可以引用非静态的成员变量
如果红线处可以应用非静态的成员变量,那么this就无法解释,因为没有所谓的调用这个函数的对象。
--------------------------------------------------------------------------
静态代码块:
class Person3{
static{
System.out.println("静态代码块");
}
static String name;
static void talk(){
System.out.println("I most love the human is " + name);
}
}
------
class Test3{
public static void main (String args[]){
Person3.name = "刘晶晶";
Person3.talk();
}
}
如果单一执行 Person3 会产生错误:提示找不到主函数
此静态代码块需要在装载这个类的时候执行
作为一个类要执行分为几个步骤
步骤:先把这个类装载到内存当中,装载到虚拟机里边去,装载完了之后再进行解释执行
对于静态代码块来说他无需调用,只要这个类里边有静态代码块,那么装载这个类的时候就会执行这个静态代码块,
静态代码块主要作用就是为静态变量name来赋一些初始值
--------------------------
总结static
1、可以定义一个静态的成员变量 而且他的值只有一份,,,所有的对象使用的静态成员变量都是同一个。
2、static可以定义静态函数,静态函数也是可以用类名进行调用,在静态函数中不能使用this,即不能在静态函数中引用非静态的成员变量。
3、静态代码块的主要作用是为静态成员变量赋初始值。