全局變量
什么是全局變量?
全局變量就好比一個(gè)容器或者一個(gè)公用的東西一樣,就類似外面公共場所的凳子一樣,大家都可以使用這個(gè)凳子。
和他相反的局部變量是啥子?xùn)|東呢?
局部變量就是局部的東西,如果全局變量是桌子,局部變量就類似于抽屜,只能在一小部分地方使用,很局限。全局是外面公共場所的凳子,則局部變量就像某個(gè)酒店的凳子一樣,再酒店內(nèi)部,只能去住酒店才能使用。
那么程序中是如何使用的呢?
程序語言中是在類的方法外聲明的,畢竟要供大家都使用吧,所以全局變量必須放到最外面噻。而局部變量則必須放在方法內(nèi)部,畢竟是局部的噻,只能受制于某部分方法。下面我們來看一下例子。
class cart1
{
List ls=new ArrayList();//全局變量
Product1 s;
public void addProduct(Product1 p)
{
ls.add(p);
}
public void ss()
{
System.out.println(s);
//s.setId(0);
//s.setName("ss");
//l.add(s);
}
public List getProduct()
{
return ls;
}
List l=null ;
public void getProdect(int id,String name,float price)
{ s=new Product1();//全局變量,這也不是在方法內(nèi)嗎?
l=new ArrayList();//全局變量,這不也在方法內(nèi)嗎?
List x=new ArrayList();//這才是局部變量
s.setId(id);
s.setName(name);
s.setPrice(price);
l.add(s);
System.out.println(s);
System.out.println(l);
}
public List getProduct1()
{
return l;
}
}
上面所說的局部變量是在方法內(nèi)的也不完全對,應(yīng)該是在方法內(nèi)申明并初始化的才是局部變量。而在方法外申明,在方法內(nèi)使用也是全局變量,在方法外聲明也是全局變量。方法外申明只是可以供大家使用,但是沒有初始化和實(shí)例化,變量內(nèi)容為空,如果某個(gè)地方需要使用還必須初始化或者實(shí)例化。這里就不得不說一下這個(gè)全局申明。
全局申明什么是啥子鬼?
全局聲明就是一個(gè)沒有初始化或者實(shí)例化的東東,說白了就是一個(gè)空的東西或者空的容器,只是說明一下這個(gè)東西代表了什么玩意,意思就是告訴程序我以后只能是字符串或者是整形或者什么對象,實(shí)際上是沒有東西的,是為空的。到了具體的程序使用的時(shí)候你想怎么用你拿去用,但是要自己在實(shí)例化或者初始化。說了那么多,我們還是看例子吧
import java.util.ArrayList;
import java.util.List;
public class Cart {
public static void main(String[] args) {
// TODO Auto-generated method stub
Product1 p= new Product1();
p.setId(1);
p.setName("test");
p.setAmount(10.0f);
cart1 c =new cart1();
Product1 p1= new Product1();
p1.setId(2);
p1.setName("test1");
p1.setAmount(20.0f);
c.addProduct(p);
c.addProduct(p1);
List l=new ArrayList();
l=c.getProduct();
// for(int i=0;i<l.size();i++)
// System.out.println(((Product1)l.get(i)).getId());
cart1 s=new cart1();
s.getProdect(1, "2", 2.0f);
s.getProdect(2, "222", 2.0f);
//s.ss();
List ll=s.getProduct1();
for(int i=0;i<ll.size();i++)
System.out.println(((Product1)ll.get(i)).getId());
}
}
class cart1
{
List ls=new ArrayList();
Product1 s;
public void addProduct(Product1 p)
{
ls.add(p);
}
public void ss()
{
System.out.println(s);
//s.setId(0);
//s.setName("ss");
//l.add(s);
}
public List getProduct()
{
return ls;
}
List l=null ;
public void getProdect(int id,String name,float price)
{ s=new Product1();
l=new ArrayList();
s.setId(id);
s.setName(name);
s.setPrice(price);
l.add(s);
System.out.println(s);/輸出不同的對象
System.out.println(l);/每個(gè)對象使用各自的List
}
public List getProduct1()
{
return l;
}
}
下面我們換一種方式,換為全局聲明
class cart1
{
List ls=new ArrayList();
Product1 s;
public void addProduct(Product1 p)
{
ls.add(p);
}
public void ss()
{
System.out.println(s);
//s.setId(0);
//s.setName("ss");
//l.add(s);
}
public List getProduct()
{
return ls;
}
List l=new ArrayList() ;
public void getProdect(int id,String name,float price)
{ s=new Product1();
s.setId(id);
s.setName(name);
s.setPrice(price);
l.add(s);
System.out.println(s);//輸出不同對象
System.out.println(l);//輸出兩個(gè)對象的集合
}
public List getProduct1()
{
return l;
}
}
再看一種情況
import java.util.ArrayList;
import java.util.List;
public class Cart {
public static void main(String[] args) {
// TODO Auto-generated method stub
Product1 p= new Product1();
p.setId(1);
p.setName("test");
p.setAmount(10.0f);
cart1 c =new cart1();
Product1 p1= new Product1();
p1.setId(2);
p1.setName("test1");
p1.setAmount(20.0f);
c.addProduct(p);
c.addProduct(p1);
List l=new ArrayList();
l=c.getProduct();
// for(int i=0;i<l.size();i++)
// System.out.println(((Product1)l.get(i)).getId());
cart1 s=new cart1();
s.getProdect(1, "2", 2.0f);
s.getProdect(2, "222", 2.0f);
//s.ss();
List ll=s.getProduct1();
for(int i=0;i<ll.size();i++)
System.out.println(((Product1)ll.get(i)).getId());
}
}
class cart1
{
List ls=new ArrayList();
Product1 s=new Product1();
public void addProduct(Product1 p)
{
ls.add(p);
}
public void ss()
{
System.out.println(s);
//s.setId(0);
//s.setName("ss");
//l.add(s);
}
public List getProduct()
{
return ls;
}
List l=new ArrayList() ;
public void getProdect(int id,String name,float price)
{
s.setId(id);
s.setName(name);
s.setPrice(price);
l.add(s);
System.out.println(s);//打印的只有一個(gè)對象地址
System.out.println(l);//打印兩個(gè)相同地址對象的集合
}
public List getProduct1()
{
return l;
}
}
總結(jié):全局聲明其實(shí)只是可以公用一個(gè)指定類型的變量,而全局變量則是已經(jīng)初始化并且分配了唯一的地址并且在任何地方都可以使用,局部變量則只能在方法內(nèi)部使用,其它地方不能使用。全局變量是一個(gè)容器,而局部變量只能是容器里的一部分。