精华内容
下载资源
问答
  • 在刚开始学习Java的时候,就了解了Java基础中的变量,虽然知道这个以后会经常用到,但没想到了基本语法这里,竟然又冒出来了成员变量和局部变量。变来变去太容易让人搞晕了,今天我们就挑拣出来梳理一下!
  • Java 面向对象中的两类 变量 : 成员变量和局部变量
  • 主要介绍了简单了解java局部变量与成员变量的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要涉及了java中的局部变量和全局变量,就二者的含义、生存时间和创建位置作了介绍,需要的朋友可以参考下。
  • Java局部变量final

    千次阅读 2018-10-26 09:25:36
    理由:局部变量是线程内部共享的,每一个线程内的不能访问其他线程的局部变量,但是上诉的情况却违背了这一原则,那么加上final为什么就可以了呢?原因是加上final之后,在创建B线程的时候会把final标记的变量作为...

    局部变量和形参带final。

    在一个线程A中开起另一个线程B,如果线程B要使用线程A的局部变量,那么A的局部变量需要定义成final。理由:局部变量是线程内部共享的,每一个线程内的不能访问其他线程的局部变量,但是上诉的情况却违背了这一原则,那么加上final为什么就可以了呢?原因是加上final之后,在创建B线程的时候会把final标记的变量作为线程B的构造方法的参数传给B,如此一来就解决了此问题,这是一个比较巧妙的做法,通过class文件反编译可以看出这个道理。

    另外Java的String变量比较特殊,他所定义的变量的值全部都存放在常量池里面,不管是不是final的。下面的结果全部为true。并且如果相等都指向同一个地址。

    基本类型的局部变量如果值相同也都指向同一个地址。只有后面的和前面的不想等的时候才会指向新的地址,这就是为什么基本局部变量相互之间不会影响的原因。

    public class StringTest {
        private static String s1 = "123";
        static final String s2 = "123";
         
        public static void main(String[] args) {
            String s3 = "123";
            final String s4 = "123";
            System.out.println(s1 == s2);
            System.out.println(s3 == s4);
            System.out.println(s1 == s3);
        }
    }
    
    展开全文
  • java局部变量没有默认值

    万次阅读 2018-01-13 17:31:13
    今天做到一道题,关于java局部变量没有默认值,编译不能通过的这个知识点的考察 public class Test{ String a; public static void(String args[]){ String s; System.out.println(s); } } 此时a是成员变量...

    今天做到一道题,关于java局部变量没有默认值,编译不能通过的这个知识点的考察

    public class Test{
        String a;
        public static void(String args[]){
            String s;
            System.out.println(s);
        }
    }

    此时a是成员变量,s是局部变量也叫函数变量,成员变量的8大基本数据类型是有默认值的比如String的类型的默认值是null,char的默认值是“”,这些可以自己用代码验证一下,但是局部变量没有默认值编译不通过

    Q1:为什么成员变量有默认值局部变量就没有呢
    找了网上答案回答最多的是对初始化默认值是要有内存开销,然后又说成员变量存储在堆内存,局部变量存储在栈内存

    Q2:为什么成员变量要放在堆内存,局部变量要放在栈内容
    这个问题在网上没有找到直接的答案,但意外中看到几篇文章就是对栈和堆的使用区别
    说一下我看完的感受,进程是应用程序的实体,一个应该程序可能不止一个进程,那么一个进程也可以共享服务多个应用程序,还有一个进程可以有多个线程,那么我们的主函数一般是主线程其他成员函数也是线程,当一个应用程序开启就会相应分配一个堆一般一个应用程序只有一个堆,当成员函数被调用就会有一个栈,成员函数撤销栈也就销毁,还有栈适合用于存储数据量少,但他查询存储速度比堆快,而堆可用于存储数据量大的,增删改查结点就比较麻烦,所以从数据量大小来看也可以稍微看出为什么局部变量存在栈内存,成员变量存在堆内存
    https://www.zhihu.com/question/24807877

    展开全文
  • JAVA局部变量

    千次阅读 2019-02-28 09:52:00
    -局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。 实例1 http://www.iis7.com/a/lm/fwqdq/  IIS7服务器大全 在以下实例中age是一个局部变量。定义在pupAge()方法中,它的作用域就限制...

    -局部变量声明在方法、构造方法或者语句块中;
    -局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
    -访问修饰符不能用于局部变量;
    -局部变量只在声明它的方法、构造方法或者语句块中可见;
    -局部变量是在栈上分配的。
    -局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
    实例1     http://www.iis7.com/a/lm/fwqdq/  IIS7服务器大全
    在以下实例中age是一个局部变量。定义在pupAge()方法中,它的作用域就限制在这个方法中。
    public class Test{ 
       public void pupAge(){
          int age = 0;
          age = age + 7;
          System.out.println("Puppy age is : " + age);
       }
       
       public static void main(String args[]){
          Test test = new Test();
          test.pupAge();
       }
    }
    以上实例编译运行结果如右:Puppy age is: 7
    实例2
    在下面的例子中age变量没有初始化,所以在编译时出错。
    public class Test{ 
       public void pupAge(){
          int age;
          age = age + 7;
          System.out.println("Puppy age is : " + age);
       }
       
       public static void main(String args[]){
          Test test = new Test();
          test.pupAge();
       }
    }
    以上实例编译运行结果如下:
    Test.java:4:variable number might not have been initialized
    age = age + 7;
             ^
    1 error

    转载于:https://my.oschina.net/u/4060676/blog/3015938

    展开全文
  • java局部变量和全局变量

    千次阅读 2019-03-19 09:22:37
    关于Java代码变量问题——局部和全局 在说明问题之前,先看一道蓝桥杯的题目: 立方变自身 观察下面的现象,某个数字的立方,按位累加仍然等于自身。 1^3 = 1 8^3 = 512 5+1+2=8 17^3 = 4913 4+9+1+3=17 … 请你计算...

    关于Java代码变量问题——局部和全局

    在说明问题之前,先看一道蓝桥杯的题目:

    立方变自身
    观察下面的现象,某个数字的立方,按位累加仍然等于自身。
    1^3 = 1
    8^3 = 512 5+1+2=8
    17^3 = 4913 4+9+1+3=17

    请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?

    请填写该数字,不要填写任何多余的内容或说明性的文字。

    这题对于精通代码算法的大佬是非常简单的题目,只要用到除 / 和除余 % 即可完成运算。下面先看解析和一个错误代码。

    解析:首先题目要求立方个个位和与自身相等,这就可以用 / 和 % 来实现,其次就是测试上限为多少的问题。首先我们知道个个位数上最大值为 9 ,那么我们不妨假设一下,100的立方为110^6,也就是说99的立方一定小于99 9999,而99 9999个个位数上和为69=54,很明显99的立方根一定比54要小,也就是说这些符合条件的数有限,而且不超100 。

    下面是一个错误的测试代码,附加一错误结果图

    public class cs {
    	public static void main(String[] args) {
    		int s=0;    //全局变量初始化
    		int n=0;
    		for(int i=0;i<20;i++) {
    			n=i*i*i;
    			System.out.print("n0="+n+";"+"s0="+s+";");  //检测初值0
    			while (n/10!=0) {
    				System.out.print("n1="+n+";"+"s1="+s+";");  //检测运算过程1
    				s=s+n%10;
    				System.out.print("n2="+n+";"+"s2="+s+";");   //检测运算过程2
    				n=n/10;	
    			}
    			s=s+n;
    			System.out.println("n3="+n+";"+"s3="+s+";");    //检测结果3
    		}
    	}
    }
    

    运行结果图:在这里插入图片描述
    解释:细心的人一看就知道是怎么一回事,本次错误代码就是因为全局变量和局部变量的关系才造成了 i = 3时,s = 9 而不是等于0 。全局变量虽然初始化了,但时局部变量没有每次初始化,造成了后面每次运算结果都是以上一次基础上更新。

    修改后代码如下:

    
    public class Main{
    	
    	public static void main(String[] args) {
    		for(int i=1;i<50;i++) {
    			int n=i*i*i;    //局部变量初始化
    			int s=0;
    			while (n/10!=0) {
    				s=s+n%10;
    				n=n/10;	
    			}
    			s=s+n;
    			if(s==i) {
    				System.out.println(i);  //输出结果
    			}
    		}
    	}
    }
    

    最后感谢阅读本章,还有感谢大佬a的帮忙测试,下一篇就解说回溯算法的思路——八皇后问题。

    展开全文
  • 按我的理解 size 在方法里面是局部变量 作用整个方法 在外面是类变量 作用整个类 但是在这段代码中应该没什么不同吧,因为我只有一个方法,SIZE意思是固定的 问题2: 第14行的 files != null && 能不能省掉? ...
  • Java 局部变量初始化问题

    千次阅读 2018-06-08 09:05:49
    Java 中类的成员变量会被自动初始化,但是方法里头的局部变量不会被自动初始化   上图中 i 是成员变量,默认会自动初始化,所以直接使用没有报错。但是 j 是方法中的局部变量,没有初始化直接使用会出现编译...
  • 编程语言的三大发展阶段:面向机器语言、面向过程语言...1、类是Java程序的基本要素,一个Java应用程序就是由若干个类所构成; 2、类声明的变量称为对象变量,也简称 对象 ; 3、class 关键字是用来定义类 ; 4、...
  • 局部变量:temp=1, 临时变量:return a+b 临时变量会有一点的性能优势 局部变量会比成员变量和静态成员变量有优势,改进的方法是吧成员变量和静态成员变量赋值在局部变量:...
  • Java局部变量的生命周期

    千次阅读 2018-12-20 19:55:59
    public class A { private int k; public A(int k) { this.k = k; } public int getK() { return k; } } public class B { //a对象作为函数中的临时变量什么时候被销毁? public A func...
  • java方法 成员变量 局部变量概述

    千次阅读 2017-12-23 20:37:58
     java中方法就是用来解决某件事或者实现某个功能的办法。如果需要定义一个方法,则只能在类里面定义,不能不能独立定义一个方法。一旦将一个方法定义在某个类的类体内,如果这个方法使用了static修饰,则这个方法...
  • _****写法1:用全局变量 不对 写法2 :用局部变量 对****_ 为什么?最好能解释的详细一点 ``` import java.io.File; import java.util.Scanner; public class Directory{ public static void main(String []args...
  • Java全局变量与局部变量 1)Java变量类型 Java语言支持的变量类型有:全局变量和局部变量。全局变量又分为类变量、实例变量。 (1)类变量:也称静态变量,也就是在实例变量前加了static 的变量。静态变量必定义...
  • 在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
  • 什么是局部变量  局部变量是定义在方法体,或者代码块中的变量,参数是特殊的局部变量 全局变量和局部变量的区别  1,作用域  成员变量的作用域在整个类中  局部变量,从声明它的地方开始,直到它所在的{}...
  • JAVA局部变量的使用

    千次阅读 2019-01-20 20:10:41
    局部变量定义在方法内或者语句块内。 public class helloWorld{ public static void main(String[] args) { int age = 10; { int gender = 10; } } } 1、变量的定义...
  • 局部变量没有访问权修修饰符(public private...),但有修饰符static (静态)final(常量)transient (该属性不能被序列化)volatile 线程安全 定义位置: 成员变量:类中,方法外 局部变量:方法里、方法的参数、...
  • 对于局部变量,如果是基本类型,会把值直接存储在栈;如果是引用类型,比如String s = new String("william");会把其对象存储在堆,而把这个对象的引用(指针)存储在栈。 再如 String s1 = new String(“william”)...
  • Java局部变量的作用域

    千次阅读 2018-05-28 11:01:25
    1、循环语句中变量public static void main(String args[]) { for(int i=0;i&lt;10;i++) { int sum =3; } System.out.println(i+" "+sum); }就上面最简单的程序说明吧,上面在for循环中定义...
  • 如果这么理解是正确的话,那么局部变量表是什么时候生成的? 2. 局部变量表中Slot为2的位置储存了a这个变量,这个2是一个类似于地址索引之类的东西,指向变量a的地址空间,而操作数栈是根据这个索引将变量的值保存...
  • java中的局部变量和全局变量

    万次阅读 多人点赞 2017-08-18 15:09:10
    Java变量 java中主要有如下几种类型的变量: ...一、局部变量 ...只在特定的过程或函数中可以...局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会
  • Java中的局部变量

    万次阅读 2019-03-03 10:17:40
    今天,我们来说说java中的几个名词 ...在java里面,同一个域里面不能定义相同的名字的局部变量。还是来看看我们的代码 package oop2; public class demo { int a = 123;// 成员变量 // 在...
  • Java全局变量和局部变量初始化问题

    千次阅读 2020-02-21 23:24:53
    我们先来看一个比较的例子,最近在知乎看到的帖子。... //类的成员变量 public static void main(String[] args) { TestDemo td =new TestDemo(); //默认的构造方法 System.out.println(td.a); ...
  • 主要介绍了Java成员变量与局部变量的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • 如何获得局部变量

    热门讨论 2013-03-26 15:46:57
    如何获得局部变量名 关于System.out.println("abc="+abc);的优化 尽管eclipse提供了Debug工具,还是习惯写System.out.println("abc="+abc); 经常写这样的语句,总感觉变量abc每次写两遍,有些重复。 网上找了很多资料...
  • Java中,变量的作用域分为四个级别:类级、对象实例级、方法级、块级。   类级变量又称全局级变量或静态变量,需要使用static关键字...方法级变量就是在方法内部定义的变量,是局部变量。   块级变量就是...
  • 1.基本类型的 变量 a 和他所指向的值 1是存在栈里还是方法区的常量池中。 2.a中存的是1的值还是地址?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 337,586
精华内容 135,034
关键字:

java局部变量是什么

java 订阅