变量声明
int a, b, c; // 声明三个int型整数:a、 b、c
int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值
byte z = 22; // 声明并初始化 z
String s = "runoob"; // 声明并初始化字符串 s
double pi = 3.14159; // 声明了双精度浮点型变量 pi
char x = 'x'; // 声明变量 x 的值是字符 'x'。
Java语言支持的变量类型有:
- 类变量:独立于方法之外的变量,用 static 修饰。
- 实例变量:独立于方法之外的变量,不过没有 static 修饰。
- 局部变量:类的方法中的变量。
public class Variable{
static int allClicks=0; // 类变量
String str="hello world"; // 实例变量
public void method(){
int i =0; // 局部变量
}
}
举例:
package hello;
//首先要知道变量应该是赋值以后才能使用的,但是有些不必人为赋值就有默认初始值,但是有些要人为定义初始值
//所以有些直接使用的并不是没有赋值,而是系统自定义了初始值,所以不会报错
public class Variable {
public String instance = "实例变量";
public static String variable = "静态变量"; //静态变量的定义方式
public static String CONST = "静态常量"; //静态常量的定义方式
public static void main(String[] args) {
String local = "局部变量"; //类似这个就是局部变量,不可用访问修饰符修饰,没有默认初始值
System.out.println(local); //局部变量就是在方法或语句块中的变量
Global global = new Global(); //类似这个就是实例变量,也称全局变量
System.out.println(global.instance); //实例变量就必须先把类new一个出来才能使用,因为他是在类中,方法外的
System.out.println(variable); //来瞅瞅静态变量,也叫类变量,静态变量的访问方式1(在自己类的时候)
System.out.println(Global.variable); //静态变量的访问方法2(不在自己类的时候)
}
}
class Global{
public String instance = "实例变量"; //实例变量在一个类的里面,语句块的外面
public static String variable = "静态变量";
Global(){ //在类的内部使用自己的实例变量:要么老老实实new一个出来,就像上面那个
//第二种方法就是在函数里面使用实例变量,注意,如果方法是静态方法参照方法1
System.out.println(instance);
System.out.println(variable);
}
public void Instance() {
System.out.println(instance); //静态变量访问方法1(在自己类的时候),静态常量和静态变量访问相同
System.out.println(Variable.CONST);
}
}
类的静态数据成员值被所有对象共享,任何对象都可以访问类的静态数据成员。但是他们使用的是同一个数据,操作的是同一块内存,无论哪个对象修改了它,对其他对象来说,他已经变了
类变量可在类中直接使用,实例变量需实例化后才能使用。
public class StaticTest {
private static int staticInt = 2;
private int random = 2;
public static void main(String[] args) {
System.out.println(staticInt);
StaticTest test = new StaticTest();
System.out.println(test.random);
}
}
public class StaticTest {
private static int staticInt = 2;
private int random = 2;
public StaticTest() {
staticInt++;
random++;
System.out.println("staticInt = "+staticInt+" random = "+random);
}
public static void main(String[] args) {
StaticTest test = new StaticTest();
StaticTest test2 = new StaticTest();
}
}
结果:
staticInt =3=3
staticInt =4=3
public class StaticTest {
private static int staticInt = 2;
private int random = 2;
public StaticTest() {
staticInt++;
random++;
}
public static void main(String[] args) {
System.out.println("类变量与对象变量的值变化");
StaticTest test = new StaticTest();
System.out.println(" 实例1:staticInt:" + test.staticInt + "----random:" + test.random);
StaticTest test2 = new StaticTest();
System.out.println(" 实例2:staticInt:" + test.staticInt + "----random:" + test.random);
System.out.println("静态变量赋值");
System.out.println(" 静态语句块起作用:" + A.staticA);
A a = new A();
System.out.println(" 构造器起作用:" + a.staticA);
a.toChange();
System.out.println(" 静态方法1起作用:" + A.staticA);
a.toChange2();
System.out.println(" 静态方法2起作用:" + A.staticA);
System.out.println("常量赋值");
System.out.println(" 静态语句赋值:" + B.staticB);
}
}
class A {
public static String staticA ="A" ;
//静态语句块修改值
static{ staticA ="A1"; }
//构造器修改值
public A (){ staticA ="A2"; }
//静态方法起作用
public static void toChange(){ staticA ="A3"; }
public static void toChange2(){ staticA ="A4"; }
}
class B {
public static final String staticB ; // 声明与赋值分离
static{ staticB ="B"; }
}