java学习之局部变量以及全局变量

全局变量

什么是全局变量?

全局变量就好比一个容器或者一个公用的东西一样,就类似外面公共场所的凳子一样,大家都可以使用这个凳子。

和他相反的局部变量是啥子东东呢?

局部变量就是局部的东西,如果全局变量是桌子,局部变量就类似于抽屉,只能在一小部分地方使用,很局限。全局是外面公共场所的凳子,则局部变量就像某个酒店的凳子一样,再酒店内部,只能去住酒店才能使用。

那么程序中是如何使用的呢?

程序语言中是在类的方法外声明的,毕竟要供大家都使用吧,所以全局变量必须放到最外面噻。而局部变量则必须放在方法内部,毕竟是局部的噻,只能受制于某部分方法。下面我们来看一下例子。

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();//全局变量,这不也在方法内吗?
        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;
    }
    
}

上面所说的局部变量是在方法内的也不完全对,应该是在方法内申明并初始化的才是局部变量。而在方法外申明,在方法内使用也是全局变量,在方法外声明也是全局变量。方法外申明只是可以供大家使用,但是没有初始化和实例化,变量内容为空,如果某个地方需要使用还必须初始化或者实例化。这里就不得不说一下这个全局申明。

全局申明什么是啥子鬼?

全局声明就是一个没有初始化或者实例化的东东,说白了就是一个空的东西或者空的容器,只是说明一下这个东西代表了什么玩意,意思就是告诉程序我以后只能是字符串或者是整形或者什么对象,实际上是没有东西的,是为空的。到了具体的程序使用的时候你想怎么用你拿去用,但是要自己在实例化或者初始化。说了那么多,我们还是看例子吧

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);/每个对象使用各自的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);//输出两个对象的集合
        
    }
    
    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);//打印的只有一个对象地址
        System.out.println(l);//打印两个相同地址对象的集合
        
    }
    
    public List getProduct1() 
    {
        return l;
    }
    
}

总结:全局声明其实只是可以公用一个指定类型的变量,而全局变量则是已经初始化并且分配了唯一的地址并且在任何地方都可以使用,局部变量则只能在方法内部使用,其它地方不能使用。全局变量是一个容器,而局部变量只能是容器里的一部分。

欢迎加入学习交流群569772982,大家一起学习交流。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,771评论 1 10
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,169评论 11 349
  • 重庆谋道实业有限公司是一家以配件为主导的“O2O”电商服务公司,秉承“为客户创造更多价值”的经营理念,提供原装正品...
    谋道养车阅读 147评论 0 0
  • 发生了任何恐慌的事。要么写字。要么和家里人说。不要告诉其他人。相信自己值得被爱。
    婷_子_阅读 181评论 0 0