java學(xué)習(xí)之局部變量以及全局變量

全局變量

什么是全局變量?

全局變量就好比一個(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è)容器,而局部變量只能是容器里的一部分。

歡迎加入學(xué)習(xí)交流群569772982,大家一起學(xué)習(xí)交流。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,673評論 18 399
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,190評論 1 10
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,793評論 11 349
  • 重慶謀道實(shí)業(yè)有限公司是一家以配件為主導(dǎo)的“O2O”電商服務(wù)公司,秉承“為客戶創(chuàng)造更多價(jià)值”的經(jīng)營理念,提供原裝正品...
    謀道養(yǎng)車閱讀 175評論 0 0
  • 發(fā)生了任何恐慌的事。要么寫字。要么和家里人說。不要告訴其他人。相信自己值得被愛。
    婷_子_閱讀 290評論 0 0

友情鏈接更多精彩內(nèi)容