精华内容
下载资源
问答
  • 引用数据类型:class interface 数组 枚举类 引用类型的默认值都为null 变量定义规则 变量名定义要注意小写驼峰规则。 新建类的规则 首字母大写驼峰规则 package com.javasm.deom; /** * @author: JAVASM * @...

    Java中的数据类型分为2种:

    1.基本数据类型:(四类八种)

    整型默认类型为int,小数默认类型为double
    在这里插入图片描述
    1.整数有4种(byte,short,int,long):int是整数的默认类型,int是用的比较多的整数类型,但Long是范围最大的整数类型,如果整数是Long类型,一般在其后加上L表示其为长整型变量。
    在这里插入图片描述
    2.小数类型有2种(float和double):小数的默认值类型为double,故当小数表示float类型时,一般在小数后加上F,以表示其为float类型的浮点数
    小数类型在以后几乎是不用这两种数据类型去定义小数,因为这两种数据无法通过二进制来表示小数点之前和小数点之后的数,所以当小数之间进行运算的时候可能会丢失掉精度。所以我们通常用BigDecimal的一个类来维护小的数据,不改变任何一个小数的精度,且BigDecima中提供了很多功能来执行小数的加减乘除等运算
    在这里插入图片描述
    3.单字符类型(char)占字节数不确定,与其编码类型或者字符类型有关
    在这里插入图片描述
    4.布尔类型(boolean):其结果只有2中true/false,boolean类型之占一个位

    2.引用数据类型:class interface 数组 枚举类 引用类型的默认值都为null

    变量定义规则

    在这里插入图片描述
    变量名定义要注意小写驼峰规则。

    新建类的规则

    首字母大写驼峰规则

    package com.javasm.deom;
    
    /**
     * @author: JAVASM
     * @classNAME: DataType
     * @description:
     * @date: 2021/3/26 8:48
     * @version:0.1
     * @since:1.8
     */
    public class DataType {
        public static void main(String[] args) {
        //通过变量名来维护不同类型的数据
            //整数类型4种
            byte a=100;
            short sh =200;
            int sum=200;
            long lon =200L;
            //小数类型2种
            float f=10.0f;
            double dou=10.0;
            //单字符1种
            char c1='a';
            //布尔类型1种
            boolean flag=true;
            //引用类型
            String str="hello";
        }
    }
    

    局部变量必须定义初始化,而全局变量可以只定义,不一定需要初始化,引用类型默认为null,普通数据类型也有其对应的默认值

    单字符(char)类型的定义(有3种单字符,数字和unicode)

    在这里插入图片描述

    展开全文
  • Python中都全局变量和局部变量Python中都全局变量和局部变量定义全局变量:函数体之外定义的变量局部变量:函数体之内定义的变量下述代码中,t是全局变量,m是局部变量t = 1def func(x):m = 2return x//m规则局部...

    Python中都全局变量和局部变量

    Python中都全局变量和局部变量

    定义

    全局变量:函数体之外定义的变量

    局部变量:函数体之内定义的变量

    下述代码中,t是全局变量,m是局部变量

    t = 1

    def func(x):

    m = 2

    return x//m

    规则

    局部变量是函数中的占位符,与全局变量可能重名,但不是同一个变量

    函数运行结束后,局部变量被释放

    可以使用global保留字在函数中使用全局变量

    看下面两个例子:

    例1: 全局变量s=100,局部变量s=3628800,函数调用完毕后,打印s,则打印的结果是全局变量s,局部变量s已经释放了

    c0e2f2896d2d1411aa2f26ff97ef077e.png

    例2: 全局变量s初始值100,经过函数处理后为s=362880000,函数调用完毕后,打印s,则打印的结果是经过函数处理后的值,函数作用于对全局变量上了

    c663cc85400aee16b7b9179be5ac77a1.png

    此例中,局部变量ls在函数体中未创建而直接被调用,则认为ls为全局变量,函数对ls的修改直接影响到全局变量ls

    ccdba6612fa0ad625816ef3dde54a938.png

    此例中,创建了全局变量和局部变量ls,函数对ls的修改作用于局部变量,局部变量和全局变量是不同的变量

    对基本对数据类型,也是可以调用全局变量的,但是不可改变(如果对s进行赋值,那么必须先定义局部变量),比如

    s = 1

    def func(x):

    return x**2 + s

    print(func(3))

    >>> 10

    9455c6580ccef01b54b2bd1334071b8c.png

    规则总结:

    基本数据类型,无论是否重名,全局变量和局部变量不同

    函数可以调用全局变量作为输入的

    对基本数据类型,这个变量不可变,只能作为输入参数

    对于组合数据类型,则这个变量相当于在函数中调用全局变量,是可以被更改

    3. 可以使用global保留字在函数中申明全局变量

    Python中都全局变量和局部变量相关教程

    用python+appium写一个在安卓模拟器上的操作

    用python+appium写一个在安卓模拟器上的操作 学了这么久,我感觉这个最有意思了,简单来说就是完成自动化操控设备的功能,我特意去搜了下这玩意儿能不能写脚本,虽然没有准确结论,但是感觉模拟操作脚本和这个好像,不过内存挂就不用想了,这个还没强大到可

    Python_3

    Python_3 [10 * x for x in range(3,9)] ##Problem 5 r1= dict(name=高小一,age=18,salary=30000,city=北京)r2= dict(name=高小二,age=19,salary=20000,city=上海)r3= dict(name=高小三,age=20,salary=10000,city=深圳)tb = [r1,r2,r3]

    wxpython入门第七步(拖放)

    wxpython入门第七步(拖放) wxPython中的拖放 在计算机图形用户界面中,拖放是指点击一个虚拟对象并将其拖到不同的位置或另一个虚拟对象上的动作(或支持该动作)。一般来说,它可以用来调用多种操作,或者在两个抽象对象之间创建各种类型的关联。 拖放操作

    Java运算符

    Java运算符 Java运算符优先级表 查看运算符优先级 1.赋值运算符 //1.变量的声明int a;//2.给变量赋值a=6;//3.合成一步int b=6; 交换两个变量的值 第一种方式:引入第三个变量int a=55;int b=66;int c;c=a;a=b;b=c;//输出结果:a=66,b=55第二种方式:统一收缴,

    python爬虫案例:爬取?瓣电影 top250,的电影数据,并保存在 Mon

    python爬虫案例:爬取?瓣电影 top250,的电影数据,并保存在 MongoDB 中 爬取?瓣电影 top250movie.douban.com/top250 的电影数据,并保存在MongoDB 中。 class DoubanspiderItem(scrapy.Item): # 电影标题title = scrapy.Field()# 电影评分score = scrapy.Fie

    Python_4

    Python_4 grade = input('一个学生的成绩:')if grade 60:print('不及格')if 60 grade 79:print('及格')if 80 grade 89:print('良好')if 90 grade 100:print('优秀‘) point = (x,y)if x 0 and y 0:print('第一象限')if x 0 and y 0:print('第四象限')if x 0

    java基础阶段学习Day02--基本概念 、常量 、变量 、运算符

    java基础阶段学习Day02--基本概念 、常量 、变量 、运算符 1、关键字:在java中被赋予了特定功能或者特殊含义的单词 2、特点: (1)关键字都是纯小写 (2)在代码中起名字,不可以使用关键字 (3)保留字:goto、const,在当前版本没有赋予特殊含义,但是不

    Python正则表达式

    Python正则表达式 Time will tell. 正则表达式本身是一种小型的、高度专业化的编程语言。 在 python 中,通过内嵌集成 re 模块,大家可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。 1、普通字符和11个

    展开全文
  • 【java】局部变量必须定义为final

    千次阅读 2019-05-23 14:43:11
    今天写多线程程序时遇到一个Java的错误:Local variable i defined in an enclosing scope must be final or effectively final,...其实原因就是一个规则:java内部类访问局部变量局部变量必须声明为final。 那...

     今天写多线程程序时遇到一个Java的错误:Local variable i defined in an enclosing scope must be final or effectively final,即局部变量不许声明为final。详情请移步:为什么java内部类访问局部变量必须声明为final?

    其实原因就是一个规则:java内部类访问局部变量时局部变量必须声明为final。

    1. 那为什么要这样呢?
    2. 还有线程为什么和内部类一样?
    public class Out {
        
        public void test(final String a) {
            class In{
                
                public void function() {
                    System.out.println(a);
                }
            }
            new In().function();
        }
        
        public static void main(String[] args) {
            new Out().test("hi");
        }
    }

    编译这个类后发现产生了两个class文件

    也就是说内部类和外部类各一个class文件,这样就产生了一个问题,调用内部类方法的时候如何访问外部类方法中的局部变量呢?

    实际上编译后的内部类的构造方法的里面,传了对应的外部类的引用和所有局部变量的形参。(由于外部类方法执行完后局部变量会消亡,所以内部类构造函数中的局部变量实际是一份“复制”。而为了访问外部类中的私有成员变量,外部类编译后也产生了访问类似与getXXX的方法。)

    这时产生了一个不一致的问题,如果局部变量不设为final,那内部类构造完毕后,外部类的局部变量又改变了那怎么办?

    public class Out {
        
        public void test(String a) {
            class In{    
                public void function() {
                    System.out.println(a);
                }
            }
            a="hello";
            new In().function();
        }
         
        public static void main(String[] args) {
            new Out().test("hi");
        }
    }

    如代码中所示,这样调用内部类方法时会造成外部类局部变量和内部类中对应的变量的不一致。(注意内部类编译成class文件与new无关,a="hello"放在new In()前后不影响不一致关系,new在jvm运行class文件时才起效)

    理解完内部类必须访问final声明的局部变量原因,我们回到最开始的问题:为什么线程和内部类一样

    因为线程也是一个类,所以new Thread也相当于创建了一个内部类啦

    我们编译一下最开始的ThreadTest.java文件

    发现线程编译后也是产生了单独的class文件。

     

    最后,问题改怎么解决呢?

    还有一个可能出现这一问题的场景是使用lambda表达式的时候。

    展开全文
  • 1、成员变量和局部变量简述在Java语言里,根据定义变量位置的不同,可以将变量分成两大类:成员变量和局部变量。二者的运行机制存在较大差异。1.1成员变量类变量从该类的准备阶段起开始存在,直到系统完全销毁这个类...

    1、成员变量和局部变量简述

    在Java语言里,根据定义变量位置的不同,可以将变量分成两大类:成员变量和局部变量。二者的运行机制存在较大差异。

    672c4611095904c6cc441ae37140610b.png

    1.1成员变量

    类变量从该类的准备阶段起开始存在,直到系统完全销毁这个类,类变量的作用域与这个类的生存范围相同;

    而实例变量则从该类的实例被创建起开始存在,直到系统完全销毁这个实例,实例变量的作用域与对应实例的生存范围相同。

    正是基于这个原因,可以把类变量和实例变量统称为成员变量。其中类变量可以理解为类成员变量,它作为类本身的一个成员,与类本身共存亡;实例变量则可以理解为实例成员变量,它作为实例的一个成员与实例共存亡。

    只要类存在,类就可以访问类变量         类.类变量

    只要实例存在,实例就可以访问实例变量        实例.实例变量

    当然实例也可以访问类变量。但是需要注意的是因为实例不拥有类变量,所以通过实例来访问类变量进行操作,实际上是对类变量进行操作 ,当有其他实例来访问类变量时,访问的类变量是被对象访问操作过的类变量。

    成员变量无需显示初始化,只要为一个类定义了类变量或实例变量,系统就会在这个类的准备阶段或创建该类的实例时进行默认初始化。

    1.2局部变量

    局部变量根据定义形式的不同,又可以分为如下三种:

    形参:在定义方法签名时定义的变量,形参的作用域在整个方法中都有效

    方法局部变量:在方法体内定义的局部变量,它的作用域是从定义该变量的地方生效,到该方法结束时失效

    代码块局部变量:这个局部变量的作用域从定义该变量的地方生效,到该代码结束时失效。

    一个变量只在一对{}中起作用。。

    java允许局部变量和成员变量同名,如果方法中局部变量和成员变量同名,局部变量就会覆盖成员变量,如果需要在这个方法中引用被覆盖成员变量,则可使用this(对于实例变量)或类名(对于类变量)作为调用者来限定访问成员变量。

    2、成员变量的初始化和内存中的运行机制

    接下来以下面代码来举例说明成员变量的初始化和内存中的运行机制

    1 public classPerson {2 public intnum;3 publicString name;4

    5 public static voidmain(String[] args) {6 Person p1 = newPerson();7 Person p2 = newPerson();8 p1.num = 2;9 p2.num = 3;10 p1.name = "张三";11 p2.name = "李四";12 }13

    14

    15 }

    当程序执行Person p1 = new Person();时,如果这行代码是第一次使用Person类,则系统通常会在第一次使用Person类时加载这个类,并初始化这个类,在类的准备 阶段,系统将会为该类的类变量分配内存空间,并指定默认初始值。当person类初始化完成后,系统内存中的存储示意图如下图所示。

    6ca1ebe838f863525adee53de92ec64e.png

    可以看出,当person类初始化完成后,系统将在堆内存中为Person分配一块内存空间,实际上是创建了一个类对象,在这块内存区里包含了保存num类变量的内存,并设置num的默认初始值为0。

    系统接着创建了一个Person对象,并把这个Person对象赋给p1变量,Person对象包含了名为name的实例变量,实例变量是在创建实例时分配内存空间并指定初始值的。当创建了第一个person对象后,系统内存中的存储示意图如下图所示。

    408e97a56932fc353069d620af223eb3.png

    从上图可以看出num不属于对象,它属于类,所以创建第一个对象时并不需要为num分配内存空间,系统只是为name分配了内存空间,并指定初始值为null。

    创建第二个对象p2时,由于在创建第一个对象时已经对类进行了初始化,所以在创建p2时对类进行初始化,对象的创建过程与第一个对象的创建过程没有什么区别。

    84a175fdeb479c4fd055ee49b9f2a961.png

    第二个对象创建完成后,成员变量如上图所示在内存中存储。

    **当程序需要访问类变量时,尽量使用类来作为主调,不要使用对象作为主调,这个可以避免产生歧义。

    3、局部变量的初始化和内存中的运行机制

    *局部变量必须经过显示初始化之后才能使用,系统不会为局部变量执行初始化。定义了局部变量以后,系统并没有给局部变量进行初始化,直到程序给这个局部变量赋给初值时,系统才会为这个局部变量分配内存空间,并将初始值保存到这块内存中。

    *局部变量不属于任何类或者实例,因此它总是保存在方法的栈内存中。如果局部变量是基本数据类型,则该变量直接存储在方法的栈内存中,如果是引用变量则将引用的地址存储在方法的栈内存中。

    *栈内存中的变量无需系统垃圾回收,随着方法或者代码块的运行结束而结束。局部变量通常只保存了具体的值或者引用地址,所以所占的内存比较小。

    4、变量的使用规则

    能不使用成员变量就别使用成员变量

    能不使用方法局部变量就别使用方法局部变量

    使用代码块局部变量性能最好。

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

    2021-04-16 15:40:22
    局部变量: 作用域是局部范围的变量(在函数内部定义的变量) 全局变量: 作用域是全局范围的变量(在函数外部定义的变量) 规则: 函数内部的变量名如果第一次出现,并且呈现形式为 para = 则被视为定义一个局部...
  • 各种变量定义规则和使用规则?

    千次阅读 2017-05-18 16:32:19
     局部变量: 在方法内任意定义变量即为局部变量;  final变量: 一旦赋值,不可以再修改的变量;final属性只允许赋值一次,且只能通过构造方法赋值,定义后也就是一个常量;final修饰的变量,只允许赋值一次  ...
  • 成员变量和局部变量

    2021-04-01 17:40:08
    成员变量和局部变量 定义的位置不一样 (1)局部变量:在方法的内部 (2)成员变量:在方法的外部,直接写在类中 作用的范围不一样 局部变量:只有方法当中才可以使用,出了方法就不能再用 成员变量:整个类全都...
  • 局部变量与成员变量

    2021-01-07 17:29:34
    局部变量和成员变量 定义的位置不一样⚠️【重点】 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中 作用范围不一样⚠️【重点】 局部变量:只有方法当中才可以使用,出了方法就不能再用 成员变量...
  • 优先读取局部变量,当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量生效;在其他地方全局变量生效。 在全局变量中定义的字符串、数字,在局部变量中是不能直接更改的。但是在全局变量中定义的列表...
  • 局部变量和成员变量

    2020-09-23 17:26:25
    局部变量和成员变量的区别: 1.定义的位置不一样【重点】 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中 2.作用范围不一样【重点】 局部变量:只有在方法中可以试用,除了方法就不能再用了 成员...
  • SQL局部变量

    千次阅读 2017-02-24 16:16:31
    1.局部变量定义: DECLARE 局部变量名 数据类型 【后面可以用逗号连接n个】 局部变量名必须是以@开头,要符合标识符的命名规则。 2.局部变量的赋值: 用SET或SELECT语句为局部变量赋值。 SET 局部变量名=表达式 ...
  • 全局变量与局部变量

    2019-10-07 16:20:55
    规则: 全局变量全部大写,局部变量全部小写 """全局变量:1.py文件的任何位置都可以调用局部变量:1.子程序中定义2.只能在子程序中调用"""name = "alex"def test(): x = 1 # 局部变量 print(x) print(name) # 全局变量...
  • 局部变量定义在方法内部 成员变量定义在类内,方法外部 2.作用的范围不一样 局部变量只有在方法内才能使用 成员变量可以在整个类中使用 3.默认值不一样 局部变量没有默认值,使用时必须赋初始值 成员变量如果...
  • 局部变量:函数体之内定义的变量 下述代码中,t是全局变量,m是局部变量 t = 1 def func(x): m = 2 return x//m 规则 1. 局部变量和全局变量是不同的变量,即使变量名相同 局部变量是函数中的占位符,与...
  • 1.成员变量和局部变量 在java中,根据变量定义的位置不同,可以将变量分成两大类...成员变量是指在类里定义的变量,局部变量是指在方法里定义的变量,不管是成员变量还是局部变量,都应该遵循相同的命名规则 ...
  • 局部变量定义在方法内部,成员变量定义在方法外部。 二、作用范围不一样 局部变量作用域只在方法内部,成员变量在整个类中都能通用。 三、默认值不一样 局部变量没有默认值,必须进行赋值,而成员变量有默认值,...
  • 局部变量和成员变量 定义的位置不一样 局部变量:在方法的内部。 成员变量:在方法的外部,直接写在类当中。 作用范围不一样 局部变量:只有方法当中才可以使用,出了方法就不能再用 成员变量:整个类全都...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,378
精华内容 551
关键字:

局部变量定义规则