java中的关键字static(静态变量)和final定义常量

 1 package point;
 2
 3 class Point {
 4
 5     int x = 0;
 6     int y = 0;
 7     static int z = 100; // 定义静态变量z,类变量
 8     static final double PI = 3.1415926;// final定义常量,它的值在运行时不能被改变
 9
10     Point(int a, int b) {
11         //PI=3.1415926;
12         /*
13          * 当使用静态常量的时候,不能在构造函数中初始化, 因为静态时,常量已经变成类的常量了
14          */
15         x = a;
16         y = b;
17     }
18
19     Point() {
20         this(1, 1); // 必须作为构造函数的第一条语句
21     }
22
23     static void output() {
24         System.out.println("hello,output() called");
25         // System.out.println(x);//此时尚未给x,y分配内存空间,
26         /*
27          * Point2.java:16: non-static variable x cannot be referenced from a
28          * static context System.out.println(x); ^ 1 error
29          */
30         System.out.println(z);
31     }
32
33
34     @SuppressWarnings("static-access")
35     public static void main(String[] args) {
36
37         Point.output();
38         /*
39          * 当声明output为静态方法(static)时,直接使用类名Point, 来调用output()方法,
40          * 因为这样一个静态方法只属于类本身, 而不属于某个对象,把这种方法称为类方法 而对于非静态方法,称之为实例方法,即对象的方法
41          */
42         Point pt2 = new Point();
43         pt2.output();
44         // 当然也可以使用类的实例,即对象pt2,使用pt2来调用静态方法
45         Point pt3 = new Point();
46         Point pt4 = new Point();
47         pt3.z = 5;
48         System.out.println(pt3.z);// 显示的是5,因为z是静态变量,类的变量
49         pt4.z = 1000;
50         System.out.println(pt3.z);// 显示的是1000,因为z是静态变量,类的变量
51         System.out.println(pt4.z);// 48句赋予了z新的值
52
53     }
54 }

作者:Leo Chin

出处:http://www.cnblogs.com/hnrainll/

java中的关键字static(静态变量)和final定义常量,布布扣,bubuko.com

时间: 2024-08-02 02:50:57

java中的关键字static(静态变量)和final定义常量的相关文章

Java非静态内部类中为什么不能有静态变量却可以有常量?

如:public class InnerClassDemo{ int x; class A{ static int a = 0;//这样写是不合法的. static final int b=0;//这样写是合法的    }}解答:简单说,定义一个静态的域或者方法,要求在静态环境或者顶层环境,这里静态环境具体说,你的例子里如果加上 static class A就ok.非静态内部类 依赖于一个外部类对象,而静态域/方法是不依赖与对象——仅与类相关,因此,非静态内部类中不能定义静态域/方法,编译过不了

java中的关键字 -- static

基本介绍 static关键字通常来注明一个class内的某个field或者某个方法是不依赖于对象的建立的.换句话说,无论我们是否创造了该class的一个具体的实例, static的值或者方法都可以被我们调用: ClassName.field; ClassName.method(); 需要注意的是,由于一个值被注明了static,程序在运行时也只会为这个值安排一个特定且唯一的空间.如果多个class的实例中的一个修改了这一值,那么其他的class object都会得到同样的被修改后的值. clas

C#中static静态变量的用法

使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类.字段.方法.属性.运算符.事件和构造函数,但不能用于索引器.析构函数或类以外的类型 静态全局变量 定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量. 特点: A.该变量在全局数据区分配内存. B.初始化:如果不显式初始化,那么将被隐式初始化为0. 静态局部变量 定义:在局部变量前加上static关键字时,就定义了静态局部变量. 特点: A.该变量在全局数据区分配内存

[转] C# 中的static静态变量

logitechyan原文关于C#中static静态变量 C#静态变量使用static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一C#静态变量都是同一个值,同一个类的不同实例的同一非 静态变量可以是不同的值.静态函数的实现里不能使用非静态成员,如非静态变量.非静态函数等. 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类.字段.

Java中this和static关键字及代码块

this: 可以使用this表示类中的属性------this.name=name 可以使用this强调调用的是本类的方法 可以使用this调用本类的构造方法------this();调用本类中无参构造方法 可以使用this表示当前对象(调用方法的对象)----最重要的用途 static: 声明属性---------属性则为全局变量 声明方法---------Person.setName("Tom");使用类名称调用static方法 普通代码块:直接在方法或是语句中定义的代码块 pub

内部类访问外部类的变量必须是final吗,java静态方法中不能引用非静态变量,静态方法中不能创建内部类的实例

内部类访问外部类的变量必须是final吗? 如下:class A{int i = 3;public void shout(){ class B{public void shout1(){System.out.println(i);} }B b=new B();b.shout1();} public static void main(String [] args){A a=new A();a.shout();} }可正常输出3,证明可以访问类的变量i,但改为下面的方式:class A{public

Java中this、static关键字的内存图解

Java中的关键字有很多,abstract  default  goto*  null  switch  boolean  do  if  package  nchronzed  break  double  implements  private  this  byte  else  import  protected  throw  throws  case  extends  instanceof  public  transient  catch  false  int  return 

hadoop 关于java中的public static 变量是不能被改变的?

我在写hadoop的时候,在mapper里定义了一个public static int rownums = 0.但我在main里对这个变量进行了赋值. 结果在循环的过程中,根本没有任何输出,因为我是用这个变量来控制循环的,所以我猜想可能是不能改变这个值,于是我直接在初始定义的时候直接赋上正确的值,所以这样最后程序就正确运行了. 但是我又新建了一个工程写了一个小程序,试了一下,明明是能够改变,正确输出的. 不能理解了. hadoop 关于java中的public static 变量是不能被改变的?

详解java中staitc关键字

一.static定义 static是静态修饰符意思,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在.这样做有什么意义呢? 在Java程序里面,万物皆对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用static