变量

使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

前提是你 提交于 2020-04-10 18:08:45
使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句: Final StringBuffer a=new StringBuffer(" Hello "); 上面的这条语句在堆中创建了一个StringBuffer类型的"Hello"对象,并创建了一个变量a指向堆中该对象的首地址。 如果再执行如下语句将报告编译期错误: a=new StringBuffer(" immutable "); 但是,执行如下语句则可以通过编译: a.append(" world!"); 由于上面这条代码,只是修改了对象中的内容,而并没有修改变量的引用,即变量的引用还是堆中的那个地址,只是那个地址中的内容发生了改变罢了。 有人在定义方法的参数时,可能想采用如下形式来阻止方法内部修改传进来的参数对象:即在参数类型前面添加final修饰 public void method(final StringBuffer param) { // param.append("a"); } 实际上,这是办不到的,在该方法内部仍然可以增加如下代码来修改参数对象的内容: param.append("a"); 来源: oschina 链接: https://my.oschina.net/u/858284/blog/229164

C++读写ini配置文件GetPrivateProfileString()&WritePrivateProfileString()

可紊 提交于 2020-04-08 14:21:11
转载: 1. https://blog.csdn.net/fengbingchun/article/details/6075716 2. 转自: http://hi.baidu.com/andywangcn/blog/item/10ba730f48160eeb37d122e9.html 配置文件中经常用到ini文件,在VC中其函数分别为: #include <Windows.h> //wince,WMobile.ppc不支持这几个函数 写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTSTR lpFileName); 读取.ini文件:DWORD GetPrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefaut, LPSTR lpReturnedString, DWORD nSize, LPCTSTR lpFileName);函数返回值为string的长度(long型),而从ini文件获得的字符串则保留在目的缓冲器中 读取整形值:UINT GetPrivateProfileInt(LPCTSTR lpAppName,LPCTSTR

python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法

好久不见. 提交于 2020-04-08 12:26:48
1. 类对象和实例对象   Python 中一切皆对象,Python类本身也是一种对象,类定义完成后,会在当前作用域中定义一个以类名为名字的命名空间。类对象具有以下两种操作: 可以通过“类名()”的方式实例化一个对象。 可以通过“类名.类属性”的方式来访问一个类属性。   如果说类时一种概念性的定义,是一种类别,那么实例对象就是对这一类别的具体化、实例化,即实例化对象是类对象实例化之后的产物。 class Person:# 声明一个类对象 pass p1 = Person()#声明一个实例对象 print(Person)#输出结果:<class '__main__.Person'> print(p1)#<__main__.Person object at 0x0000015F7F94D0F0> 2 类变量与实例变量 2.1 概念上的区别   类变量是指是指该类的所有实例说共有的数据,实例变量是该类每一个实例所特有的数据。这么说的话可能还是很抽象,我们拿人类(Person类)来打比方,人类能移动(move=True),这是每一个人(张三、李四)都能做的,所以我们可以说人类能移动,张三能移动,李四也能移动,这里的移动(move)就是一个类变量。但每一个人都可能有不同的姓名(name)和年龄(age),张三可能20岁,李四可能30岁,但是我们不能说人类(Person)都是20岁或30岁

python基础知识之函数与函数式编程

允我心安 提交于 2020-04-08 12:25:21
3种编程方式:   1.面向对象(最火的)。(过去大部分的编程方式);》》主要是依靠:类》》class ,就是具有逻辑的过程,说话的方式描述   2.面向过程。主要是 过程》》def 过程是没有返回值的函数,但是python也会返回none 基本与函数式编程没有区别了,最小的单元是一个一个的def定义的过程,一个一个逻辑是def定义的过程   3.函数式编程。编的函数更接近数学中的函数 是一种编程规范 也就是如何编程的方法论 主要是 函数》》def 例如lisp #hashshell erlang# 三种语言 可以 真正较纯粹的使用函数式编程来编写程序。 示例:(1+2)*3-4 传统编程方法:var a =1+2;        var b =1*3;        var c =b-4; 函数式编程则要求使用函数进行,把不同的运算定义成不同函数进行计算,写成下面的形式来进行: var result = subtract(multiplely(add(1,2),3),4); python中的函数式编程是:逻辑结构化和过程化的一种编程方法 一,函数基础介绍(day3 22)【funt_test.PY】 def func1():#函数 '''文档介绍''' print('in the func1')#过程 return 0#返回值 def func2():#过程 '''文档介绍'''

gdb启动以及环境

半世苍凉 提交于 2020-04-08 12:14:46
启动并传参 run | r args start 在 c++ 是从main开始,而其他语言可以从其他启动。 设置gdb的环境变量值 set table|show table 查看和修改环境变量值 比如修改 args 调试启动参数 set args show args 可以set的几乎都可以 show 启动时重定向 可以通过 r 或者是 --args 的方式就进行声明重定向。 gdb继承的环境变量 比如用户名,shell环境,shell变量,可以设置当前环境的局部变量,这些变量相当于拷贝一份。 path direcotry 添加搜索路径 show paths 查看搜索路径 show env[ironment] [varname] 查看一个或者是所有 set env[ironment] varname [=value] 设置变量为,如果没有设置则为null unset environment varname 删除 来源: oschina 链接: https://my.oschina.net/u/3695598/blog/3224561

C# 中的数据类型整理

只愿长相守 提交于 2020-04-08 11:57:35
在 C# 中,变量分为以下几种类型: 值类型(Value types) 引用类型(Reference types) 指针类型(Pointer types) 值类型(Value types) 值类型变量可以直接分配给一个值。它们是从类 System.ValueType 中派生的。 值类型直接包含数据。比如 int、char、float,它们分别存储数字、字符、浮点数。当您声明一个 int 类型时,系统分配内存来存储值。 下表列出了 C# 2010 中可用的值类型: 类型 描述 范围 默认值 bool 布尔值 True 或 False False byte 8 位无符号整数 0 到 255 0 char 16 位 Unicode 字符 U +0000 到 U +ffff '\0' decimal 128 位精确的十进制值,28-29 有效位数 (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 0.0M double 64 位双精度浮点型 (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 0.0D float 32 位单精度浮点型 -3.4 x 1038 到 + 3.4 x 1038 0.0F int 32 位有符号整数类型 -2,147,483,648 到 2,147,483,647 0 long 64 位有符号整数类型 -9,223

在Intellij IDEA中使用Debug

空扰寡人 提交于 2020-04-08 11:50:06
目录 一、Debug开篇 二、基本用法&快捷键 三、变量查看 四、计算表达式 五、智能步入 六、断点条件设置 七、多线程调试 八、回退断点 九、中断Debug 十、附:JRebel激活   Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。   所以学习下如何在Intellij IDEA中使用好Debug,主要包括如下内容:     一、Debug开篇     二、基本用法&快捷键     三、变量查看     四、计算表达式     五、智能步入     六、断点条件设置     七、多线程调试     八、回退断点     九、中断Debug     十、附:JRebel激活 回到顶部 一、Debug开篇   首先看下IDEA中Debug模式下的界面。   如下是在IDEA中启动Debug模式,进入断点后的界面,我这里是Windows,可能和Mac的图标等会有些不一样。就简单说下图中标注的8个地方:   ① 以Debug模式启动服务,左边的一个按钮则是以Run模式启动。在开发中,我一般会直接启动Debug模式,方便随时调试代码。   ② 断点:在左边行号栏单击左键,或者快捷键Ctrl+F8 打上/取消断点

java初学复习

三世轮回 提交于 2020-04-08 10:01:54
作为学Java的小白,忽然想看一看自己学了些什么东西,话不多说, (这都是新手弄的总结) 让我们看一看: 1.我们要先了解Java 技术 Java SE:标准版java技术的基础和核心 Java EE:企业版提供了企业级应用开发的完整解决方案 JavaME:微型版 2 .开发Java三步程序 1编写源程序 2编译源程序 3运行 3.Java 程序的结构 public class HelloWorld { public static void main(String[ ] args) { System.out.println("Hello World!!!"); } 4 .System.out.println()和System.out.print()有什么区别 \n和\t有什么区别 有ln会自动换行 \n 将光标移动到下一行的第一格 ,\t将光标移到下一个水平制表位置 5. 变量 :一个数据储存空间的表示 八大基本数据类型:byte short char int long float double boolean 声明变量步骤: 声明变量 赋值 使用变量 6 .自动类型转换规则 规则1:如果一个操作数为double型,则整个表达式可提升为double型 规则2:满足自动类型转换的条件 两种类型要兼容 数值类型(整型和浮点型)互相兼容 目标类型大于源类型 例如:double 型大于

写给小白看的入门级 Java 基本语法,强烈推荐

强颜欢笑 提交于 2020-04-08 02:44:00
众所周知,Java 是一门面向对象的编程语言。它最牛逼的地方就在于它是跨平台的,你可以在 Windows 操作系统上编写 Java 源代码,然后在 Linux 操作系统上执行编译后的字节码,而无需对源代码做任何的修改。 01、数据类型 Java 有 2 种数据类型,一种是基本数据类型,一种是引用类型。 基本数据类型用于存储简单类型的数据,比如说,int、long、byte、short 用于存储整数,float、double 用于存储浮点数,char 用于存储字符,boolean 用于存储布尔值。 不同的基本数据类型,有不同的默认值和大小,来个表格感受下。 数据类型 默认值 大小 boolean false 1比特 char '\u0000' 2字节 byte 0 1字节 short 0 2字节 int 0 4字节 long 0L 8字节 float 0.0f 4字节 double 0.0 8字节 引用类型用于存储对象(null 表示没有值的对象)的引用,String 是引用类型的最佳代表,比如说 String cmower = "沉默王二"。 02、声明变量 要声明一个变量,必须指定它的名字和类型,来看一个简单的示例: int age; String name; 复制代码 count 和 name 在声明后会得到一个默认值,按照它们的数据类型——不能是局部变量(否则 Java

day02Java语言基础数量部分

有些话、适合烂在心里 提交于 2020-04-08 01:53:59
1.关键字 关键字 :被Java语言赋予特殊含义的单词 关键字的特点 : 组成关键字的字母全部小写 关键字的注意事项 :高级的编辑器或者专门的开发工具中,关键字会有高亮效果 goto和const作为保留字存在,目前并不使用 2.标识符 标识符(我们自己起的一个名字) 就是给类,接口,方法,变量等起名字时使用的字符序列 组成规则 英文大小写字母 数字字符 $和_ 注意事项 不能以数字开头 不能是Java中的关键字(保留字)   区分大小写   常见命名规则:驼峰命名 包命名:就类似于在操作系统中,以文件夹的形式组织文件,在java语言中,以包来组织java中的类 关于包来说,为了防止类的命名冲突,一个包下不可以定义同名的类,但是不同包可以定义同名的类 如果,不同的coder,定义了相同的类名此时,只要保证同名的类在不同的包下就可以 也就是说,解决类的同名问题依靠的是包名的不同 为了保证包名的唯一,以域名(唯一的)反转的形式来命名包 baidu.com com.cskaoyan.name com.zs.name 单级 test 一个全部小写的单词 多级包 com.cskaoyan.name 以域名反转的方式来命名,单词全部小写,单词之间以.分隔 类和接口命名 单个: 首字母大写,其余字母全部小写 Student 多个单词: 每个单词首字母大写,其余字母全部小写 JavaBasic