全局变量

什么是全局变量?

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

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

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

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

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

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;
} }

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

java学习之局部变量以及全局变量的更多相关文章

  1. python学习-24 局部变量与全局变量

    局部变量与全局变量 1.没有缩进的变量,为全局变量 name = 'jphn' 在子程序里定义的变量,局部变量 2. name = 'jphn' #全局变量 def a(): name='andy' ...

  2. 【转】Java多线程操作局部变量与全局变量

    原文网址:http://blog.csdn.net/undoner/article/details/12849661 在这篇文章里,我们首先阐述什么是同步,不同步有什么问题,然后讨论可以采取哪些措施控 ...

  3. Java多线程操作局部变量与全局变量

    在这篇文章里,我们首先阐述什么是同步,不同步有什么问题,然后讨论可以采取哪些措施控制同步,接下来我们会仿照回顾网络通信时那样,构建一个服务器端的"线程池",JDK为我们提供了一个很 ...

  4. Python小白学习之路(十一)—【局部变量和全局变量】【关键字global】【关键字nonlocal】

    写在前面: 几乎有一周没有更新学习笔记了吧 上周一周身体都不怎么舒服 然后还得写开题报告 然后还得看文献 天天就是写写写写写写~~~~~~改改改改改改~~~~~~~~~ 今天又开始学习了 希望之前的没 ...

  5. SQLServer局部变量和全局变量介绍05-29学习笔记

    变量 数据在内存中存储可以变化的量叫变量.为了在内存中存储信息,用户必须指定存储信息的单元,并为了该存储单元命名, 以方便获取信息,这就是变量的功能.Transact-SQL可以使用两种变量,一种是局 ...

  6. Lua的五种变量类型、局部变量、全局变量、lua运算符、流程控制if语句_学习笔记02

    Lua的五种变量类型.局部变量.全局变量 .lua运算符 .流程控制if语句 Lua代码的注释方式: --当行注释 --[[    多行注释    ]]-- Lua的5种变量类型: 1.null 表示 ...

  7. Python学习【第9篇】:python中的局部变量与全局变量

    1.全局变量 全局变量定义后可被下面所有函数进行调用 例子: name = "xiao"def chang_name(): print("chang_name" ...

  8. java基础---局部变量和全局变量

    1.成员变量的概念: 成员变量就是属于类的变量,在类中,方法体外定义的变量 1)成员变量又分为两种: 类变量(又称静态变量) 实例变量(又称非静态变量) 类变量(静态变量)   :是被static所修 ...

  9. Java学习---基础知识学习

    2016-07-23  周六 利用键盘输入的时候需要抛出异常 ,直接快捷键 ctrl + 1 ;定义数组 int score[] = new int[4]  ;  只有4个数字BufferedRead ...

随机推荐

  1. iOS: 沙盒的详解和目录的获取

    沙盒的详解: •iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被称为沙盒 •iOS常用目录: –Bundle       //该目录下的文件是用来存储应用程序包的 ...

  2. 数学图形(1.29) cochleoid曲线

    它也算是一种螺线吧 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件免费开源.QQ交流群: 367752815 #http://www.mathcurve.com/co ...

  3. DEDECMS网站管理系统Get Shell漏洞

    漏洞版本: DEDECMS 5.3/5.6 漏洞描述: DedeCms 基于PHP+MySQL的技术开发,支持Windows.Linux.Unix等多种服务器平台,从2004年开始发布第一个版本开始, ...

  4. Video Tag Test

    --> Video Tag Test Your browser does not support the audio element.

  5. docker仓库操作

    1.登陆注册 docker login 2.搜索镜像 docker search xxx 3.上传镜像 docker push 镜像名:标签或者镜像ID 4.下载镜像 docker pull 镜像名: ...

  6. 第一个Xamarin的 Android 应用程序!

    你好,安卓 Xamarin的工作室 Xamarin的应用程序图标和启动屏幕 脱机使用PDF格式: 介绍与Xamarin的Android开发 示例代码: 开始使用应用程序的探险家 显示说明: Visua ...

  7. 一种Android数据请求框架

    大部分Android应用一般都涉及到跟server的交互,除非是某些单机应用.既然要跟server打交道,向server请求数据差点儿是必做的事情,或许每家的APP都有一套自己的详细实现逻辑.但我们还 ...

  8. DOSbox汇编集成环境下的具体设置

    alt+enter能够全屏幕,假设认为游戏执行速度不合适,能够改动 cycles=3000 适当调整大小. .执行 DOSBox,会打开两个 DOS 窗体.我们仅仅需在例如以下窗体中键入 mount ...

  9. 工具篇:如何使用junit.jar进行测试

    一.网上下载:junit.jar包 下载地址:https://sourceforge.net/projects/junit/?source=typ_redirect 二.导入指定项目中 三.在指定方法 ...

  10. iOS-字符串拼接

    // // main.m // /* 将两个字符串 NSString * str1 = @"123"; NSString * str2 = @"abc"; 拼接 ...