精华内容
下载资源
问答
  • Javaswitch case语句中声明变量

    千次阅读 2020-04-27 21:48:03
    Javaswitch case语句中声明变量 Java使用switch case语句时很容易出现以下两个报错: 1、Duplicate local veriable out. (局部变量重复) 2、The local veriable out may not have been initialized. (局部...

    Java中使用switch case语句时很容易出现以下两个报错:

    1、Duplicate local veriable out. (局部变量重复)

    2、The local veriable out may not have been initialized. (局部变量可能未被初始化)


    第一种情况常见的场景为:

    switch (type) {
        case 1:
            String test;
            ...
            break;
        case 2:
            String test;
            ...
            break;
    }
    

    是因为我们在一个变量作用域里声明了两个同名变量“test”。

    第二种情况常见的场景为:

    switch (type) {
        case 1:
            String test;
            test = "my error";
            ...
            break;
        case 2:
            System.out.print(test);
            ...
            break;
    }
    

    ​ 是因为虽然声明变量test的位置和使用变量test的位置在同一个变量作用域,但是当type为2时,就会跳过test = "my error"的变量初始化语句,导致程序在运行时变量没有被初始化就被使用报错。

    ​ 下面的写法就是正确的:

    switch (type) {
        case 1:
            String test;
            ...
            break;
        case 2:
            test = "my error";
            System.out.print(test);
            ...
            break;
    }
    

    在Java中使用switch语句还是比较友好的,在C++中使用switch语句时甚至不能在case分支中声明变量。

    不允许跨过变量的初始化语句,直接跳到该变量作用域的另一个位置。
    ——《C++ primer》


    那么我们上文中反复提及到的一个概念——变量作用域,是什么呢?

    Java的变量作用域一共有四种,分别是类级、对象实例级、方法级、块级.

    1、类级变量又称全局级变量或静态变量,需要使用static关键字修饰,类级变量在类定义后就已经存在,占用内存空间,可以通过类名来访问,不需要实例化。

    2、对象实例级变量就是成员变量,实例化后才会分配内存空间,才能访问。

    3、方法级变量就是在方法内部定义的变量。

    4、块级变量就是定义在一个块内部的变量,变量的生存周期就是这个块,出了这个块就消失了,比如 if、for 语句的块,还有static块。

    • Java用一对大括号作为语句块的范围,称为作用域,在作用域里定义的变量,只有在该作用域结束之前才可使用。
    public class test {
        public static String TAG = "test";  //类级变量
        public int flag;   //对象实例级变量
        
        static {
            boolean isTest = flase;   //块级变量
        }
        
        public void test() {
            int testFlag = 2;   //方法级变量
        }
      
      public static void main(String[] args) {}
    }
    
    展开全文
  • javamain方法中定义变量

    千次阅读 2020-10-12 15:41:43
    public是用来修饰类,方法、类变量、成员变量的,方法里面定义的是局部变量,只有在方法内部有效,本身是有作用域限制的,不能使用访问修饰符。 访问修饰符里面没有default这个关键字,不写的情况称为“缺省",不叫...

    main方法里面定义的是局部变量,方法里面产生的变量属于局部变量,不需要加任何限定符,因为这些变量仅在此方法的栈帧中才能被访问到。方法里面涉及到的成员变量已经有了限定符,不需要再加了。

    public是用来修饰类,方法、类变量、成员变量的,方法里面定义的是局部变量,只有在方法内部有效,本身是有作用域限制的,不能使用访问修饰符。

    访问修饰符里面没有default这个关键字,不写的情况称为“缺省",不叫“默认”,所以也不要用default限定符尝试了,一般局部变量的作用域默认是在package范围内。

    展开全文
  • 新手小白学 JAVA 方法 局部变量 成员变量

    万次阅读 多人点赞 2021-04-01 23:59:30
    位置:定义在方法里或者局部代码块 注意:必须手动初始化来分配内存.如:int i = 5;或者int i; i = 5; 作用域:也就是方法里或者局部代码块,方法运行完内存就释放了 2.3 成员变量 位置:定义在类里方法外 注意:不用

    1 变量

    1.1 概念

    可以改变的数,称为变量。在Java语言中,所有的变量在使用前必须声明。
    一般通过“变量类型 变量名 = 变量值 ;”这三部分来描述一个变量。如:int a = 3 ;
    变量的使用原则:就近原则,即尽量控制变量的使用范围到最小

    1.2 局部变量

    位置:定义在方法里或者局部代码块中
    注意:必须手动初始化来分配内存.如:int i = 5;或者int i; i = 5;
    作用域:也就是方法里或者局部代码块中,方法运行完内存就释放了

    1.3 成员变量

    位置:定义在类里方法外
    注意:不用初始化,也会自动被初始化成默认值
    作用域:整个类中,类消失了,变量才会释放
    8大类型速查表(含默认值)

    1.4 练习:变量的默认值测试

    创建包: cn.tedu.basic
    创建类: TestVariable1.java

    package cn.tedu.design;
    /*本类用于测试各种类型变量的默认值*/
    public class TestVariable1 {
            static String name;
            static byte b;//整数类型默认值都是0
            static short c;
            static int d;
            static long e;
            static float f;//小数类型的默认值是0.0
            static double g;
            static char j;//char类型的默认值是\u0000
            static boolean h;//boolean类型的默认值是false
    
            public static void main(String[] args) {
                System.out.println(name);//null,引用类型的默认值
                System.out.println(b);
                System.out.println(c);
                System.out.println(d);
                System.out.println(e);
                System.out.println(f);
                System.out.println(g);
                System.out.println(h);
                System.out.println(j);
                System.out.println(h);
            }
        }
    

    1.5 练习:局部变量与成员变量测试

    创建包: cn.tedu.basic
    创建类: TestVariable2.java

    package cn.tedu.oop;
    /**本类用于测试变量的使用*/
    public class TestVariable2 {
        //2.定义成员变量:
        //1)位置:类里方法外
        //2)无需手动初始化,会自动赋予对应类型的默认值
        //3)作用域:在整个类中生效,类消失,变量才会消失
        static int count;
       
        //3.变量有一个使用的原则:就近原则
        static int sum = 200;
        public static void main(String[] args) {
            //1.定义局部变量:
            //1)位置:在方法里/局部代码块里
            //2)必须手动初始化
            //3)作用域:在方法/局部代码块中,对应的代码执行完局部变量就被释放
            int sum = 100;//定义在方法中的局部变量sum
            System.out.println(sum);//变量的就近原则:使用的都是自己附近的变量,100
            System.out.println(count);
           
            for (int i = 0; i < 10; i++) {//局部变量i只能在循环中使用
                System.out.println(i);
            }
            //System.out.println(i);//报错:无法引用变量i:i cannot be resolved to a variable
        }
    }
    

    2 方法

    2.1 概述

    被命名的代码块,方法可以含参数可以不含参数,可以提高代码的复用性。

    2.2 方法定义的格式

    方法的格式

    2.3 方法调用顺序图

    顺序执行代码,调用指定方法,执行完毕,返回调用位置
    方法的调用顺序

    2.4 练习:测试方法的调用顺序/参数/返回值

    创建包:cn.tedu.method
    创建类:TestMethod .java

    package cn.tedu.method;
    /**本类用于测试方法*/
    public class TestMethod {
    	//1.创建程序的入口函数main()
    	public static void main(String[] args) {
    		System.out.println(1);
    		/**2.我们通过方法名+参数列表的方式来调用方法的功能*/
    		method1();//调用method1()
    		System.out.println(2);
    		method2(3);//调用method2()
    		int result = method3(1,2);//调用method3()
    		System.out.println(result);
    	}
    
    	/**3.如果方法想要返回值,必须修改返回值类型
    	 * 并且return对应类型的结果
    	 * 如果方法的返回值类型是void,不允许有返回值
    	 * */
    	/*本方法用来测试方法的返回值类型*/
    	public static int method3(int i, int j) {
    		/**4.通过return关键字将方法结果返回到调用位置*/
    		return i+j;
    	}
    
    	/**1.方法的修饰符 方法的返回值类型 方法名(方法参数){方法体}*/
    	/*method1()想测试方法的调用顺序*/
    	public static void method1() {
    		System.out.println(5);
    		System.out.println(6);
    		System.out.println(7);
    	}
    	
    	/*本方法用来测试方法的参数,参数的位置在小括号里*/
    	public static void method2(int a) {
    		System.out.println("海绵宝宝今年:"+ a +"岁啦~");
    	}	
    }
    

    2.5 方法的重载

    方法的重载是指在一个类中定义多个同名的方法,但是每个方法的参数列表不同(也就是指参数的个数和类型不同),程序在调用方法时,可以通过传递给他们的不同个数和类型的参数来决定具体调用哪个方法.

    2.6 练习:测试方法的重载

    创建包: cn.tedu.method
    创建类: TestMethodOverload.java

    package cn.tedu.method;
    /**本类用于测试方法的重载*/
    public class TestMethodOverload {
    	public static void main(String[] args) {
    		/**1.我们根据方法名+参数列表确定具体调用哪个方法*/
    		/**2.方法的重载:
    		 * 在同一个类中,存在方法名相同,但参数列表不同的方法
    		 * 如果在同类中,同名方法的参数个数不同,一定构成重载
    		 * 如果在同类中,同名方法的参数个数相同,
    		 * 需要查看对应位置上参数的类型,而不是参数名,与参数名无关
    		 * (int a,String b)与(int b,String a)--不构成重载
    		 * (int a,String b)与(String a,int b)--构成重载
    		 * */
    		//2.调用method()
    		method();
    		//4.调用method(int)
    		method(666);
    		//6.调用method(int,String)
    		method(888,"泡泡");
    	}
    
    	//1.创建一个无参的method()
    	public static void method() {
    		System.out.println("哈哈哈哈我没参数");
    	}
    	//3.创建一个method(int n)
    	public static void method(int n) {
    		System.out.println("哈哈哈哈我的参数是:"+n);
    	}
    	//5.创建一个method(int n,String s)
    	public static void method(int a,String b) {
    		System.out.println(b+"今晚要干他"+a+"碗大米饭");
    	}
    	public static void method(String a,int b) {
    		System.out.println(b+"今晚要干他"+a+"碗大米饭");
    	}
    }
    
    展开全文
  • JavaScript中声明变量的三种方式

    千次阅读 2019-02-24 15:53:39
    1:let和const是ES6新增声明变量的关键字, 2:let声明的变量不会进行变量提升, console.log(name) //name is not undefined let name='张三' 3:let的声明方式和var基本上是一样的,一经声明不赋值输出undefined,后续...

    1:var

    1. 没有变量就去var一个,没有对象就去new一个

    2:let
    1:let和const是ES6中新增声明变量的关键字,

    2:let声明的变量不会进行变量提升,

    console.log(name) //name is not undefined
    let name='张三'
    

    3:let的声明方式和var基本上是一样的,一经声明不赋值输出undefined,后续可以对赋值进行改变.

    let name='张三';
    name='李四';
    console.log(name) //李四
    

    4:let和const声明变量变量命明具有唯一性,不能重复

    let name='张三';
    var name='李四';
    console.log(name);//会报错
    
    

    5:let声明的变量会形成一个块级作用域(也称为暂时性死区)

    if(1==1){
    var name='张三';
    let letname='李四';
    console.log(let) ;//输出''李四'';
    }
    console.log(name) //输出''张三'';
    console.log(letname)//报错(letname is not defined))
    var a=10;
    function fn(){
    console.log(a); //报错(let声明不会提升,一般a会输出10,但当前a和let a是一个整体
    ,let声明的变量不能再声明之前调用,会报错,所以称为暂时性死区)
    let a =20;
    }
    fn() //报错
    

    6:let和var有什么区别?

    1. :let声明变量不会变量提升,使用必须在声明之后
    2. :let声明变量变量名不能重复,否则报错
    3. :let会形成一个块级作用域

    7:let和const有什么区别?

    1. let声明的值可以进行修改.const声明值一经赋值就不可再变

    8:let会造成块级作用域小案例
    在这里插入图片描述
    在这里插入图片描述
    3:const

    1. 1: const声明的是一个常量,变量一旦赋值,就不可以重新赋值,
    /*const name='张三';
    name='李四';//报错
    console.log(name);//拨错*/
     const obj={};
     obj.name='张三';
     console.log(obj.name)//输出张三
     //obj存的是{}对象的地址,obj.name='张三修改的是obj下面的属性',obj的地址没变也没有重新赋值,所以不会报错.
    
    1. 2:const变量不能变量提升
    console.log(name) //name is not undefined
    const name='张三'
    
    1. 3:const声明变量变量名具有唯一性,不能重复
    const name='张三';
    const name= '李四' //会报错
    

    示例
    在这里插入图片描述

    展开全文
  • Java中声明final变量

    千次阅读 2019-03-07 16:30:10
    凡是对成员变量或者本地变量(在方法中的或者代码块变量称为本地变量)声明为final的都叫作final变量。final变量经常和static关键字一起使用,作为常量。用final关键字修饰的变量,只能进行一次赋值操作,并且在...
  • 函数声明变量的定义

    千次阅读 2019-04-14 19:44:13
    函数声明变量的定义声明与定义比较前向引用函数属性内部/内嵌函数函数应用:打印图形和数学计算变量作用域全局变量与局部变量局部变量全局变量globa语句可变类型的全局变量 声明与定义比较 ​ 某些编程语言...
  • java声明变量和定义变量有什么不同?

    千次阅读 2018-08-25 10:38:19
    声明一个变量时,应该先声明变量的类型,随后再声明变量的名字。下面演示了变量的声明方式。 double salary; int age; Boolean op; 其中第一项称为变量类型,第二项称为变量名。分号是必须的,这是 Java 语句...
  • 声明变量的基本格式如下: type identifier [ = value][, identifier [= value] …] ; 格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。 以下列出了一些变量的声明...
  • C语言中变量和函数的声明与定义

    千次阅读 2016-11-17 20:39:02
    定义一个变量意味着在声明变量的同时还要为变量分配存储空间。定义一个变量的同时还可以对变量进行初始化。 局部变量通常只定义不声明,而全局变量多源文件定义,头文件声明。 局部变量 一个函数的...
  • MySQL声明变量以及赋值

    千次阅读 2019-06-17 16:51:43
    MySQL 的变量分为四种: ...其中 会话变量 和 全局变量 MySQL 中统称为 系统变量 。 用户变量 SET 方式 # 两种方式都可以 SET @variable = expr SET @variable := expr SELECT 方式 # 必须 := SELECT @variab...
  • 变量声明在Excel VBA

    千次阅读 2014-08-05 10:59:37
    变量声明Excel VBA 变量被用所有的编程语言和命名的内存区域... “尺寸”(简称“维”),该关键字用于声明变量;因此,要声明你将使用一个名为“strDepartment”变量来保存字符串(文本)的数据,你会写上“点心strDep
  • 1. java静态变量,静态代码块,静态方法,实例变量,匿名代码块 Java,使用{}括起来的代码称为代码块,代码块可以分为以下四种: (1)普通代码块:就是类中方法方法体 public void xxx(){ //code } ...
  • 能否非静态方法中存取静态变量? //非静态方法中调用静态变量 //结果:通过编译 public class Foo{ static int x; public void go(){ System.out.println(x + &quot;success&quot;); } p...
  • 一、函数 声明方式: 1)变量声明: var foo = function () { .... } ...2)函数声明: ...函数参数:都是按值传递(把函数外部的值复制给函数内部的参数) ...而变量复制则有两种方式...函数体要用到的中间变量尽量...
  • JavaScript声明和使用变量

    万次阅读 2016-11-05 18:28:14
    1.声明和命名变量 2.变量的作用域 3.变量声明提升 4.变量的数据类型 简单数据类型 Boolean数据类型 String数据类型 Null数据类型 Number数据类型 复杂数据类型 Array数据类型 Object数据类型 5.数据类型...
  • 实例变量声明在一个类,但在方法、构造方法和语句块之外; 当一个对象被实例化之后,每个实例变量的值就跟着确定; 实例变量在对象创建的时候创建,在对象被销毁的时候销毁; 实例变量的值应该至少被一个方法、...
  • 深入理解变量声明提升和函数声明提升

    万次阅读 多人点赞 2016-03-05 20:51:02
    变量声明提升 1、变量定义 可以使用var定义变量变量如果没有赋值,那变量的初始值为undefined。 2、变量作用域 变量作用域指变量起作用的范围。变量分为全局变量和局部变量。全局变量在全局都拥有定义;而...
  • 文章目录1、变量声明1.1、标准格式1.2、简短格式1.3、批量格式2、变量的初始化2.1、标准格式2.2、编译器推导类型的格式2.3、声明并初始化3、多个变量同时赋值4、匿名变量(没有名字的变量)5、变量的作用域5.1、...
  • VB 变量声明及作用域

    千次阅读 2019-12-09 23:30:30
    声明变量有两种方式:隐式声明、显式声明。 1隐式声明:vb的变量可以不经声明直接使用(但不易检查错误,不建议使用) 2显式声明:用声明语句创建变量。格式为:declare 变量名 as 类型 强制显式声明变量: 为了...
  • java方法 成员变量 局部变量概述

    千次阅读 2017-12-23 20:37:58
    1. 方法 1.1 方法概述  java中方法就是用来解决某件事或者实现某个功能的办法。如果需要定义一个方法,则只能类里面定义,不能不能独立定义一个方法。...Java声明一个方法的具体语法格式如下:  
  • 我的上一篇博客 深入理解Java为什么内部类可以访问外部类的成员 , 通过使用javap工具反编译内部类的字节码, 我们知道了为什么内部类可以访问外部类的成员, 其实是编译器编译内部类的class文件时,偷偷...
  • C语言局部变量和全局变量变量的存储类别(static,extern,auto,register) 1----局部变量和全局变量 讨论函数的形参变量时曾经提到,形参变量被调用期间才分配内存单元,调用结束立即释放。这一点表明形参变量...
  • global声明全局变量

    千次阅读 2012-02-28 14:04:54
    当你函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的。这称为变量的 作用域 。所有变量的作用域是它们被定义的块,从它们的名称被定义的那点...
  • 用extern声明外部变量

    千次阅读 2017-06-09 16:08:03
    此作用域内,全局变量可以为本文件各个函数所引用。编译时将全局变量分配静态存储区。  有时需要用extern来声明全局变量,以扩展全局变量的作用域。    1. 一个文件内声明全局变量  如果外部变量不...
  • var与ES6const、let声明变量的区别

    千次阅读 2017-06-02 14:27:18
    首先我们比较一下使用var声明变量和不使用var声明变量的区别: 使用var声明变量声明前调用,那么该变量的值为undefined;不使用var声明变量声明前调用直接报错Uncaught ReferenceError:xxx is not ...
  • 局部变量无论你赋值不赋值,都称为定义,以下情况会报错:int main(){ int a; int a;}全局变量声明+赋值=定义,以下是声明是可以的;int a;int a;void main(){}但是,以下这种情况是不允许的,会报错,重复定义int...
  • Java的final变量、final方法和final类

    万次阅读 多人点赞 2018-12-13 17:39:24
    final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。通常,由final定义的变量为常量。例如,定义PI值,可以使用如下语句: final double PI=3.14; Java定义全局常量,通常使用...
  • Javastatic(静态变量/方法)的优缺点

    万次阅读 2018-09-03 15:45:24
    static关键字声明变量方法称为静态变量/方法 静态static变量/方法在类加载的过程被初始化,内存只存在一份,所以可以把它当作是全局变量/方法。 优点 属于类级别的,不需要创建对象就可以直接使用. ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 351,934
精华内容 140,773
关键字:

在方法中声明的变量称为