局部变量

静态局部变量定义时赋初值问题和定义后赋初值问题

拟墨画扇 提交于 2019-12-13 22:05:37
静态局部变量定义时赋初值问题和定义后赋初值问题 如 1 . static int a=1; 2 . static int a; a=1; 函数中静态局部变量a赋初值,采用上述两种方式时不一样,采用方式1时a是上次结束时的值,采用2方式时a=1还是每次都运行,为什么? 初始化和赋值是不同的概念。 只初始化一次,不是只赋值一次。 来源: CSDN 作者: 晴天_xv 链接: https://blog.csdn.net/qq_41654485/article/details/103532795

局部变量、全局变量的一个例子

↘锁芯ラ 提交于 2019-12-12 23:17:51
def scope_test(): def do_local(): spam = "local spam" def do_nonlocal(): nonlocal spam spam = "nonlocal spam" def do_global(): global spam spam = "global spam"#spam虽然声明了global但此处仍是函数内的局部变量 spam = "test spam" do_local() print("After local assignment: ",spam)#"test spam" do_nonlocal() print("After nonlocal assignment: ",spam)# "nonlocal spam" do_global() print("After global assignment: ",spam)# scope_test() print("In global scope: ",spam)#do_global函数会自己定义一个全局变量spam,即使没有预先定义的全局变量 https://www.jb51.net/article/114951.htm 来源: 51CTO 作者: qq5a16e6241946e 链接: https://blog.51cto.com/13496943/2458013

Java基础篇(中)

二次信任 提交于 2019-12-10 15:56:04
4 、 Java 关键字 下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。 类别 关键字 说明 访问控制 private 私有的 protected 受保护的 public 公共的 类、方法和变量修饰符 abstract 声明抽象 class 类 extends 扩充 , 继承 final 最终值 , 不可改变的 implements 实现(接口) interface 接口 native 本地,原生方法(非 Java 实现) new 新 , 创建 static 静态 strictfp 严格 , 精准 synchronized 线程 , 同步 transient 短暂 volatile 易失 程序控制语句 break 跳出循环 case 定义一个值以供 switch 选择 continue 继续 default 默认 do 运行 else 否则 for 循环 if 如果 instanceof 实例 return 返回 switch 根据值选择执行 while 循环 错误处理 assert 断言表达式是否为真 catch 捕捉异常 finally 有没有异常都执行 throw 抛出一个异常对象 throws 声明一个异常可能被抛出 try 捕获异常 包相关 import 引入 package 包 基本类型 boolean 布尔型 byte 字节型

Linux下C程序进程地址空间布局

时光毁灭记忆、已成空白 提交于 2019-12-10 14:47:36
我们在学习C程序开发时经常会遇到一些概念:代码段、数据段、BSS段(Block Started by Symbol) 、堆(heap)和栈(stack)。先看一张教材上的示意图(来源,《UNIX环境高级编程》一书),显示了进程地址空间中典型的存储区域分配情况。 从图中可以看出: 从低地址到高地址分别为:代码段、(初始化)数据段、(未初始化)数据段(BSS)、堆、栈、命令行参数和环境变量 堆向高内存地址生长 栈向低内存地址生长 还经常看到下面这个图(来源,不详): 先看一段程序。 [cpp] view plain copy #include <stdio.h> #include <stdlib.h> int global_init_a=1; int global_uninit_a; static int static_global_init_a=1; static int static_global_uninit_a; const int const_global_a=1; int global_init_b=1; int global_uninit_b; static int static_global_init_b=1; static int static_global_uninit_b; const int const_global_b=1; /*上面全部为全局变量

Java面向对象03成员变量和局部变量

允我心安 提交于 2019-12-10 14:15:58
成员变量和局部变量 1.定义 成员变量:在类中定义,但定义在方法之外的变量称作成员变量。可以不用赋值,成员变量有默认的初始值。 默认初始值如下 整数类型(byte、short、int、long):0 浮点数型(float、double):0.0 字符类型(char):' '(空格,不是空) 布尔类型(boolean):false 引用数据类型: String:null 数组:null 自定义的类型:null 局部变量:在代码块、方法中、方法参数定义的变量就是局部变量。局部变量使用之前,需要在方法中定义,并且赋值!局部变量没有默认初始值。 示例: public class Person(){ public String name(); public int age(); public cha gender; public void selfIntroduce(){ public String hobbit; System.out.println("*********"); } } 类Person中的成员变量为name/age/gender,也叫做类Person的属性。 类Person中的成员方法为selfIntroduce,也叫做类Personde的行为或者操作。 定义在selfIntroduce方法中的hobbit是局部变量。 2.作用域 成员变量的作用域在整个定义的类中都可以使用

ThreadLocal

ε祈祈猫儿з 提交于 2019-12-10 13:35:40
一、概述 ThreadLocal是什么? 其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,惹事ThreadLocalvariable(线程局部变量)。线程局部变量(ThreadLocal)其实功能非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是java中一种较为特殊的线程绑定机制,使每一个线程都可以独立的改变自己的副本,而不会和其他线程的副本冲突。 从线程角度看,每个线程都保持一个对其线程局部变量的隐式引用,只要线程是活动的并且ThreadLocal实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收(除非存在对这些副本的其他引用)。 通过ThreadLocal存取的数据,总是与当前线程相关,也就是说,JVM为每个运行的线程,绑定了私有的本地实例存取空间,从而为多线程环境常出现的并发问题提供了一种隔离机制。 概况起来说,对于多线程资源共享的问题,同步机制采用了"以时间换空间"的方式,而ThreadLocal采用了"以空间换时间"的方式。前者仅提供一份变量,让不同的线程排队访问,而后者为每一个线程都提供了一份变量,因此可以同时访问而互不影响。 二、API说明 ThreadLocal():创建一个线程本地变量。 protected T initialValue():返回此线程局部变量的当前线程的初始值

函数

China☆狼群 提交于 2019-12-10 09:43:36
函数的定义与调用 s="csaicja ics" def my_len(): i=0 for k in s: i+=1 print(i) length=my_len() print(length)#函数定义了之后可以再任何地方调用#没有返回值,只是单纯的打印 返回的重要性 len()是内置函数 def my_len(): i= 0 for k in s: i+=1 print (i) 是自定义函数 len()的缺点: #不能变,只是计算s字符串的长度 #只是输出了结果 s="csaicja ics" def my_len(): i=0 for k in s: i+=1 print(i) return i length=my_len() print(length) #返回值的三种情况 #没有返回值   1.不写return   2.只写return:结束一个函数的继续   3.return None——不常用 def func(): l=["haha","hehe"] for i in l : print(i) if i =="haha": return 跳出整个函数,不打印(“=”*10)    print("="*10) ret=func() print(ret) def func(): l=["haha","hehe"] for i in l : print(i) if i =

静态变量、实例变量、局部变量与线程安全

天大地大妈咪最大 提交于 2019-12-10 04:50:56
静态变量:线程非安全。 加static关键字的变量,只能放在类里, 不能放到方法里 。 静态变量有默认初始化值。 静态变量表示所有实例共享的一个属性,位于方法区,共享一份内存,而成员变量是对象的特殊描述,不同对象的实例变量被分配在不同的内存空间, 一旦静态变量被修改,其他对象均对修改可见,故线程非安全。 实例变量:单例模式(只有一个对象实例存在)线程非安全,非单例线程安全。 成员变量(实例变量): 1、成员变量定义在类中,即类中的普通变量,在整个类中都可以被类中方法所访问(如过和局部变量重名,需用this关键字)。 2、成员变量随着对象的建立而建立,随着对象的消失而消失, 存在于对象所在的堆内存中 。 3、 成员变量有默认初始化值 实例变量为对象实例私有,在虚拟机的堆中分配,若在系统中只存在一个此对象的实例,在多线程环境下,被某个线程修改后,其他线程对修改均可见,故线程非安全;如果每个线程执行都是在不同的对象中,那对象与对象之间的实例变 量的修改将互不影响,故线程安全。 成员变量和类变量的区别: 1、两个变量的生命周期不同 成员变量随着对象的创建而存在,随着对象的回收而释放。 静态变量随着类的加载而存在,随着类的消失而消失,且优先于对象存在。 2、调用方式不同 成员变量只能被对象调用。 静态变量可以被对象调用,还可以被类名调用。 3、数据存储位置不同 成员变量存储在堆内存的对象中

Python - 函数篇

久未见 提交于 2019-12-10 04:18:38
本章内容 函数 参数介绍 全局变量和局部变量 嵌套函数 匿名函数 前言   函数,说白了就是一是一个公式。我们读书的时候学习的一元函数、二元函数这之类的都是函数,在数学中函数的作用是为了是我们解题更轻松、更简单。而我们编程中的函数则是封装功能,以便于后续的使用。 一、函数 函数是 Python 为了代码最大程度的重用和最小化代码冗余而提供的最基本的程序结构。 函数就是对功能的封装,比如我们写了一个用户验证程序,而现在我又需要写一个用户管理系统,管理系统中有很多的操作,要求用户每进行一步操作就要进行一次用户验证(哈哈,实际情况肯定不会这样,这里用来举例),我们是不是要把用户验证程序的代码复制粘帖到每一步操作的开头?答案是的!卧槽,这也太坑爹了,那如果我有一万个操作呢?你还就别说我就复制粘帖一万次,复制粘帖 Python提供了许多内建函数,比如print () ,当然我们也可以自己定义一个函数,即用户自定义函数。 函数语法: def 函数名(参数):   功能1   功能2   ······   return 返回值(可以无返回值) 简单实例 1 def main(name): 2 #定义函数名为main,形参为name 3 4 if name == "Lyon": 5 #如果实参name等于 "Lyon" 6 7 print("Welcome Lyon !") 8 #打印内容 9

java字节码指令集

匆匆过客 提交于 2019-12-10 04:13:30
字节码指令集   Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(Operands)所构成。   对于大部分为与数据类型相关的字节码指令,他们的操作码助记符中都有特殊的字符来表明专门为哪种数据类型服务:i代表对int类型的数据操作,l代表long,s代表short,b代表byte,c代表char,f代表float,d代表double,a代表reference。   加载和存储指令: 将一个局部变量加载到操作栈的指令包括有: iload、iload_<n>、lload、lload_<n>、fload、fload_<n>、dload、dload_<n>、aload、aload_<n> 将一个数值从操作数栈存储到局部变量表的指令包括有: istore、istore_<n>、lstore、lstore_<n>、fstore、fstore_<n>、dstore、dstore_<n>、astore、astore_<n> 将一个常量加载到操作数栈的指令包括有: bipush、sipush、ldc、ldc_w、ldc2_w、aconst_null、iconst_m1、iconst_<i>、lconst_<l>、fconst_<f>、dconst_<d> 扩充局部变量表的访问索引的指令: wide   运算指令: