Java基础入门-java中的static使用

来源:互联网 发布:windows api 窗口置顶 编辑:程序博客网 时间:2024/04/27 14:05

Java中被static修饰的成员称为静态成员。它属于整个类所有,而不是某个对象私有;静态成员可以用类名直接访问或者使用对象名访问。


静态变量  使用static修饰的变量称为静态变量

package com.demo.test;public class Demo1 {//static 修饰的变量称为静态变量,所有类的对象共享static String name = "abcdefg";public static void main(String[] args){//静态变量可以直接使用类名来访问,无需创建类的对象System.out.println("通过类名访问name:" + Demo1.name);//通过创建对象来访问Demo1 demo1 = new Demo1();System.out.println("通过对象来访问name:" + demo1.name);}}
输出结果:
通过类名访问name:abcdefg通过对象来访问name:abcdefg

静态方法  使用static修饰的方法称为静态方法

package com.demo.test;public class Demo1 {int china = 67;static int math = 92;//计算总成绩public static int score(){Demo1 demo1 = new Demo1();return demo1.china + math;}public static void main(String[] args){//方法一Demo1 demo2 = new  Demo1();int SumScore = demo2.score();System.out.println("方法一总分:"+SumScore);//方法二int SumScore2 = score();System.out.println("方法二总分:"+SumScore2);}}

注意:

1.静态方法中可以直接调用同类中的静态成员,但是不能直接调用非静态成员;

如果希望在静态方法中调用非静态变量,可以通过创建对象,然后通过对象来访问非静态变量。例如

<pre name="code" class="java">public class Demo1 {String a ;static String b ;public static void main(String[] args){Demo1 demo1 = new Demo1();System.out.println(demo1.a);System.out.println(b);}}

2.在普通成员方法中,则可以通过直接访问同类的非静态变量和静态变量

public class Demo1 {int china = 67;static int math = 92;public int score(){return china + math;}}
3.静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法
package com.demo.test;public class Demo1 {int china = 67;static int math = 92;public int score1(){return china + math;}public static void main(String[] args){Demo1 demo2 = new  Demo1();int SumScore = demo2.score1();System.out.println("总分:"+SumScore);}}

静态初始化快

package com.demo.test;public class Demo1 {String a ;String b ;static String c ;static int count =0 ;//构造方法public Demo1(){++count;a = "a";System.out.println("这是通过构造方法为a赋值,这是第"+count+"步执行");}//初始化块{++count;b = "b";System.out.println("这是初始化块为b赋值,这是第"+count+"步执行");}//静态初始化块static{++count;c = "c";System.out.println("这是静态初始化块为c赋值,这是第"+count+"步执行");}public static void main(String[] args){Demo1 demo1 = new Demo1();System.out.println("a:"+demo1.a);System.out.println("b:"+demo1.b);System.out.println("c:"+demo1.c);Demo1 demo2 = new Demo1();}}<strong></strong>
运行结果:
这是静态初始化块为c赋值,这是第1步执行这是初始化块为b赋值,这是第2步执行这是通过构造方法为a赋值,这是第3步执行a:ab:bc:c这是初始化块为b赋值,这是第4步执行这是通过构造方法为a赋值,这是第5步执行


通过输出的结果,我们可以看到,程序运行的时候,静态初始化代码块最先执行,然后是普通的初始化代码块,最后是构造方法。

由于静态初始化块只在累加载一次,所以在第二次创建对象demo2的时候,并没有执行静态初始化块




1 0
原创粉丝点击