变量

javaSE基础07

。_饼干妹妹 提交于 2020-03-14 00:41:49
javaSE基础07 一、 static 静态修饰符 用了 static 修饰的变量就会变成共享的属性,只会初始化一次,在内存中只存在一个,并且每个对象都可以访问,存放在 方法区(数据共享区) 1.1 static 用来修饰成员变量 一个成员变量被 static 修饰了叫静态成员变量,如果没有修饰叫非静态成员变量 静态成员变量的访问方式:   1.用 对象进行访问: 对象 . 变量名   2.还可以通过 类名来访问 :类名 . 变量名 使用注意点:   1. 不要认为方便就将所有的变量用 static 修饰,只有当这个数据真正 需要共享的时候才用 static 修饰   2.只有静态变量才能用类名访问,非静态变量只能用对象访问   3. 局部变量不允许被 static 修饰 1.1.1 静态变量和非静态变量的区别: 1.作用上看:   a) 静态变量是用来共享的,所有的对象都可以访问到   b) 非静态变量就是用来描述同一类事物的公共属性 2.数量和存储位置   a) 静态变量在方法区(数据共享区),并且只有一份数据   b) 非静态变量存在堆区中,对象有 n 个那么数据就有 n 个 3.生命周期:   a) 静态变量是随着类文件的加载而加载,随着类文件的消失而消失   b) 非静态变量是随着对象创建而创建的,随着对象的消失而消失 1.2 用来修饰方法 类似 OC 中的类方法:  

java-static

 ̄綄美尐妖づ 提交于 2020-03-13 14:55:03
1.意思是静态的 2.可以修饰:方法、成员变量、内部类、代码块 3.修饰后有什么不同 - 修饰方法:(叫静态方法或者类方法) 1.这个方法对于其他类来说可以用“类名.方法”进行调用,也可以使用“对象名.方法”进行调用,推荐使用“类名.方法” 2.静态方法中是不允许出现,this,super,对本类的非静态属性,非静态的方法直接使用代码的 - 修饰成员变量 1.用static修饰的成员变量的值,表示是这个类型的所有对象“共享的” 2.static修饰的成员变量的值存储在方法区 3.static修饰的成员变量的get/set也是静态的 4.如果在方法中有局部变量与static修饰的成员变量同名时,在静态变量前面加“类名.”进行区别 ## 结论:非静态的“对象名.” ,静态的用“类名.” 来源: https://www.cnblogs.com/xhwy-1234/p/12485924.html

SHELL基础语法

时光怂恿深爱的人放手 提交于 2020-03-13 11:37:11
Shell 脚本的第一行必须是如下格式: v #!/bin/sh 符号 #! 用来指定该脚本文件的解析程序。在上面 例子中使用 /bin/sh 来解析该脚本。当编辑好脚本 后,如果要执行该脚本,还必须使其具有可执行属性。 chmod +x filename 在 shell 编程中, 所有的变量都由字符串组成 , 并且不需要预先对变量进行声明 , 例 s1: #!/bin/sh #set variable a a="hello world" # print a echo "A is:" echo $a 有时候变量名很容易与其他文字混淆,比如: S13: num=2 echo "this is the $numnd“ 这并不会打印出 "this is the 2nd" ,而仅仅打印 "thisis the " ,因为 shell 会去搜索变量 numnd 的值,但是 这个变量时没有值的。可以使用花括号来告诉 shell 我 们要打印的是 num 变量: num=2 echo "this is the ${num}nd" 这将打印: this is the 2nd 默认变量 $# : 传入脚本的命令行参数个数 v $* : 所有命令行参数值,在各个参数值之间 留有空格 v $0 : 命令本身( shell 文件名) v $1 : 第一个命令行参数 v $2 : 第二个命令行参数 S2:

Go语言基础之变量声明

自作多情 提交于 2020-03-13 01:50:19
Go语言基础之变量声明 Go语言中变量的声明 目录: 变量声明 标准声明 批量声明 变量的初始化 类型推导 短变量声明 变量声明 变量(Variable)的功能是存储数据。不同的变量保存的数据类型可能会不一样。常见变量的数据类型有:整型、浮点型、布尔型等。 Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。 Go的变量声明有以下5种方式 标准声明 批量声明 变量的初始化 类型推导 短变量声明 标准声明 标准声明的格式是: var 变量名 变量类型 变量声明以关键字var开头,变量类型放在变量的后面,行尾无需分号 var name string var count int var sex bool 批量声明 每声明一个变量就需要写var关键字会比较繁琐,go语言中还支持批量变量声明 var ( name string count int sex bool ) 类型推导 有时候我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。 var name, sex = "Wahaha", true 变量的初始化 Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串。 布尔型变量默认为false。 切片、函数

c 的陷阱

你说的曾经没有我的故事 提交于 2020-03-12 22:22:13
c语言算是非常古老了,像瑞士军刀灵活却也很容易伤到自己,即使是多年的老杆子,以致于市面上都有一本经典的C的书叫《C陷阱与缺陷》的书。 这个文章总结下c中常见的陷阱,可能在日常工作或面试题目中遇到。 1. sizeof 陷阱 sizeof 它是一个编译时运算符而非函数,用于判断变量或数据类型的字节大小。 比较常见的用法: int arr[] = { 1, 2, 3 }; for (int i = 0; i < sizeof(arr) / sizeof(int); i++) { printf("%d,", arr[i]); } sizeof(arr)的是整个数组的占字节数大小,除int占字节大小就是整个数组的大小了,但是如果不小心这样用了: void clear(char array[]) { int i; for (i = 0; i < sizeof(array) / sizeof(array[0]); i++) { array[i] = 0x00; } } int main(void) { char arr[20]; clear(arr); } 问题: 这段代码的问题,在于clear中传递的是指针,这时候sizeof(char*) 一般为4,sizeof(array[0]),造成了结果是只对数组的前四个变量赋值为0,其他的没有赋值! 2. 小心无符号类型 先看段代码:

JavaScript基础语法

て烟熏妆下的殇ゞ 提交于 2020-03-12 20:24:58
JavaScript是一种前台脚本语言,一般用来处理页面业务逻辑以及页面交互。 下面是JavaScript的一些基本语法。 hello world    1.控制台输出语句   console.log('hello world')   2.弹出框提示信息   alert('hello world')   3.将内容书写到页面   document.write('<h2 style="color: red">hello world </h2>') 定义变量 JavaScript中定义变量的方法有四种:let , const , var const 声明一个只读的常量,一旦声明,常量的值就不能改变。 let a = 10;const b = 20;var c = 30;d = 40;console.log(a)在块级作用域也就是{}中就不能被外界访问 console.log(b)let和const有块级作用域,不允许重复定义 console.log(c)var没有块级作用域, 但有局部作用域,可以重复定义 console.log(d)没有关键字声明的变量是全局变量,在函数内部声明的外部也可以用 var 和 let 声明的变量在全局作用域中被定义时,两者非常相似,但是,被let声明的变量不会作为全局对象window的属性,而被var声明的变量却可以,let 声明的变量只在 let

Java——基础语法

我的梦境 提交于 2020-03-12 19:01:47
【标识符】 Java对各种变量、方法和类等要素命名时使用的字符序列。 Java标识符命名规则: <1>由字母、数字、下划线"_"和美元符"$"组成(不能有空格); <2>以字母、下划线、$开头; <3>对大小写敏感,长度无限制。 【关键字】 Java关键字都是小写。 goto和const虽然从未被使用,但也作为Java关键字保留。 【Java常量】 Java的常量用字符串表示,区分为不同的数据类型: <1>整型常量:123 <2>实型常量:1.23 <3>字符常量:'a' <4>逻辑常量:true false <5>字符串常量:"hello" 【注意】"常量"还会用在其他语境中,表示值不可变的变量(--变量赋值后,不允许改变,例如final)。 【变量】 <1>Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域。 <2>Java程序中每个变量都有特定的数据类型,在使用前必须对其声明,格式如下: type varName = value ; 【注意】 变量实际上是内存上的一小块区域,使用变量名访问这块区域,因此, 每个变量使用前必须要先申明[声明],然后必须进行赋值[填充内容] ,才能使用。 【分类】 局部变量:方法或语句块内部定义的变量(方法参数列表中的形参也属于局部变量)。 成员变量:方法外部、类的内部定义的变量。 【注意】 类外面(即与类对应的大括号外面

java volatile详解(转)

随声附和 提交于 2020-03-12 17:05:04
volatile的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码: class VolatileFeaturesExample { volatile long vl = 0L; //使用volatile声明64位的long型变量 public void set(long l) { vl = l; //单个volatile变量的写 } public void getAndIncrement () { vl++; //复合(多个)volatile变量的读/写 } public long get() { return vl; //单个volatile变量的读 } } 假设有多个线程分别调用上面程序的三个方法,这个程序在语意上和下面程序等价: class VolatileFeaturesExample { long vl = 0L; // 64位的long型普通变量 public synchronized void set(long l) { //对单个的普通 变量的写用同一个监视器同步 vl = l; } public void getAndIncrement () { /

ES6语法:var、let、const的区别详解

夙愿已清 提交于 2020-03-12 15:46:14
今天来说说es6的语法,最基础的也就是var,let,const 的用法与区别了,我们来看看他们之间的恩怨情仇。 首先来说说var,这个只要是学过js的都知道,它是用来声明一个变量的,但是它在开发中也会遇到一些问题,比较难解决。先来看看下面的代码: var str="hello world"; ​ function testVar(){   var str="hello"; } testVar(); console.log(str); 这段代码的结果是 "hello world",这说明在var 申明的变量,即使是同样的名字,在不同的块中,在外层块中的变量优先级更高,也就是说,在外层优先使用并且只能使用当前块中的变量;而在他的内部块中的变量,比如说这个函数里面的str,他其实也是优先使用块内的str变量,会屏蔽掉外面的str变量,这是一点。再来看看下面一段代码 function variableHoisting(){   if(condition){     var test="hello javaScript";   }else{     console.log(test)     //这里可以访问到test,但是它是undefined,因为初始化为它赋值成了undefined   }   //这里也可以访问到test } 可能你会感到奇怪,我的var 申明的变量在if

STM32 代码堆栈大小分析

孤者浪人 提交于 2020-03-12 15:34:31
1.RO段包括只读代码段(code段/.text段)和常量段(RO Data段/.constdata段)。 2.RW段(.data段)指已被初始化成非0值的变量段。 3. ZI段(.bss段)指未被初始化或初始化为0的变量段。 一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将我的一些关于RO,RW和ZI的理解写出来,希望能对大家有所帮助。 要了解RO,RW和ZI需要首先了解以下知识: ARM程序的组成 此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别。 一个ARM程序包含3部分:RO,RW和ZI RO是程序中的指令和常量 RW是程序中的已初始化变量 ZI是程序中的未初始化的变量 由以上3点说明可以理解为: RO就是readonly, RW就是read/write, ZI就是zero ARM映像文件的组成 所谓ARM映像文件就是指烧录到ROM中的bin文件,也成为image文件。以下用Image文件来称呼它。 Image文件包含了RO和RW数据。 之所以Image文件不包含ZI数据,是因为ZI数据都是0,没必要包含