java中一般有三種變量:類變量,成員變量和局部變量。類變量
1.下面先看類變量,看下面這個例子
public class Demo6{ public String name; public int age; public static String sex="男"; public Demo6(String name, int age){ this.name = name; this.age = age;; } public void say(){ System.out.println("我的名字是"+name+",我今年"+age+"歲."); } public static void main(String args[]){ Demo6 obj = new Demo6("alex",25); obj.say(); System.out.println("我是"+sex+"生"); // System.out.println("我今年"+age+"歲"); } }
類變量可以無需實例化便可訪問(ps:如果一個實例改掉了類變量的值,其他實例調用此類變量值時也是改動后的)
如果去掉注釋
System.out.println("我今年"+age+"歲");
,則會報錯:Error:(19, 34) java: /Users/lsf/IdeaProjects/JavaPractice/src/Demo6.java:19: 無法從靜態上下文中引用非靜態 變量 age
2.接下來來看成員變量和局部變量,還是看這個例子,做一點小改動
public class Demo6{ public String name; public int age; public static String sex="男"; public Demo6(String name1, int age){ this.name = name1; this.age = age;; } public void say(){ System.out.println("我的名字是"+name+",我今年"+age+"歲."); // System.out.println("我的名字是"+name1+",我今年"+age+"歲."); } public static void main(String args[]){ Demo6 obj = new Demo6("alex",25); obj.say(); System.out.println("我是"+sex+"生"); } }
當執行下面這句時結果是正確的:
System.out.println("我的名字是"+name+",我今年"+age+"歲.");
這是因為name是成員變量,在整個實例中有效。而name1是局部變量,只在方法體內有效,如果像下面這樣直接調用name1,則會報錯
System.out.println("我的名字是"+name1+",我今年"+age+"歲.");
報錯信息為:
Error:(13, 36) java:找不到符號
符號: 變量 name1
位置: 類 Demo6